Require Import Coq.ZArith.ZArith. Require Export Crypto.Compilers.Syntax. Require Import Crypto.Compilers.Z.Syntax. Require Export Bedrock.Word. Require Export Crypto.Util.Notations. Notation Const x := (Op (OpConst x) TT). (* python: << #!/usr/bin/env python print(r"""Require Import Coq.ZArith.ZArith. Require Export Crypto.Compilers.Syntax. Require Import Crypto.Compilers.Z.Syntax. Require Export Bedrock.Word. Require Export Crypto.Util.Notations. Notation Const x := (Op (OpConst x) TT). (""" + r"""* python: <<""") print(open(__file__).read()) print(r""">> *""" + r""")""") print('\n'.join('''Notation "'%s'" (* %d (%s) *)\n := (Const %s%%Z).\nNotation "'%s'" (* %d (%s) *)\n := (Const %s).''' % (h, d, h, d, h, d, h, w) for d, h, b, w in sorted([(eval(bv), hex(eval(bv)), bv, i) for (bv, i) in (('0b' + i[2:].replace('~', ''), i) for i in r"""WO~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1 WO~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0~1~1~0 WO~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0 WO~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1 WO~0~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0~1~1~0~1~0 WO~0~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1 WO~0~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0~1~1~0~1 WO~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0~1~1~0~1~0 WO~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0 WO~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1 WO~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~0~1~1~0~1~1~0~1~0~0~0~0~0~1 WO~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1 WO~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1 WO~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0 WO~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1 WO~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0~1~1~0~1~0 WO~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0~1~1~1~0 WO~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0 WO~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1 WO~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0 WO~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1 WO~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0~1~0 WO~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0 WO~0~0~0~1~0~0~0~1 WO~0~0~0~1~0~0~1~1 WO~0~0~0~1~0~1~1~1 WO~0~0~0~1~1~0~0~1 WO~0~0~0~1~1~0~1~0 WO~0~0~0~1~1~0~1~1 WO~0~0~0~1~1~1~0~0 WO~0~0~1~1~0~0~1~1 WO~0~1~0~1~0~1~0~1 WO~0~1~0~1 WO~1~0~0~1 WO~1~0 WO~1~1 WO~0 WO~1""".split('\n'))]))) >> *) Notation "'0x0'" (* 0 (0x0) *) := (Const 0%Z). Notation "'0x0'" (* 0 (0x0) *) := (Const WO~0). Notation "'0x1'" (* 1 (0x1) *) := (Const 1%Z). Notation "'0x1'" (* 1 (0x1) *) := (Const WO~1). Notation "'0x2'" (* 2 (0x2) *) := (Const 2%Z). Notation "'0x2'" (* 2 (0x2) *) := (Const WO~1~0). Notation "'0x3'" (* 3 (0x3) *) := (Const 3%Z). Notation "'0x3'" (* 3 (0x3) *) := (Const WO~1~1). Notation "'0x5'" (* 5 (0x5) *) := (Const 5%Z). Notation "'0x5'" (* 5 (0x5) *) := (Const WO~0~1~0~1). Notation "'0x9'" (* 9 (0x9) *) := (Const 9%Z). Notation "'0x9'" (* 9 (0x9) *) := (Const WO~1~0~0~1). Notation "'0x11'" (* 17 (0x11) *) := (Const 17%Z). Notation "'0x11'" (* 17 (0x11) *) := (Const WO~0~0~0~1~0~0~0~1). Notation "'0x13'" (* 19 (0x13) *) := (Const 19%Z). Notation "'0x13'" (* 19 (0x13) *) := (Const WO~0~0~0~1~0~0~1~1). Notation "'0x17'" (* 23 (0x17) *) := (Const 23%Z). Notation "'0x17'" (* 23 (0x17) *) := (Const WO~0~0~0~1~0~1~1~1). Notation "'0x19'" (* 25 (0x19) *) := (Const 25%Z). Notation "'0x19'" (* 25 (0x19) *) := (Const WO~0~0~0~1~1~0~0~1). Notation "'0x1a'" (* 26 (0x1a) *) := (Const 26%Z). Notation "'0x1a'" (* 26 (0x1a) *) := (Const WO~0~0~0~1~1~0~1~0). Notation "'0x1b'" (* 27 (0x1b) *) := (Const 27%Z). Notation "'0x1b'" (* 27 (0x1b) *) := (Const WO~0~0~0~1~1~0~1~1). Notation "'0x1c'" (* 28 (0x1c) *) := (Const 28%Z). Notation "'0x1c'" (* 28 (0x1c) *) := (Const WO~0~0~0~1~1~1~0~0). Notation "'0x33'" (* 51 (0x33) *) := (Const 51%Z). Notation "'0x33'" (* 51 (0x33) *) := (Const WO~0~0~1~1~0~0~1~1). Notation "'0x55'" (* 85 (0x55) *) := (Const 85%Z). Notation "'0x55'" (* 85 (0x55) *) := (Const WO~0~1~0~1~0~1~0~1). Notation "'0x1db41'" (* 121665 (0x1db41) *) := (Const 121665%Z). Notation "'0x1db41'" (* 121665 (0x1db41) *) := (Const WO~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~0~1~1~0~1~1~0~1~0~0~0~0~0~1). Notation "'0x7fffff'" (* 8388607 (0x7fffff) *) := (Const 8388607%Z). Notation "'0x7fffff'" (* 8388607 (0x7fffff) *) := (Const WO~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1). Notation "'0x1ffffff'" (* 33554431 (0x1ffffff) *) := (Const 33554431%Z). Notation "'0x1ffffff'" (* 33554431 (0x1ffffff) *) := (Const WO~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1). Notation "'0x3fffffe'" (* 67108862 (0x3fffffe) *) := (Const 67108862%Z). Notation "'0x3fffffe'" (* 67108862 (0x3fffffe) *) := (Const WO~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0). Notation "'0x3ffffff'" (* 67108863 (0x3ffffff) *) := (Const 67108863%Z). Notation "'0x3ffffff'" (* 67108863 (0x3ffffff) *) := (Const WO~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1). Notation "'0x7ffffda'" (* 134217690 (0x7ffffda) *) := (Const 134217690%Z). Notation "'0x7ffffda'" (* 134217690 (0x7ffffda) *) := (Const WO~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0~1~1~0~1~0). Notation "'0x7ffffee'" (* 134217710 (0x7ffffee) *) := (Const 134217710%Z). Notation "'0x7ffffee'" (* 134217710 (0x7ffffee) *) := (Const WO~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0~1~1~1~0). Notation "'0x7fffffe'" (* 134217726 (0x7fffffe) *) := (Const 134217726%Z). Notation "'0x7fffffe'" (* 134217726 (0x7fffffe) *) := (Const WO~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0). Notation "'0x7ffffff'" (* 134217727 (0x7ffffff) *) := (Const 134217727%Z). Notation "'0x7ffffff'" (* 134217727 (0x7ffffff) *) := (Const WO~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1). Notation "'0xffffffe'" (* 268435454 (0xffffffe) *) := (Const 268435454%Z). Notation "'0xffffffe'" (* 268435454 (0xffffffe) *) := (Const WO~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0). Notation "'0xfffffff'" (* 268435455 (0xfffffff) *) := (Const 268435455%Z). Notation "'0xfffffff'" (* 268435455 (0xfffffff) *) := (Const WO~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1). Notation "'0x1ffffffa'" (* 536870906 (0x1ffffffa) *) := (Const 536870906%Z). Notation "'0x1ffffffa'" (* 536870906 (0x1ffffffa) *) := (Const WO~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0~1~0). Notation "'0x1ffffffe'" (* 536870910 (0x1ffffffe) *) := (Const 536870910%Z). Notation "'0x1ffffffe'" (* 536870910 (0x1ffffffe) *) := (Const WO~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0). Notation "'0x7ffffffffffda'" (* 2251799813685210 (0x7ffffffffffda) *) := (Const 2251799813685210%Z). Notation "'0x7ffffffffffda'" (* 2251799813685210 (0x7ffffffffffda) *) := (Const WO~0~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0~1~1~0~1~0). Notation "'0x7ffffffffffed'" (* 2251799813685229 (0x7ffffffffffed) *) := (Const 2251799813685229%Z). Notation "'0x7ffffffffffed'" (* 2251799813685229 (0x7ffffffffffed) *) := (Const WO~0~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0~1~1~0~1). Notation "'0x7ffffffffffff'" (* 2251799813685247 (0x7ffffffffffff) *) := (Const 2251799813685247%Z). Notation "'0x7ffffffffffff'" (* 2251799813685247 (0x7ffffffffffff) *) := (Const WO~0~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1). Notation "'0xfffffffffffda'" (* 4503599627370458 (0xfffffffffffda) *) := (Const 4503599627370458%Z). Notation "'0xfffffffffffda'" (* 4503599627370458 (0xfffffffffffda) *) := (Const WO~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0~1~1~0~1~0). Notation "'0xffffffffffffe'" (* 4503599627370494 (0xffffffffffffe) *) := (Const 4503599627370494%Z). Notation "'0xffffffffffffe'" (* 4503599627370494 (0xffffffffffffe) *) := (Const WO~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0). Notation "'0xfffffffffffff'" (* 4503599627370495 (0xfffffffffffff) *) := (Const 4503599627370495%Z). Notation "'0xfffffffffffff'" (* 4503599627370495 (0xfffffffffffff) *) := (Const WO~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1). Notation "'0xffffffffffffffffL'" (* 18446744073709551615 (0xffffffffffffffffL) *) := (Const 18446744073709551615%Z). Notation "'0xffffffffffffffffL'" (* 18446744073709551615 (0xffffffffffffffffL) *) := (Const WO~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1). Notation "'0x1fffffffffffffffffffffL'" (* 38685626227668133590597631 (0x1fffffffffffffffffffffL) *) := (Const 38685626227668133590597631%Z). Notation "'0x1fffffffffffffffffffffL'" (* 38685626227668133590597631 (0x1fffffffffffffffffffffL) *) := (Const WO~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1). Notation "'0x3ffffffffffffffffffff6L'" (* 77371252455336267181195254 (0x3ffffffffffffffffffff6L) *) := (Const 77371252455336267181195254%Z). Notation "'0x3ffffffffffffffffffff6L'" (* 77371252455336267181195254 (0x3ffffffffffffffffffff6L) *) := (Const WO~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0~1~1~0). Notation "'0x3ffffffffffffffffffffeL'" (* 77371252455336267181195262 (0x3ffffffffffffffffffffeL) *) := (Const 77371252455336267181195262%Z). Notation "'0x3ffffffffffffffffffffeL'" (* 77371252455336267181195262 (0x3ffffffffffffffffffffeL) *) := (Const WO~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~0).