diff options
author | Jason Gross <jgross@mit.edu> | 2017-11-12 21:04:21 -0500 |
---|---|---|
committer | Jason Gross <jgross@mit.edu> | 2017-11-12 21:04:21 -0500 |
commit | 87f39543ffd547772d6f31d313ae64be50fe3515 (patch) | |
tree | 6be2757afc450cd4586b30aa31045f441e019eca /src | |
parent | c3279e03ecac28252d8b3aaed9af876bf8e8e55f (diff) |
Update display logs and c files
Diffstat (limited to 'src')
326 files changed, 6720 insertions, 171 deletions
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/feadd.c b/src/Specific/montgomery32_2e165m25_6limbs/feadd.c new file mode 100644 index 000000000..e05f2ca1b --- /dev/null +++ b/src/Specific/montgomery32_2e165m25_6limbs/feadd.c @@ -0,0 +1,40 @@ +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_6limbs/feaddDisplay.log b/src/Specific/montgomery32_2e165m25_6limbs/feaddDisplay.log new file mode 100644 index 000000000..2d8233e99 --- /dev/null +++ b/src/Specific/montgomery32_2e165m25_6limbs/feaddDisplay.log @@ -0,0 +1,26 @@ +λ 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_6limbs/fenz.c b/src/Specific/montgomery32_2e165m25_6limbs/fenz.c new file mode 100644 index 000000000..2e0454af1 --- /dev/null +++ b/src/Specific/montgomery32_2e165m25_6limbs/fenz.c @@ -0,0 +1,15 @@ +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_6limbs/fenzDisplay.log b/src/Specific/montgomery32_2e165m25_6limbs/fenzDisplay.log new file mode 100644 index 000000000..616138b7b --- /dev/null +++ b/src/Specific/montgomery32_2e165m25_6limbs/fenzDisplay.log @@ -0,0 +1,12 @@ +λ 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_6limbs/feadd.c b/src/Specific/montgomery32_2e166m5_6limbs/feadd.c new file mode 100644 index 000000000..cd706f5c5 --- /dev/null +++ b/src/Specific/montgomery32_2e166m5_6limbs/feadd.c @@ -0,0 +1,40 @@ +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_6limbs/feaddDisplay.log b/src/Specific/montgomery32_2e166m5_6limbs/feaddDisplay.log new file mode 100644 index 000000000..194e37fb2 --- /dev/null +++ b/src/Specific/montgomery32_2e166m5_6limbs/feaddDisplay.log @@ -0,0 +1,26 @@ +λ 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_6limbs/fenz.c b/src/Specific/montgomery32_2e166m5_6limbs/fenz.c new file mode 100644 index 000000000..2e0454af1 --- /dev/null +++ b/src/Specific/montgomery32_2e166m5_6limbs/fenz.c @@ -0,0 +1,15 @@ +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_6limbs/fenzDisplay.log b/src/Specific/montgomery32_2e166m5_6limbs/fenzDisplay.log new file mode 100644 index 000000000..616138b7b --- /dev/null +++ b/src/Specific/montgomery32_2e166m5_6limbs/fenzDisplay.log @@ -0,0 +1,12 @@ +λ 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/montgomery64_2e291m19_5limbs/femul.c b/src/Specific/montgomery64_2e291m19_5limbs/femul.c new file mode 100644 index 000000000..13d0393aa --- /dev/null +++ b/src/Specific/montgomery64_2e291m19_5limbs/femul.c @@ -0,0 +1,192 @@ +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_5limbs/femulDisplay.log b/src/Specific/montgomery64_2e291m19_5limbs/femulDisplay.log new file mode 100644 index 000000000..5cf09abe3 --- /dev/null +++ b/src/Specific/montgomery64_2e291m19_5limbs/femulDisplay.log @@ -0,0 +1,181 @@ +λ 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/solinas32_2e129m25_5limbs/fesub.c b/src/Specific/solinas32_2e129m25_5limbs/fesub.c index 153d6a39d..758eebda7 100644 --- a/src/Specific/solinas32_2e129m25_5limbs/fesub.c +++ b/src/Specific/solinas32_2e129m25_5limbs/fesub.c @@ -9,7 +9,7 @@ static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) { const uint32_t x17 = in2[2]; { const uint32_t x15 = in2[1]; { const uint32_t x13 = in2[0]; - out[0] = ((Const 134217678 + x5) - x13); + out[0] = ((0x7ffffce + x5) - x13); out[1] = ((0x7fffffe + x7) - x15); out[2] = ((0x7fffffe + x9) - x17); out[3] = ((0x7fffffe + x11) - x19); diff --git a/src/Specific/solinas32_2e129m25_5limbs/fesubDisplay.log b/src/Specific/solinas32_2e129m25_5limbs/fesubDisplay.log index 6d45d90b0..218309d16 100644 --- a/src/Specific/solinas32_2e129m25_5limbs/fesubDisplay.log +++ b/src/Specific/solinas32_2e129m25_5limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, - (((0x3fffffe + x10) - x18), ((0x7fffffe + x11) - x19), ((0x7fffffe + x9) - x17), ((0x7fffffe + x7) - x15), ((Const 134217678 + x5) - x13))) + (((0x3fffffe + x10) - x18), ((0x7fffffe + x11) - x19), ((0x7fffffe + x9) - x17), ((0x7fffffe + x7) - x15), ((0x7ffffce + 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_2e129m25_5limbs/freeze.c b/src/Specific/solinas32_2e129m25_5limbs/freeze.c index 7f14d384e..7ee522ad7 100644 --- a/src/Specific/solinas32_2e129m25_5limbs/freeze.c +++ b/src/Specific/solinas32_2e129m25_5limbs/freeze.c @@ -4,13 +4,13 @@ static void freeze(uint32_t out[5], const uint32_t in1[5]) { { 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, Const 67108839); + { 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, 0x3ffffe7); { 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 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x7, 0x1ffffff); { uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff); - { uint32_t x25 = (x24 & Const 67108839); + { uint32_t x25 = (x24 & 0x3ffffe7); { 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); diff --git a/src/Specific/solinas32_2e129m25_5limbs/freezeDisplay.log b/src/Specific/solinas32_2e129m25_5limbs/freezeDisplay.log index b611aa26e..418a7e817 100644 --- a/src/Specific/solinas32_2e129m25_5limbs/freezeDisplay.log +++ b/src/Specific/solinas32_2e129m25_5limbs/freezeDisplay.log @@ -2,13 +2,13 @@ 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, Const 67108839); + 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, 0x3ffffe7); 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 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x7, 0x1ffffff); uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff); - uint32_t x25 = (x24 & Const 67108839); + uint32_t x25 = (x24 & 0x3ffffe7); 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); diff --git a/src/Specific/solinas32_2e130m5_6limbs/fesub.c b/src/Specific/solinas32_2e130m5_6limbs/fesub.c index 0878adc71..71e866452 100644 --- a/src/Specific/solinas32_2e130m5_6limbs/fesub.c +++ b/src/Specific/solinas32_2e130m5_6limbs/fesub.c @@ -11,7 +11,7 @@ static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) { const uint32_t x19 = in2[2]; { const uint32_t x17 = in2[1]; { const uint32_t x15 = in2[0]; - out[0] = ((Const 8388598 + x5) - x15); + out[0] = ((0x7ffff6 + x5) - x15); out[1] = ((0x7ffffe + x7) - x17); out[2] = ((0x3ffffe + x9) - x19); out[3] = ((0x7ffffe + x11) - x21); diff --git a/src/Specific/solinas32_2e130m5_6limbs/fesubDisplay.log b/src/Specific/solinas32_2e130m5_6limbs/fesubDisplay.log index 9a3ed3bd6..e9bac8469 100644 --- a/src/Specific/solinas32_2e130m5_6limbs/fesubDisplay.log +++ b/src/Specific/solinas32_2e130m5_6limbs/fesubDisplay.log @@ -2,6 +2,6 @@ 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), ((0x7ffffe + x11) - x21), ((0x3ffffe + x9) - x19), ((0x7ffffe + x7) - x17), ((Const 8388598 + x5) - x15))) + (((0x3ffffe + x12) - x22), ((0x7ffffe + x13) - x23), ((0x7ffffe + x11) - x21), ((0x3ffffe + x9) - x19), ((0x7ffffe + x7) - x17), ((0x7ffff6 + 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_2e130m5_6limbs/freeze.c b/src/Specific/solinas32_2e130m5_6limbs/freeze.c index e5eeaf200..d97282ebe 100644 --- a/src/Specific/solinas32_2e130m5_6limbs/freeze.c +++ b/src/Specific/solinas32_2e130m5_6limbs/freeze.c @@ -5,14 +5,14 @@ static void freeze(uint32_t out[6], const uint32_t in1[6]) { { 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, Const 4194299); + { 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, 0x3ffffb); { uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x3fffff); { 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 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 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 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 & Const 4194299); + { uint32_t x30 = (x29 & 0x3ffffb); { 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 & 0x3fffff); { uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34); diff --git a/src/Specific/solinas32_2e130m5_6limbs/freezeDisplay.log b/src/Specific/solinas32_2e130m5_6limbs/freezeDisplay.log index 7c46c9b99..77f6fc447 100644 --- a/src/Specific/solinas32_2e130m5_6limbs/freezeDisplay.log +++ b/src/Specific/solinas32_2e130m5_6limbs/freezeDisplay.log @@ -2,14 +2,14 @@ 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, Const 4194299); + 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, 0x3ffffb); uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x3fffff); 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 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 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 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 & Const 4194299); + uint32_t x30 = (x29 & 0x3ffffb); 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 & 0x3fffff); uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34); diff --git a/src/Specific/solinas32_2e137m13_5limbs/fesub.c b/src/Specific/solinas32_2e137m13_5limbs/fesub.c index 5cfbba998..f4bc53a29 100644 --- a/src/Specific/solinas32_2e137m13_5limbs/fesub.c +++ b/src/Specific/solinas32_2e137m13_5limbs/fesub.c @@ -9,7 +9,7 @@ static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) { const uint32_t x17 = in2[2]; { const uint32_t x15 = in2[1]; { const uint32_t x13 = in2[0]; - out[0] = ((Const 536870886 + x5) - x13); + out[0] = ((0x1fffffe6 + x5) - x13); out[1] = ((0xffffffe + x7) - x15); out[2] = ((0x1ffffffe + x9) - x17); out[3] = ((0xffffffe + x11) - x19); diff --git a/src/Specific/solinas32_2e137m13_5limbs/fesubDisplay.log b/src/Specific/solinas32_2e137m13_5limbs/fesubDisplay.log index 210afd80b..cd269dba7 100644 --- a/src/Specific/solinas32_2e137m13_5limbs/fesubDisplay.log +++ b/src/Specific/solinas32_2e137m13_5limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, - (((0xffffffe + x10) - x18), ((0xffffffe + x11) - x19), ((0x1ffffffe + x9) - x17), ((0xffffffe + x7) - x15), ((Const 536870886 + x5) - x13))) + (((0xffffffe + x10) - x18), ((0xffffffe + x11) - x19), ((0x1ffffffe + x9) - x17), ((0xffffffe + x7) - x15), ((0x1fffffe6 + 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_2e137m13_5limbs/freeze.c b/src/Specific/solinas32_2e137m13_5limbs/freeze.c index 554d8ebd5..5d8668155 100644 --- a/src/Specific/solinas32_2e137m13_5limbs/freeze.c +++ b/src/Specific/solinas32_2e137m13_5limbs/freeze.c @@ -4,13 +4,13 @@ static void freeze(uint32_t out[5], const uint32_t in1[5]) { { 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 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 268435443); + { uint32_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff3); { uint32_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x11, Return x4, 0x7ffffff); { uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x14, Return x6, 0xfffffff); { 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 x8, 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 x7, 0x7ffffff); { uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff); - { uint32_t x25 = (x24 & Const 268435443); + { uint32_t x25 = (x24 & 0xffffff3); { uint32_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x10, Return x25); { uint32_t x29 = (x24 & 0x7ffffff); { uint32_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x13, Return x29); diff --git a/src/Specific/solinas32_2e137m13_5limbs/freezeDisplay.log b/src/Specific/solinas32_2e137m13_5limbs/freezeDisplay.log index 5dc9bfd97..8cec37338 100644 --- a/src/Specific/solinas32_2e137m13_5limbs/freezeDisplay.log +++ b/src/Specific/solinas32_2e137m13_5limbs/freezeDisplay.log @@ -2,13 +2,13 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x7, x8, x6, x4, x2)%core, - uint32_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 268435443); + uint32_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff3); uint32_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x11, Return x4, 0x7ffffff); uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x14, Return x6, 0xfffffff); 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 x8, 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 x7, 0x7ffffff); uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff); - uint32_t x25 = (x24 & Const 268435443); + uint32_t x25 = (x24 & 0xffffff3); uint32_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x10, Return x25); uint32_t x29 = (x24 & 0x7ffffff); uint32_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x13, Return x29); diff --git a/src/Specific/solinas32_2e137m13_6limbs/fesub.c b/src/Specific/solinas32_2e137m13_6limbs/fesub.c index 01a4eef37..cfa6edada 100644 --- a/src/Specific/solinas32_2e137m13_6limbs/fesub.c +++ b/src/Specific/solinas32_2e137m13_6limbs/fesub.c @@ -11,7 +11,7 @@ static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) { const uint32_t x19 = in2[2]; { const uint32_t x17 = in2[1]; { const uint32_t x15 = in2[0]; - out[0] = ((Const 16777190 + x5) - x15); + out[0] = ((0xffffe6 + x5) - x15); out[1] = ((0xfffffe + x7) - x17); out[2] = ((0xfffffe + x9) - x19); out[3] = ((0xfffffe + x11) - x21); diff --git a/src/Specific/solinas32_2e137m13_6limbs/fesubDisplay.log b/src/Specific/solinas32_2e137m13_6limbs/fesubDisplay.log index 1cc3f0ba3..534e6af0a 100644 --- a/src/Specific/solinas32_2e137m13_6limbs/fesubDisplay.log +++ b/src/Specific/solinas32_2e137m13_6limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core, - (((0x7ffffe + x12) - x22), ((0xfffffe + x13) - x23), ((0xfffffe + x11) - x21), ((0xfffffe + x9) - x19), ((0xfffffe + x7) - x17), ((Const 16777190 + x5) - x15))) + (((0x7ffffe + x12) - x22), ((0xfffffe + x13) - x23), ((0xfffffe + x11) - x21), ((0xfffffe + x9) - x19), ((0xfffffe + x7) - x17), ((0xffffe6 + 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_2e137m13_6limbs/freeze.c b/src/Specific/solinas32_2e137m13_6limbs/freeze.c index 5d744405f..37aea66be 100644 --- a/src/Specific/solinas32_2e137m13_6limbs/freeze.c +++ b/src/Specific/solinas32_2e137m13_6limbs/freeze.c @@ -5,14 +5,14 @@ static void freeze(uint32_t out[6], const uint32_t in1[6]) { { 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 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 8388595); + { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffff3); { 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 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 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 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x3fffff); { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff); - { uint32_t x30 = (x29 & Const 8388595); + { uint32_t x30 = (x29 & 0x7ffff3); { uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 23 (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); diff --git a/src/Specific/solinas32_2e137m13_6limbs/freezeDisplay.log b/src/Specific/solinas32_2e137m13_6limbs/freezeDisplay.log index 28b9873e3..df913fbcb 100644 --- a/src/Specific/solinas32_2e137m13_6limbs/freezeDisplay.log +++ b/src/Specific/solinas32_2e137m13_6limbs/freezeDisplay.log @@ -2,14 +2,14 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x9, x10, x8, x6, x4, x2)%core, - uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 8388595); + uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffff3); 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 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 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 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x3fffff); uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff); - uint32_t x30 = (x29 & Const 8388595); + uint32_t x30 = (x29 & 0x7ffff3); uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 23 (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); diff --git a/src/Specific/solinas32_2e140m27_6limbs/femul.c b/src/Specific/solinas32_2e140m27_6limbs/femul.c new file mode 100644 index 000000000..f8c7f04fd --- /dev/null +++ b/src/Specific/solinas32_2e140m27_6limbs/femul.c @@ -0,0 +1,50 @@ +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_6limbs/femulDisplay.log b/src/Specific/solinas32_2e140m27_6limbs/femulDisplay.log new file mode 100644 index 000000000..27372ed26 --- /dev/null +++ b/src/Specific/solinas32_2e140m27_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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_2e141m9_6limbs/feadd.c b/src/Specific/solinas32_2e141m9_6limbs/feadd.c new file mode 100644 index 000000000..5b654b294 --- /dev/null +++ b/src/Specific/solinas32_2e141m9_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_6limbs/feaddDisplay.log b/src/Specific/solinas32_2e141m9_6limbs/feaddDisplay.log new file mode 100644 index 000000000..1084b2659 --- /dev/null +++ b/src/Specific/solinas32_2e141m9_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/femul.c b/src/Specific/solinas32_2e141m9_6limbs/femul.c new file mode 100644 index 000000000..bfc1b2f93 --- /dev/null +++ b/src/Specific/solinas32_2e141m9_6limbs/femul.c @@ -0,0 +1,50 @@ +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_6limbs/femulDisplay.log b/src/Specific/solinas32_2e141m9_6limbs/femulDisplay.log new file mode 100644 index 000000000..1dae1e57e --- /dev/null +++ b/src/Specific/solinas32_2e141m9_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesquare.c b/src/Specific/solinas32_2e141m9_6limbs/fesquare.c new file mode 100644 index 000000000..a0f82da0d --- /dev/null +++ b/src/Specific/solinas32_2e141m9_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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_6limbs/fesquareDisplay.log b/src/Specific/solinas32_2e141m9_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..44c86d48c --- /dev/null +++ b/src/Specific/solinas32_2e141m9_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesub.c b/src/Specific/solinas32_2e141m9_6limbs/fesub.c new file mode 100644 index 000000000..8c928bced --- /dev/null +++ b/src/Specific/solinas32_2e141m9_6limbs/fesub.c @@ -0,0 +1,21 @@ +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_6limbs/fesubDisplay.log b/src/Specific/solinas32_2e141m9_6limbs/fesubDisplay.log new file mode 100644 index 000000000..45d58a6d4 --- /dev/null +++ b/src/Specific/solinas32_2e141m9_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/freeze.c b/src/Specific/solinas32_2e141m9_6limbs/freeze.c new file mode 100644 index 000000000..24e968a49 --- /dev/null +++ b/src/Specific/solinas32_2e141m9_6limbs/freeze.c @@ -0,0 +1,34 @@ +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_6limbs/freezeDisplay.log b/src/Specific/solinas32_2e141m9_6limbs/freezeDisplay.log new file mode 100644 index 000000000..d4ea4280b --- /dev/null +++ b/src/Specific/solinas32_2e141m9_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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_2e150m3_6limbs/feadd.c b/src/Specific/solinas32_2e150m3_6limbs/feadd.c new file mode 100644 index 000000000..5b654b294 --- /dev/null +++ b/src/Specific/solinas32_2e150m3_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_2e150m3_6limbs/feaddDisplay.log b/src/Specific/solinas32_2e150m3_6limbs/feaddDisplay.log new file mode 100644 index 000000000..1084b2659 --- /dev/null +++ b/src/Specific/solinas32_2e150m3_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_2e150m3_6limbs/femul.c b/src/Specific/solinas32_2e150m3_6limbs/femul.c new file mode 100644 index 000000000..8e1b3b763 --- /dev/null +++ b/src/Specific/solinas32_2e150m3_6limbs/femul.c @@ -0,0 +1,50 @@ +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))))) + (0x3 * ((uint64_t)x12 * x22))); + { uint64_t 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)))); + { uint64_t 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))))); + { uint64_t 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)))))); + { uint64_t 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 >> 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); + { uint32_t x39 = (uint32_t) (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)0x3 * 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_2e150m3_6limbs/femulDisplay.log b/src/Specific/solinas32_2e150m3_6limbs/femulDisplay.log new file mode 100644 index 000000000..c0d245008 --- /dev/null +++ b/src/Specific/solinas32_2e150m3_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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))))) + (0x3 * ((uint64_t)x12 * x22))); + uint64_t 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)))); + uint64_t 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))))); + uint64_t 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)))))); + uint64_t 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 >> 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); + uint32_t x39 = (uint32_t) (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)0x3 * 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_2e150m3_6limbs/fesquare.c b/src/Specific/solinas32_2e150m3_6limbs/fesquare.c new file mode 100644 index 000000000..043ba5b12 --- /dev/null +++ b/src/Specific/solinas32_2e150m3_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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))))) + (0x3 * ((uint64_t)x9 * x9))); + { uint64_t 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)))); + { uint64_t 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))))); + { uint64_t 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)))))); + { uint64_t 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 >> 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); + { uint32_t x26 = (uint32_t) (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)0x3 * 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_2e150m3_6limbs/fesquareDisplay.log b/src/Specific/solinas32_2e150m3_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..31d45f0a3 --- /dev/null +++ b/src/Specific/solinas32_2e150m3_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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))))) + (0x3 * ((uint64_t)x9 * x9))); + uint64_t 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)))); + uint64_t 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))))); + uint64_t 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)))))); + uint64_t 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 >> 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); + uint32_t x26 = (uint32_t) (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)0x3 * 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_2e150m3_6limbs/fesub.c b/src/Specific/solinas32_2e150m3_6limbs/fesub.c new file mode 100644 index 000000000..bcdebe93b --- /dev/null +++ b/src/Specific/solinas32_2e150m3_6limbs/fesub.c @@ -0,0 +1,21 @@ +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] = ((Const 67108858 + 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_2e150m3_6limbs/fesubDisplay.log b/src/Specific/solinas32_2e150m3_6limbs/fesubDisplay.log new file mode 100644 index 000000000..37c2d8683 --- /dev/null +++ b/src/Specific/solinas32_2e150m3_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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), ((Const 67108858 + 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_2e150m3_6limbs/freeze.c b/src/Specific/solinas32_2e150m3_6limbs/freeze.c new file mode 100644 index 000000000..4dbed5747 --- /dev/null +++ b/src/Specific/solinas32_2e150m3_6limbs/freeze.c @@ -0,0 +1,34 @@ +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, 0x1fffffd); + { 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 & 0x1fffffd); + { 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_2e150m3_6limbs/freezeDisplay.log b/src/Specific/solinas32_2e150m3_6limbs/freezeDisplay.log new file mode 100644 index 000000000..849da0935 --- /dev/null +++ b/src/Specific/solinas32_2e150m3_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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, 0x1fffffd); + 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 & 0x1fffffd); + 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_6limbs/feadd.c b/src/Specific/solinas32_2e150m5_6limbs/feadd.c new file mode 100644 index 000000000..5b654b294 --- /dev/null +++ b/src/Specific/solinas32_2e150m5_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_6limbs/feaddDisplay.log b/src/Specific/solinas32_2e150m5_6limbs/feaddDisplay.log new file mode 100644 index 000000000..1084b2659 --- /dev/null +++ b/src/Specific/solinas32_2e150m5_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/femul.c b/src/Specific/solinas32_2e150m5_6limbs/femul.c new file mode 100644 index 000000000..7c3a9970d --- /dev/null +++ b/src/Specific/solinas32_2e150m5_6limbs/femul.c @@ -0,0 +1,50 @@ +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_6limbs/femulDisplay.log b/src/Specific/solinas32_2e150m5_6limbs/femulDisplay.log new file mode 100644 index 000000000..a78dc39c1 --- /dev/null +++ b/src/Specific/solinas32_2e150m5_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesquare.c b/src/Specific/solinas32_2e150m5_6limbs/fesquare.c new file mode 100644 index 000000000..7210a32c4 --- /dev/null +++ b/src/Specific/solinas32_2e150m5_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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_6limbs/fesquareDisplay.log b/src/Specific/solinas32_2e150m5_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..e32ea3b81 --- /dev/null +++ b/src/Specific/solinas32_2e150m5_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesub.c b/src/Specific/solinas32_2e150m5_6limbs/fesub.c new file mode 100644 index 000000000..a2bae1877 --- /dev/null +++ b/src/Specific/solinas32_2e150m5_6limbs/fesub.c @@ -0,0 +1,21 @@ +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_6limbs/fesubDisplay.log b/src/Specific/solinas32_2e150m5_6limbs/fesubDisplay.log new file mode 100644 index 000000000..1229647ea --- /dev/null +++ b/src/Specific/solinas32_2e150m5_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/freeze.c b/src/Specific/solinas32_2e150m5_6limbs/freeze.c new file mode 100644 index 000000000..877b3693b --- /dev/null +++ b/src/Specific/solinas32_2e150m5_6limbs/freeze.c @@ -0,0 +1,34 @@ +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_6limbs/freezeDisplay.log b/src/Specific/solinas32_2e150m5_6limbs/freezeDisplay.log new file mode 100644 index 000000000..9a4af32ee --- /dev/null +++ b/src/Specific/solinas32_2e150m5_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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_2e152m17_6limbs/feadd.c b/src/Specific/solinas32_2e152m17_6limbs/feadd.c new file mode 100644 index 000000000..5b654b294 --- /dev/null +++ b/src/Specific/solinas32_2e152m17_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_6limbs/feaddDisplay.log b/src/Specific/solinas32_2e152m17_6limbs/feaddDisplay.log new file mode 100644 index 000000000..1084b2659 --- /dev/null +++ b/src/Specific/solinas32_2e152m17_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/femul.c b/src/Specific/solinas32_2e152m17_6limbs/femul.c new file mode 100644 index 000000000..5cf3743f7 --- /dev/null +++ b/src/Specific/solinas32_2e152m17_6limbs/femul.c @@ -0,0 +1,50 @@ +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_6limbs/femulDisplay.log b/src/Specific/solinas32_2e152m17_6limbs/femulDisplay.log new file mode 100644 index 000000000..434a3892a --- /dev/null +++ b/src/Specific/solinas32_2e152m17_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesquare.c b/src/Specific/solinas32_2e152m17_6limbs/fesquare.c new file mode 100644 index 000000000..3d2387de8 --- /dev/null +++ b/src/Specific/solinas32_2e152m17_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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_6limbs/fesquareDisplay.log b/src/Specific/solinas32_2e152m17_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..cc5bc86f5 --- /dev/null +++ b/src/Specific/solinas32_2e152m17_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesub.c b/src/Specific/solinas32_2e152m17_6limbs/fesub.c new file mode 100644 index 000000000..1153d1999 --- /dev/null +++ b/src/Specific/solinas32_2e152m17_6limbs/fesub.c @@ -0,0 +1,21 @@ +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_6limbs/fesubDisplay.log b/src/Specific/solinas32_2e152m17_6limbs/fesubDisplay.log new file mode 100644 index 000000000..535c511cc --- /dev/null +++ b/src/Specific/solinas32_2e152m17_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/freeze.c b/src/Specific/solinas32_2e152m17_6limbs/freeze.c new file mode 100644 index 000000000..539597636 --- /dev/null +++ b/src/Specific/solinas32_2e152m17_6limbs/freeze.c @@ -0,0 +1,34 @@ +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_6limbs/freezeDisplay.log b/src/Specific/solinas32_2e152m17_6limbs/freezeDisplay.log new file mode 100644 index 000000000..5d8bdcde7 --- /dev/null +++ b/src/Specific/solinas32_2e152m17_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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_2e158m15_6limbs/feadd.c b/src/Specific/solinas32_2e158m15_6limbs/feadd.c new file mode 100644 index 000000000..5b654b294 --- /dev/null +++ b/src/Specific/solinas32_2e158m15_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_6limbs/feaddDisplay.log b/src/Specific/solinas32_2e158m15_6limbs/feaddDisplay.log new file mode 100644 index 000000000..1084b2659 --- /dev/null +++ b/src/Specific/solinas32_2e158m15_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/femul.c b/src/Specific/solinas32_2e158m15_6limbs/femul.c new file mode 100644 index 000000000..353afb2a8 --- /dev/null +++ b/src/Specific/solinas32_2e158m15_6limbs/femul.c @@ -0,0 +1,50 @@ +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_6limbs/femulDisplay.log b/src/Specific/solinas32_2e158m15_6limbs/femulDisplay.log new file mode 100644 index 000000000..83d0d6f1e --- /dev/null +++ b/src/Specific/solinas32_2e158m15_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesquare.c b/src/Specific/solinas32_2e158m15_6limbs/fesquare.c new file mode 100644 index 000000000..588f6154b --- /dev/null +++ b/src/Specific/solinas32_2e158m15_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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_6limbs/fesquareDisplay.log b/src/Specific/solinas32_2e158m15_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..c77e995f1 --- /dev/null +++ b/src/Specific/solinas32_2e158m15_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesub.c b/src/Specific/solinas32_2e158m15_6limbs/fesub.c new file mode 100644 index 000000000..2da1f8617 --- /dev/null +++ b/src/Specific/solinas32_2e158m15_6limbs/fesub.c @@ -0,0 +1,21 @@ +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_6limbs/fesubDisplay.log b/src/Specific/solinas32_2e158m15_6limbs/fesubDisplay.log new file mode 100644 index 000000000..284622c58 --- /dev/null +++ b/src/Specific/solinas32_2e158m15_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/freeze.c b/src/Specific/solinas32_2e158m15_6limbs/freeze.c new file mode 100644 index 000000000..c465eb5ed --- /dev/null +++ b/src/Specific/solinas32_2e158m15_6limbs/freeze.c @@ -0,0 +1,34 @@ +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_6limbs/freezeDisplay.log b/src/Specific/solinas32_2e158m15_6limbs/freezeDisplay.log new file mode 100644 index 000000000..9df853258 --- /dev/null +++ b/src/Specific/solinas32_2e158m15_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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_2e166m5_6limbs/feadd.c b/src/Specific/solinas32_2e166m5_6limbs/feadd.c new file mode 100644 index 000000000..5b654b294 --- /dev/null +++ b/src/Specific/solinas32_2e166m5_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_2e166m5_6limbs/feaddDisplay.log b/src/Specific/solinas32_2e166m5_6limbs/feaddDisplay.log new file mode 100644 index 000000000..1084b2659 --- /dev/null +++ b/src/Specific/solinas32_2e166m5_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_2e166m5_6limbs/femul.c b/src/Specific/solinas32_2e166m5_6limbs/femul.c new file mode 100644 index 000000000..2d1b2d490 --- /dev/null +++ b/src/Specific/solinas32_2e166m5_6limbs/femul.c @@ -0,0 +1,50 @@ +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) + ((0x2 * ((uint64_t)x9 * x19)) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x5 * (0x2 * ((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)))) + (0x5 * ((0x2 * ((uint64_t)x13 * x22)) + (0x2 * ((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 * ((0x2 * ((uint64_t)x9 * x22)) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + (0x2 * ((uint64_t)x12 * x19))))))); + { ℤ x29 = (((uint64_t)x5 * x15) +ℤ (0x5 *ℤ ((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 >> 0x1c); + { uint32_t x31 = (x29 & 0xfffffff); + { uint64_t x32 = (x30 + x28); + { uint64_t x33 = (x32 >> 0x1c); + { uint32_t x34 = ((uint32_t)x32 & 0xfffffff); + { uint64_t x35 = (x33 + x27); + { uint64_t x36 = (x35 >> 0x1b); + { uint32_t x37 = ((uint32_t)x35 & 0x7ffffff); + { uint64_t x38 = (x36 + x26); + { uint64_t x39 = (x38 >> 0x1c); + { uint32_t x40 = ((uint32_t)x38 & 0xfffffff); + { uint64_t x41 = (x39 + x25); + { uint64_t x42 = (x41 >> 0x1c); + { uint32_t x43 = ((uint32_t)x41 & 0xfffffff); + { uint64_t x44 = (x42 + x24); + { uint64_t x45 = (x44 >> 0x1b); + { uint32_t x46 = ((uint32_t)x44 & 0x7ffffff); + { uint64_t x47 = (x31 + (0x5 * x45)); + { uint32_t x48 = (uint32_t) (x47 >> 0x1c); + { uint32_t x49 = ((uint32_t)x47 & 0xfffffff); + { uint32_t x50 = (x48 + x34); + { uint32_t x51 = (x50 >> 0x1c); + { uint32_t x52 = (x50 & 0xfffffff); + 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_2e166m5_6limbs/femulDisplay.log b/src/Specific/solinas32_2e166m5_6limbs/femulDisplay.log new file mode 100644 index 000000000..f4c573268 --- /dev/null +++ b/src/Specific/solinas32_2e166m5_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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) + ((0x2 * ((uint64_t)x9 * x19)) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x5 * (0x2 * ((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)))) + (0x5 * ((0x2 * ((uint64_t)x13 * x22)) + (0x2 * ((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 * ((0x2 * ((uint64_t)x9 * x22)) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + (0x2 * ((uint64_t)x12 * x19))))))); + ℤ x29 = (((uint64_t)x5 * x15) +ℤ (0x5 *ℤ ((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 >> 0x1c); + uint32_t x31 = (x29 & 0xfffffff); + uint64_t x32 = (x30 + x28); + uint64_t x33 = (x32 >> 0x1c); + uint32_t x34 = ((uint32_t)x32 & 0xfffffff); + uint64_t x35 = (x33 + x27); + uint64_t x36 = (x35 >> 0x1b); + uint32_t x37 = ((uint32_t)x35 & 0x7ffffff); + uint64_t x38 = (x36 + x26); + uint64_t x39 = (x38 >> 0x1c); + uint32_t x40 = ((uint32_t)x38 & 0xfffffff); + uint64_t x41 = (x39 + x25); + uint64_t x42 = (x41 >> 0x1c); + uint32_t x43 = ((uint32_t)x41 & 0xfffffff); + uint64_t x44 = (x42 + x24); + uint64_t x45 = (x44 >> 0x1b); + uint32_t x46 = ((uint32_t)x44 & 0x7ffffff); + uint64_t x47 = (x31 + (0x5 * x45)); + uint32_t x48 = (uint32_t) (x47 >> 0x1c); + uint32_t x49 = ((uint32_t)x47 & 0xfffffff); + uint32_t x50 = (x48 + x34); + uint32_t x51 = (x50 >> 0x1c); + uint32_t x52 = (x50 & 0xfffffff); + 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_2e166m5_6limbs/fesquare.c b/src/Specific/solinas32_2e166m5_6limbs/fesquare.c new file mode 100644 index 000000000..a6c7d5591 --- /dev/null +++ b/src/Specific/solinas32_2e166m5_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x5 * (0x2 * ((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)))) + (0x5 * ((0x2 * ((uint64_t)x10 * x9)) + (0x2 * ((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 * ((0x2 * ((uint64_t)x6 * x9)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (0x2 * ((uint64_t)x9 * x6))))))); + { ℤ x16 = (((uint64_t)x2 * x2) +ℤ (0x5 *ℤ ((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 >> 0x1c); + { uint32_t x18 = (x16 & 0xfffffff); + { uint64_t x19 = (x17 + x15); + { uint64_t x20 = (x19 >> 0x1c); + { uint32_t x21 = ((uint32_t)x19 & 0xfffffff); + { uint64_t x22 = (x20 + x14); + { uint64_t x23 = (x22 >> 0x1b); + { uint32_t x24 = ((uint32_t)x22 & 0x7ffffff); + { uint64_t x25 = (x23 + x13); + { uint64_t x26 = (x25 >> 0x1c); + { uint32_t x27 = ((uint32_t)x25 & 0xfffffff); + { uint64_t x28 = (x26 + x12); + { uint64_t x29 = (x28 >> 0x1c); + { uint32_t x30 = ((uint32_t)x28 & 0xfffffff); + { uint64_t x31 = (x29 + x11); + { uint64_t x32 = (x31 >> 0x1b); + { uint32_t x33 = ((uint32_t)x31 & 0x7ffffff); + { uint64_t x34 = (x18 + (0x5 * x32)); + { uint32_t x35 = (uint32_t) (x34 >> 0x1c); + { uint32_t x36 = ((uint32_t)x34 & 0xfffffff); + { uint32_t x37 = (x35 + x21); + { uint32_t x38 = (x37 >> 0x1c); + { uint32_t x39 = (x37 & 0xfffffff); + 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_2e166m5_6limbs/fesquareDisplay.log b/src/Specific/solinas32_2e166m5_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..5b04f3bba --- /dev/null +++ b/src/Specific/solinas32_2e166m5_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x5 * (0x2 * ((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)))) + (0x5 * ((0x2 * ((uint64_t)x10 * x9)) + (0x2 * ((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 * ((0x2 * ((uint64_t)x6 * x9)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (0x2 * ((uint64_t)x9 * x6))))))); + ℤ x16 = (((uint64_t)x2 * x2) +ℤ (0x5 *ℤ ((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 >> 0x1c); + uint32_t x18 = (x16 & 0xfffffff); + uint64_t x19 = (x17 + x15); + uint64_t x20 = (x19 >> 0x1c); + uint32_t x21 = ((uint32_t)x19 & 0xfffffff); + uint64_t x22 = (x20 + x14); + uint64_t x23 = (x22 >> 0x1b); + uint32_t x24 = ((uint32_t)x22 & 0x7ffffff); + uint64_t x25 = (x23 + x13); + uint64_t x26 = (x25 >> 0x1c); + uint32_t x27 = ((uint32_t)x25 & 0xfffffff); + uint64_t x28 = (x26 + x12); + uint64_t x29 = (x28 >> 0x1c); + uint32_t x30 = ((uint32_t)x28 & 0xfffffff); + uint64_t x31 = (x29 + x11); + uint64_t x32 = (x31 >> 0x1b); + uint32_t x33 = ((uint32_t)x31 & 0x7ffffff); + uint64_t x34 = (x18 + (0x5 * x32)); + uint32_t x35 = (uint32_t) (x34 >> 0x1c); + uint32_t x36 = ((uint32_t)x34 & 0xfffffff); + uint32_t x37 = (x35 + x21); + uint32_t x38 = (x37 >> 0x1c); + uint32_t x39 = (x37 & 0xfffffff); + 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_2e166m5_6limbs/fesub.c b/src/Specific/solinas32_2e166m5_6limbs/fesub.c new file mode 100644 index 000000000..6156c0d99 --- /dev/null +++ b/src/Specific/solinas32_2e166m5_6limbs/fesub.c @@ -0,0 +1,21 @@ +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] = ((Const 536870902 + x5) - x15); + out[1] = ((0x1ffffffe + x7) - x17); + out[2] = ((0xffffffe + x9) - x19); + out[3] = ((0x1ffffffe + x11) - x21); + out[4] = ((0x1ffffffe + x13) - x23); + out[5] = ((0xffffffe + x12) - x22); + }}}}}}}}}}}} +} diff --git a/src/Specific/solinas32_2e166m5_6limbs/fesubDisplay.log b/src/Specific/solinas32_2e166m5_6limbs/fesubDisplay.log new file mode 100644 index 000000000..2a8b00026 --- /dev/null +++ b/src/Specific/solinas32_2e166m5_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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, + (((0xffffffe + x12) - x22), ((0x1ffffffe + x13) - x23), ((0x1ffffffe + x11) - x21), ((0xffffffe + x9) - x19), ((0x1ffffffe + x7) - x17), ((Const 536870902 + 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_2e166m5_6limbs/freeze.c b/src/Specific/solinas32_2e166m5_6limbs/freeze.c new file mode 100644 index 000000000..546d09de8 --- /dev/null +++ b/src/Specific/solinas32_2e166m5_6limbs/freeze.c @@ -0,0 +1,34 @@ +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 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 268435451); + { uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0xfffffff); + { 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)) (Return x16, Return x6, 0x7ffffff); + { 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 x8, 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 x10, 0xfffffff); + { 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 x9, 0x7ffffff); + { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff); + { uint32_t x30 = (x29 & Const 268435451); + { uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30); + { uint32_t x34 = (x29 & 0xfffffff); + { uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 28 (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 & 0x7ffffff); + { uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 27 (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 & 0xfffffff); + { uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 28 (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 & 0xfffffff); + { uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 28 (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 & 0x7ffffff); + { uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (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_2e166m5_6limbs/freezeDisplay.log b/src/Specific/solinas32_2e166m5_6limbs/freezeDisplay.log new file mode 100644 index 000000000..005fc1b4b --- /dev/null +++ b/src/Specific/solinas32_2e166m5_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 268435451); + uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0xfffffff); + 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)) (Return x16, Return x6, 0x7ffffff); + 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 x8, 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 x10, 0xfffffff); + 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 x9, 0x7ffffff); + uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff); + uint32_t x30 = (x29 & Const 268435451); + uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30); + uint32_t x34 = (x29 & 0xfffffff); + uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 28 (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 & 0x7ffffff); + uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 27 (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 & 0xfffffff); + uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 28 (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 & 0xfffffff); + uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 28 (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 & 0x7ffffff); + uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (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/solinas64_2e129m25_4limbs/fesub.c b/src/Specific/solinas64_2e129m25_4limbs/fesub.c index 30af6cbfe..ce33d3af7 100644 --- a/src/Specific/solinas64_2e129m25_4limbs/fesub.c +++ b/src/Specific/solinas64_2e129m25_4limbs/fesub.c @@ -7,9 +7,9 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) { const uint64_t x15 = in2[2]; { const uint64_t x13 = in2[1]; { const uint64_t x11 = in2[0]; - out[0] = ((Const 17179869134 + x5) - x11); - out[1] = ((Const 8589934590 + x7) - x13); - out[2] = ((Const 8589934590 + x9) - x15); - out[3] = ((Const 8589934590 + x8) - x14); + out[0] = ((0x3ffffffce + x5) - x11); + out[1] = ((0x1fffffffe + x7) - x13); + out[2] = ((0x1fffffffe + x9) - x15); + out[3] = ((0x1fffffffe + x8) - x14); }}}}}}}} } diff --git a/src/Specific/solinas64_2e129m25_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e129m25_4limbs/fesubDisplay.log index 7ebc05a33..9a0916e14 100644 --- a/src/Specific/solinas64_2e129m25_4limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e129m25_4limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core, - (((Const 8589934590 + x8) - x14), ((Const 8589934590 + x9) - x15), ((Const 8589934590 + x7) - x13), ((Const 17179869134 + x5) - x11))) + (((0x1fffffffe + x8) - x14), ((0x1fffffffe + x9) - x15), ((0x1fffffffe + x7) - x13), ((0x3ffffffce + 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_2e130m5_4limbs/fesub.c b/src/Specific/solinas64_2e130m5_4limbs/fesub.c index 8b94725d5..776a276d7 100644 --- a/src/Specific/solinas64_2e130m5_4limbs/fesub.c +++ b/src/Specific/solinas64_2e130m5_4limbs/fesub.c @@ -7,9 +7,9 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) { const uint64_t x15 = in2[2]; { const uint64_t x13 = in2[1]; { const uint64_t x11 = in2[0]; - out[0] = ((Const 17179869174 + x5) - x11); - out[1] = ((Const 8589934590 + x7) - x13); - out[2] = ((Const 17179869182 + x9) - x15); - out[3] = ((Const 8589934590 + x8) - x14); + out[0] = ((0x3fffffff6 + x5) - x11); + out[1] = ((0x1fffffffe + x7) - x13); + out[2] = ((0x3fffffffe + x9) - x15); + out[3] = ((0x1fffffffe + x8) - x14); }}}}}}}} } diff --git a/src/Specific/solinas64_2e130m5_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e130m5_4limbs/fesubDisplay.log index 80b79f572..dec95f014 100644 --- a/src/Specific/solinas64_2e130m5_4limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e130m5_4limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core, - (((Const 8589934590 + x8) - x14), ((Const 17179869182 + x9) - x15), ((Const 8589934590 + x7) - x13), ((Const 17179869174 + x5) - x11))) + (((0x1fffffffe + x8) - x14), ((0x3fffffffe + x9) - x15), ((0x1fffffffe + x7) - x13), ((0x3fffffff6 + 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_3limbs/fesub.c b/src/Specific/solinas64_2e137m13_3limbs/fesub.c index d0e17b67a..43c7089ba 100644 --- a/src/Specific/solinas64_2e137m13_3limbs/fesub.c +++ b/src/Specific/solinas64_2e137m13_3limbs/fesub.c @@ -5,8 +5,8 @@ static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) { const uint64_t x10 = in2[2]; { const uint64_t x11 = in2[1]; { const uint64_t x9 = in2[0]; - out[0] = ((Const 140737488355302 + x5) - x9); + out[0] = ((0x7fffffffffe6 + x5) - x9); out[1] = ((0x7ffffffffffe + x7) - x11); - out[2] = ((Const 70368744177662 + x6) - x10); + out[2] = ((0x3ffffffffffe + x6) - x10); }}}}}} } diff --git a/src/Specific/solinas64_2e137m13_3limbs/fesubDisplay.log b/src/Specific/solinas64_2e137m13_3limbs/fesubDisplay.log index 750b6f1c9..d9a19e025 100644 --- a/src/Specific/solinas64_2e137m13_3limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e137m13_3limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x6, x7, x5, (x10, x11, x9))%core, - (((Const 70368744177662 + x6) - x10), ((0x7ffffffffffe + x7) - x11), ((Const 140737488355302 + x5) - x9))) + (((0x3ffffffffffe + x6) - x10), ((0x7ffffffffffe + x7) - x11), ((0x7fffffffffe6 + x5) - x9))) (x, x0)%core : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t) diff --git a/src/Specific/solinas64_2e137m13_3limbs/freeze.c b/src/Specific/solinas64_2e137m13_3limbs/freeze.c index 1762cd992..ca0572fce 100644 --- a/src/Specific/solinas64_2e137m13_3limbs/freeze.c +++ b/src/Specific/solinas64_2e137m13_3limbs/freeze.c @@ -2,11 +2,11 @@ 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 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 70368744177651); + { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffff3); { uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x3fffffffffff); { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x1fffffffffff); { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL); - { uint64_t x15 = (x14 & Const 70368744177651); + { uint64_t x15 = (x14 & 0x3ffffffffff3); { uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15); { uint64_t x19 = (x14 & 0x3fffffffffff); { uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19); diff --git a/src/Specific/solinas64_2e137m13_3limbs/freezeDisplay.log b/src/Specific/solinas64_2e137m13_3limbs/freezeDisplay.log index 65caf0d76..b748f9e0f 100644 --- a/src/Specific/solinas64_2e137m13_3limbs/freezeDisplay.log +++ b/src/Specific/solinas64_2e137m13_3limbs/freezeDisplay.log @@ -2,11 +2,11 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x3, x4, x2)%core, - uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 70368744177651); + uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffff3); uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x3fffffffffff); uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x1fffffffffff); uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL); - uint64_t x15 = (x14 & Const 70368744177651); + uint64_t x15 = (x14 & 0x3ffffffffff3); uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15); uint64_t x19 = (x14 & 0x3fffffffffff); uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19); diff --git a/src/Specific/solinas64_2e140m27_3limbs/fesub.c b/src/Specific/solinas64_2e140m27_3limbs/fesub.c index aca5472d7..da837b1c9 100644 --- a/src/Specific/solinas64_2e140m27_3limbs/fesub.c +++ b/src/Specific/solinas64_2e140m27_3limbs/fesub.c @@ -5,7 +5,7 @@ static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) { const uint64_t x10 = in2[2]; { const uint64_t x11 = in2[1]; { const uint64_t x9 = in2[0]; - out[0] = ((Const 281474976710602 + x5) - x9); + out[0] = ((0xffffffffffca + x5) - x9); out[1] = ((0xfffffffffffe + x7) - x11); out[2] = ((0x7ffffffffffe + x6) - x10); }}}}}} diff --git a/src/Specific/solinas64_2e140m27_3limbs/fesubDisplay.log b/src/Specific/solinas64_2e140m27_3limbs/fesubDisplay.log index a63e637f0..12210376d 100644 --- a/src/Specific/solinas64_2e140m27_3limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e140m27_3limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x6, x7, x5, (x10, x11, x9))%core, - (((0x7ffffffffffe + x6) - x10), ((0xfffffffffffe + x7) - x11), ((Const 281474976710602 + x5) - x9))) + (((0x7ffffffffffe + x6) - x10), ((0xfffffffffffe + x7) - x11), ((0xffffffffffca + x5) - x9))) (x, x0)%core : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t) diff --git a/src/Specific/solinas64_2e140m27_3limbs/freeze.c b/src/Specific/solinas64_2e140m27_3limbs/freeze.c index 23f8b12ef..0e10c06cc 100644 --- a/src/Specific/solinas64_2e140m27_3limbs/freeze.c +++ b/src/Specific/solinas64_2e140m27_3limbs/freeze.c @@ -2,11 +2,11 @@ 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, Const 140737488355301); + { 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, 0x7fffffffffe5); { 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 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x3fffffffffff); { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL); - { uint64_t x15 = (x14 & Const 140737488355301); + { uint64_t x15 = (x14 & 0x7fffffffffe5); { 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); diff --git a/src/Specific/solinas64_2e140m27_3limbs/freezeDisplay.log b/src/Specific/solinas64_2e140m27_3limbs/freezeDisplay.log index d331ff3e9..15ce8018a 100644 --- a/src/Specific/solinas64_2e140m27_3limbs/freezeDisplay.log +++ b/src/Specific/solinas64_2e140m27_3limbs/freezeDisplay.log @@ -2,11 +2,11 @@ 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, Const 140737488355301); + 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, 0x7fffffffffe5); 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 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x3fffffffffff); uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL); - uint64_t x15 = (x14 & Const 140737488355301); + uint64_t x15 = (x14 & 0x7fffffffffe5); 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); diff --git a/src/Specific/solinas64_2e141m9_4limbs/fesub.c b/src/Specific/solinas64_2e141m9_4limbs/fesub.c index 41b96d6e2..1cd5e39b5 100644 --- a/src/Specific/solinas64_2e141m9_4limbs/fesub.c +++ b/src/Specific/solinas64_2e141m9_4limbs/fesub.c @@ -7,7 +7,7 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) { const uint64_t x15 = in2[2]; { const uint64_t x13 = in2[1]; { const uint64_t x11 = in2[0]; - out[0] = ((Const 137438953454 + x5) - x11); + out[0] = ((0x1fffffffee + x5) - x11); out[1] = ((0xffffffffe + x7) - x13); out[2] = ((0xffffffffe + x9) - x15); out[3] = ((0xffffffffe + x8) - x14); diff --git a/src/Specific/solinas64_2e141m9_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e141m9_4limbs/fesubDisplay.log index 05bca3271..aaaa3a8f3 100644 --- a/src/Specific/solinas64_2e141m9_4limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e141m9_4limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core, - (((0xffffffffe + x8) - x14), ((0xffffffffe + x9) - x15), ((0xffffffffe + x7) - x13), ((Const 137438953454 + x5) - x11))) + (((0xffffffffe + x8) - x14), ((0xffffffffe + x9) - x15), ((0xffffffffe + x7) - x13), ((0x1fffffffee + 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_2e150m3_4limbs/fesub.c b/src/Specific/solinas64_2e150m3_4limbs/fesub.c index b6f1cd9d8..5a767e64f 100644 --- a/src/Specific/solinas64_2e150m3_4limbs/fesub.c +++ b/src/Specific/solinas64_2e150m3_4limbs/fesub.c @@ -7,9 +7,9 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) { const uint64_t x15 = in2[2]; { const uint64_t x13 = in2[1]; { const uint64_t x11 = in2[0]; - out[0] = ((Const 549755813882 + x5) - x11); - out[1] = ((Const 274877906942 + x7) - x13); + out[0] = ((0x7ffffffffa + x5) - x11); + out[1] = ((0x3ffffffffe + x7) - x13); out[2] = ((0x7ffffffffe + x9) - x15); - out[3] = ((Const 274877906942 + x8) - x14); + out[3] = ((0x3ffffffffe + x8) - x14); }}}}}}}} } diff --git a/src/Specific/solinas64_2e150m3_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e150m3_4limbs/fesubDisplay.log index 99c32217b..798f08921 100644 --- a/src/Specific/solinas64_2e150m3_4limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e150m3_4limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core, - (((Const 274877906942 + x8) - x14), ((0x7ffffffffe + x9) - x15), ((Const 274877906942 + x7) - x13), ((Const 549755813882 + x5) - x11))) + (((0x3ffffffffe + x8) - x14), ((0x7ffffffffe + x9) - x15), ((0x3ffffffffe + x7) - x13), ((0x7ffffffffa + 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_2e150m5_4limbs/fesub.c b/src/Specific/solinas64_2e150m5_4limbs/fesub.c index 4f46cac37..6417ee1c0 100644 --- a/src/Specific/solinas64_2e150m5_4limbs/fesub.c +++ b/src/Specific/solinas64_2e150m5_4limbs/fesub.c @@ -7,9 +7,9 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) { const uint64_t x15 = in2[2]; { const uint64_t x13 = in2[1]; { const uint64_t x11 = in2[0]; - out[0] = ((Const 549755813878 + x5) - x11); - out[1] = ((Const 274877906942 + x7) - x13); + out[0] = ((0x7ffffffff6 + x5) - x11); + out[1] = ((0x3ffffffffe + x7) - x13); out[2] = ((0x7ffffffffe + x9) - x15); - out[3] = ((Const 274877906942 + x8) - x14); + out[3] = ((0x3ffffffffe + x8) - x14); }}}}}}}} } diff --git a/src/Specific/solinas64_2e150m5_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e150m5_4limbs/fesubDisplay.log index 0a073b8d6..f2e7599a7 100644 --- a/src/Specific/solinas64_2e150m5_4limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e150m5_4limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core, - (((Const 274877906942 + x8) - x14), ((0x7ffffffffe + x9) - x15), ((Const 274877906942 + x7) - x13), ((Const 549755813878 + x5) - x11))) + (((0x3ffffffffe + x8) - x14), ((0x7ffffffffe + x9) - x15), ((0x3ffffffffe + x7) - x13), ((0x7ffffffff6 + 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_3limbs/fesub.c b/src/Specific/solinas64_2e152m17_3limbs/fesub.c index 41457dd62..72692ad0b 100644 --- a/src/Specific/solinas64_2e152m17_3limbs/fesub.c +++ b/src/Specific/solinas64_2e152m17_3limbs/fesub.c @@ -5,7 +5,7 @@ static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) { const uint64_t x10 = in2[2]; { const uint64_t x11 = in2[1]; { const uint64_t x9 = in2[0]; - out[0] = ((Const 4503599627370462 + x5) - x9); + out[0] = ((0xfffffffffffde + x5) - x9); out[1] = ((0xffffffffffffe + x7) - x11); out[2] = ((0x7fffffffffffe + x6) - x10); }}}}}} diff --git a/src/Specific/solinas64_2e152m17_3limbs/fesubDisplay.log b/src/Specific/solinas64_2e152m17_3limbs/fesubDisplay.log index 8ac453f99..36d87ccd5 100644 --- a/src/Specific/solinas64_2e152m17_3limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e152m17_3limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x6, x7, x5, (x10, x11, x9))%core, - (((0x7fffffffffffe + x6) - x10), ((0xffffffffffffe + x7) - x11), ((Const 4503599627370462 + x5) - x9))) + (((0x7fffffffffffe + x6) - x10), ((0xffffffffffffe + x7) - x11), ((0xfffffffffffde + x5) - x9))) (x, x0)%core : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t) diff --git a/src/Specific/solinas64_2e152m17_3limbs/freeze.c b/src/Specific/solinas64_2e152m17_3limbs/freeze.c index a0c426f08..10a1650e5 100644 --- a/src/Specific/solinas64_2e152m17_3limbs/freeze.c +++ b/src/Specific/solinas64_2e152m17_3limbs/freeze.c @@ -2,11 +2,11 @@ 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 = _subborrow_u51(0x0, x2, Const 2251799813685231, &x6); + { uint64_t x6; uint8_t x7 = _subborrow_u51(0x0, x2, 0x7ffffffffffef, &x6); { uint64_t x9; uint8_t x10 = _subborrow_u51(x7, x4, 0x7ffffffffffff, &x9); { 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 & Const 2251799813685231); + { uint64_t x15 = (x14 & 0x7ffffffffffef); { uint64_t x17; uint8_t x18 = _addcarryx_u51(0x0, x6, x15, &x17); { uint64_t x19 = (x14 & 0x7ffffffffffff); { uint64_t x21; uint8_t x22 = _addcarryx_u51(x18, x9, x19, &x21); diff --git a/src/Specific/solinas64_2e152m17_3limbs/freezeDisplay.log b/src/Specific/solinas64_2e152m17_3limbs/freezeDisplay.log index a69e92894..ddd32769a 100644 --- a/src/Specific/solinas64_2e152m17_3limbs/freezeDisplay.log +++ b/src/Specific/solinas64_2e152m17_3limbs/freezeDisplay.log @@ -2,11 +2,11 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x3, x4, x2)%core, - uint64_t x6, uint8_t x7 = subborrow_u51(0x0, x2, Const 2251799813685231); + uint64_t x6, uint8_t x7 = subborrow_u51(0x0, x2, 0x7ffffffffffef); uint64_t x9, uint8_t x10 = subborrow_u51(x7, x4, 0x7ffffffffffff); 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 & Const 2251799813685231); + uint64_t x15 = (x14 & 0x7ffffffffffef); uint64_t x17, uint8_t x18 = addcarryx_u51(0x0, x6, x15); uint64_t x19 = (x14 & 0x7ffffffffffff); uint64_t x21, uint8_t x22 = addcarryx_u51(x18, x9, x19); diff --git a/src/Specific/solinas64_2e158m15_3limbs/fesub.c b/src/Specific/solinas64_2e158m15_3limbs/fesub.c index efaadd2d5..54d3f502f 100644 --- a/src/Specific/solinas64_2e158m15_3limbs/fesub.c +++ b/src/Specific/solinas64_2e158m15_3limbs/fesub.c @@ -5,7 +5,7 @@ static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) { const uint64_t x10 = in2[2]; { const uint64_t x11 = in2[1]; { const uint64_t x9 = in2[0]; - out[0] = ((Const 18014398509481954 + x5) - x9); + out[0] = ((0x3fffffffffffe2 + x5) - x9); out[1] = ((0x3ffffffffffffe + x7) - x11); out[2] = ((0x1ffffffffffffe + x6) - x10); }}}}}} diff --git a/src/Specific/solinas64_2e158m15_3limbs/fesubDisplay.log b/src/Specific/solinas64_2e158m15_3limbs/fesubDisplay.log index fb27cdf38..05695579b 100644 --- a/src/Specific/solinas64_2e158m15_3limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e158m15_3limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x6, x7, x5, (x10, x11, x9))%core, - (((0x1ffffffffffffe + x6) - x10), ((0x3ffffffffffffe + x7) - x11), ((Const 18014398509481954 + x5) - x9))) + (((0x1ffffffffffffe + x6) - x10), ((0x3ffffffffffffe + x7) - x11), ((0x3fffffffffffe2 + x5) - x9))) (x, x0)%core : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t) diff --git a/src/Specific/solinas64_2e158m15_3limbs/freeze.c b/src/Specific/solinas64_2e158m15_3limbs/freeze.c index 4f1832611..d6722b135 100644 --- a/src/Specific/solinas64_2e158m15_3limbs/freeze.c +++ b/src/Specific/solinas64_2e158m15_3limbs/freeze.c @@ -2,11 +2,11 @@ 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 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 9007199254740977); + { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffff1); { uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x1fffffffffffff); { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0xfffffffffffff); { uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL); - { uint64_t x15 = (x14 & Const 9007199254740977); + { uint64_t x15 = (x14 & 0x1ffffffffffff1); { uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15); { uint64_t x19 = (x14 & 0x1fffffffffffff); { uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19); diff --git a/src/Specific/solinas64_2e158m15_3limbs/freezeDisplay.log b/src/Specific/solinas64_2e158m15_3limbs/freezeDisplay.log index 96c79d283..4345bf25c 100644 --- a/src/Specific/solinas64_2e158m15_3limbs/freezeDisplay.log +++ b/src/Specific/solinas64_2e158m15_3limbs/freezeDisplay.log @@ -2,11 +2,11 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x3, x4, x2)%core, - uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 9007199254740977); + uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffff1); uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x1fffffffffffff); uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0xfffffffffffff); uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL); - uint64_t x15 = (x14 & Const 9007199254740977); + uint64_t x15 = (x14 & 0x1ffffffffffff1); uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15); uint64_t x19 = (x14 & 0x1fffffffffffff); uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19); diff --git a/src/Specific/solinas64_2e165m25_4limbs/fesub.c b/src/Specific/solinas64_2e165m25_4limbs/fesub.c index c1bc872c7..5f0e809c0 100644 --- a/src/Specific/solinas64_2e165m25_4limbs/fesub.c +++ b/src/Specific/solinas64_2e165m25_4limbs/fesub.c @@ -7,7 +7,7 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) { const uint64_t x15 = in2[2]; { const uint64_t x13 = in2[1]; { const uint64_t x11 = in2[0]; - out[0] = ((Const 8796093022158 + x5) - x11); + out[0] = ((0x7ffffffffce + x5) - x11); out[1] = ((0x3fffffffffe + x7) - x13); out[2] = ((0x3fffffffffe + x9) - x15); out[3] = ((0x3fffffffffe + x8) - x14); diff --git a/src/Specific/solinas64_2e165m25_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e165m25_4limbs/fesubDisplay.log index 6a6cd8e83..e29d33fc2 100644 --- a/src/Specific/solinas64_2e165m25_4limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e165m25_4limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core, - (((0x3fffffffffe + x8) - x14), ((0x3fffffffffe + x9) - x15), ((0x3fffffffffe + x7) - x13), ((Const 8796093022158 + x5) - x11))) + (((0x3fffffffffe + x8) - x14), ((0x3fffffffffe + x9) - x15), ((0x3fffffffffe + x7) - x13), ((0x7ffffffffce + 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_2e166m5_4limbs/fesub.c b/src/Specific/solinas64_2e166m5_4limbs/fesub.c index a261e6c5e..8031982a5 100644 --- a/src/Specific/solinas64_2e166m5_4limbs/fesub.c +++ b/src/Specific/solinas64_2e166m5_4limbs/fesub.c @@ -7,7 +7,7 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) { const uint64_t x15 = in2[2]; { const uint64_t x13 = in2[1]; { const uint64_t x11 = in2[0]; - out[0] = ((Const 8796093022198 + x5) - x11); + out[0] = ((0x7fffffffff6 + x5) - x11); out[1] = ((0x3fffffffffe + x7) - x13); out[2] = ((0x7fffffffffe + x9) - x15); out[3] = ((0x3fffffffffe + x8) - x14); diff --git a/src/Specific/solinas64_2e166m5_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e166m5_4limbs/fesubDisplay.log index ff4bb8bf3..81b67f3d0 100644 --- a/src/Specific/solinas64_2e166m5_4limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e166m5_4limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core, - (((0x3fffffffffe + x8) - x14), ((0x7fffffffffe + x9) - x15), ((0x3fffffffffe + x7) - x13), ((Const 8796093022198 + x5) - x11))) + (((0x3fffffffffe + x8) - x14), ((0x7fffffffffe + x9) - x15), ((0x3fffffffffe + x7) - x13), ((0x7fffffffff6 + 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_2e171m19_4limbs/fesub.c b/src/Specific/solinas64_2e171m19_4limbs/fesub.c index 933e1fac6..729b06baf 100644 --- a/src/Specific/solinas64_2e171m19_4limbs/fesub.c +++ b/src/Specific/solinas64_2e171m19_4limbs/fesub.c @@ -7,7 +7,7 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) { const uint64_t x15 = in2[2]; { const uint64_t x13 = in2[1]; { const uint64_t x11 = in2[0]; - out[0] = ((Const 17592186044378 + x5) - x11); + out[0] = ((0xfffffffffda + x5) - x11); out[1] = ((0xffffffffffe + x7) - x13); out[2] = ((0xffffffffffe + x9) - x15); out[3] = ((0x7fffffffffe + x8) - x14); diff --git a/src/Specific/solinas64_2e171m19_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e171m19_4limbs/fesubDisplay.log index 14c632015..1773b3869 100644 --- a/src/Specific/solinas64_2e171m19_4limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e171m19_4limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core, - (((0x7fffffffffe + x8) - x14), ((0xffffffffffe + x9) - x15), ((0xffffffffffe + x7) - x13), ((Const 17592186044378 + x5) - x11))) + (((0x7fffffffffe + x8) - x14), ((0xffffffffffe + x9) - x15), ((0xffffffffffe + x7) - x13), ((0xfffffffffda + 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_2e174m17_4limbs/fesub.c b/src/Specific/solinas64_2e174m17_4limbs/fesub.c index ed0213eb5..901f8fd88 100644 --- a/src/Specific/solinas64_2e174m17_4limbs/fesub.c +++ b/src/Specific/solinas64_2e174m17_4limbs/fesub.c @@ -7,9 +7,9 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) { const uint64_t x15 = in2[2]; { const uint64_t x13 = in2[1]; { const uint64_t x11 = in2[0]; - out[0] = ((Const 35184372088798 + x5) - x11); + out[0] = ((0x1fffffffffde + x5) - x11); out[1] = ((0xffffffffffe + x7) - x13); - out[2] = ((Const 35184372088830 + x9) - x15); + out[2] = ((0x1ffffffffffe + x9) - x15); out[3] = ((0xffffffffffe + x8) - x14); }}}}}}}} } diff --git a/src/Specific/solinas64_2e174m17_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e174m17_4limbs/fesubDisplay.log index 60202bd7b..e0d979a9d 100644 --- a/src/Specific/solinas64_2e174m17_4limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e174m17_4limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core, - (((0xffffffffffe + x8) - x14), ((Const 35184372088830 + x9) - x15), ((0xffffffffffe + x7) - x13), ((Const 35184372088798 + x5) - x11))) + (((0xffffffffffe + x8) - x14), ((0x1ffffffffffe + x9) - x15), ((0xffffffffffe + x7) - x13), ((0x1fffffffffde + 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_2e174m3_4limbs/fesub.c b/src/Specific/solinas64_2e174m3_4limbs/fesub.c index 3c165b60b..6f793d1b7 100644 --- a/src/Specific/solinas64_2e174m3_4limbs/fesub.c +++ b/src/Specific/solinas64_2e174m3_4limbs/fesub.c @@ -7,9 +7,9 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) { const uint64_t x15 = in2[2]; { const uint64_t x13 = in2[1]; { const uint64_t x11 = in2[0]; - out[0] = ((Const 35184372088826 + x5) - x11); + out[0] = ((0x1ffffffffffa + x5) - x11); out[1] = ((0xffffffffffe + x7) - x13); - out[2] = ((Const 35184372088830 + x9) - x15); + out[2] = ((0x1ffffffffffe + x9) - x15); out[3] = ((0xffffffffffe + x8) - x14); }}}}}}}} } diff --git a/src/Specific/solinas64_2e174m3_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e174m3_4limbs/fesubDisplay.log index f8788e150..3ff577966 100644 --- a/src/Specific/solinas64_2e174m3_4limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e174m3_4limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core, - (((0xffffffffffe + x8) - x14), ((Const 35184372088830 + x9) - x15), ((0xffffffffffe + x7) - x13), ((Const 35184372088826 + x5) - x11))) + (((0xffffffffffe + x8) - x14), ((0x1ffffffffffe + x9) - x15), ((0xffffffffffe + x7) - x13), ((0x1ffffffffffa + 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_5limbs/fesub.c b/src/Specific/solinas64_2e189m25_5limbs/fesub.c index c66bd3a31..ce859c6d9 100644 --- a/src/Specific/solinas64_2e189m25_5limbs/fesub.c +++ b/src/Specific/solinas64_2e189m25_5limbs/fesub.c @@ -9,10 +9,10 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) { const uint64_t x17 = in2[2]; { const uint64_t x15 = in2[1]; { const uint64_t x13 = in2[0]; - out[0] = ((Const 549755813838 + x5) - x13); + out[0] = ((0x7fffffffce + x5) - x13); out[1] = ((0x7ffffffffe + x7) - x15); out[2] = ((0x7ffffffffe + x9) - x17); out[3] = ((0x7ffffffffe + x11) - x19); - out[4] = ((Const 274877906942 + x10) - x18); + out[4] = ((0x3ffffffffe + x10) - x18); }}}}}}}}}} } diff --git a/src/Specific/solinas64_2e189m25_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e189m25_5limbs/fesubDisplay.log index d1c0dd6a1..a2562fa02 100644 --- a/src/Specific/solinas64_2e189m25_5limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e189m25_5limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, - (((Const 274877906942 + x10) - x18), ((0x7ffffffffe + x11) - x19), ((0x7ffffffffe + x9) - x17), ((0x7ffffffffe + x7) - x15), ((Const 549755813838 + x5) - x13))) + (((0x3ffffffffe + x10) - x18), ((0x7ffffffffe + x11) - x19), ((0x7ffffffffe + x9) - x17), ((0x7ffffffffe + x7) - x15), ((0x7fffffffce + 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_2e189m25_5limbs/freeze.c b/src/Specific/solinas64_2e189m25_5limbs/freeze.c index d14e5b986..9fefdac0a 100644 --- a/src/Specific/solinas64_2e189m25_5limbs/freeze.c +++ b/src/Specific/solinas64_2e189m25_5limbs/freeze.c @@ -4,13 +4,13 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) { { 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 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 274877906919); + { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffe7); { 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 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x1fffffffff); { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL); - { uint64_t x25 = (x24 & Const 274877906919); + { uint64_t x25 = (x24 & 0x3fffffffe7); { uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 38 (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); diff --git a/src/Specific/solinas64_2e189m25_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e189m25_5limbs/freezeDisplay.log index 2d1999392..4e94d533c 100644 --- a/src/Specific/solinas64_2e189m25_5limbs/freezeDisplay.log +++ b/src/Specific/solinas64_2e189m25_5limbs/freezeDisplay.log @@ -2,13 +2,13 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x7, x8, x6, x4, x2)%core, - uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 274877906919); + uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffe7); 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 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x1fffffffff); uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL); - uint64_t x25 = (x24 & Const 274877906919); + uint64_t x25 = (x24 & 0x3fffffffe7); uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 38 (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); diff --git a/src/Specific/solinas64_2e190m11_5limbs/fesub.c b/src/Specific/solinas64_2e190m11_5limbs/fesub.c index fff54b745..57eba50a6 100644 --- a/src/Specific/solinas64_2e190m11_5limbs/fesub.c +++ b/src/Specific/solinas64_2e190m11_5limbs/fesub.c @@ -9,7 +9,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) { const uint64_t x17 = in2[2]; { const uint64_t x15 = in2[1]; { const uint64_t x13 = in2[0]; - out[0] = ((Const 549755813866 + x5) - x13); + out[0] = ((0x7fffffffea + x5) - x13); out[1] = ((0x7ffffffffe + x7) - x15); out[2] = ((0x7ffffffffe + x9) - x17); out[3] = ((0x7ffffffffe + x11) - x19); diff --git a/src/Specific/solinas64_2e190m11_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e190m11_5limbs/fesubDisplay.log index c794eb059..bdf3bab02 100644 --- a/src/Specific/solinas64_2e190m11_5limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e190m11_5limbs/fesubDisplay.log @@ -2,6 +2,6 @@ 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), ((Const 549755813866 + x5) - x13))) + (((0x7ffffffffe + x10) - x18), ((0x7ffffffffe + x11) - x19), ((0x7ffffffffe + x9) - x17), ((0x7ffffffffe + x7) - x15), ((0x7fffffffea + 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_4limbs/fesub.c b/src/Specific/solinas64_2e191m19_4limbs/fesub.c index 91526bf9a..b7adcc113 100644 --- a/src/Specific/solinas64_2e191m19_4limbs/fesub.c +++ b/src/Specific/solinas64_2e191m19_4limbs/fesub.c @@ -7,7 +7,7 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) { const uint64_t x15 = in2[2]; { const uint64_t x13 = in2[1]; { const uint64_t x11 = in2[0]; - out[0] = ((Const 562949953421274 + x5) - x11); + out[0] = ((0x1ffffffffffda + x5) - x11); out[1] = ((0x1fffffffffffe + x7) - x13); out[2] = ((0x1fffffffffffe + x9) - x15); out[3] = ((0xfffffffffffe + x8) - x14); diff --git a/src/Specific/solinas64_2e191m19_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e191m19_4limbs/fesubDisplay.log index a94f0d59d..7d3dd7878 100644 --- a/src/Specific/solinas64_2e191m19_4limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e191m19_4limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core, - (((0xfffffffffffe + x8) - x14), ((0x1fffffffffffe + x9) - x15), ((0x1fffffffffffe + x7) - x13), ((Const 562949953421274 + x5) - x11))) + (((0xfffffffffffe + x8) - x14), ((0x1fffffffffffe + x9) - x15), ((0x1fffffffffffe + x7) - x13), ((0x1ffffffffffda + 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_2e191m19_4limbs/freeze.c b/src/Specific/solinas64_2e191m19_4limbs/freeze.c index 61896a565..f9254f645 100644 --- a/src/Specific/solinas64_2e191m19_4limbs/freeze.c +++ b/src/Specific/solinas64_2e191m19_4limbs/freeze.c @@ -3,12 +3,12 @@ static void freeze(uint64_t out[4], const uint64_t in1[4]) { { 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, Const 281474976710637); + { 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, 0xffffffffffed); { 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 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 & Const 281474976710637); + { uint64_t x20 = (x19 & 0xffffffffffed); { 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 & 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); diff --git a/src/Specific/solinas64_2e191m19_4limbs/freezeDisplay.log b/src/Specific/solinas64_2e191m19_4limbs/freezeDisplay.log index 217bcd03b..33e548f8a 100644 --- a/src/Specific/solinas64_2e191m19_4limbs/freezeDisplay.log +++ b/src/Specific/solinas64_2e191m19_4limbs/freezeDisplay.log @@ -2,12 +2,12 @@ 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, Const 281474976710637); + 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, 0xffffffffffed); 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 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 & Const 281474976710637); + uint64_t x20 = (x19 & 0xffffffffffed); 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 & 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); diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/fesub.c b/src/Specific/solinas64_2e192m2e64m1_5limbs/fesub.c index 28d336120..3cd07ae40 100644 --- a/src/Specific/solinas64_2e192m2e64m1_5limbs/fesub.c +++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/fesub.c @@ -10,7 +10,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) { const uint64_t x15 = in2[1]; { const uint64_t x13 = in2[0]; out[0] = ((0xfffffffffe + x5) - x13); - out[1] = ((Const 549688705022 + x7) - x15); + out[1] = ((0x7ffbfffffe + x7) - x15); out[2] = ((0xfffffffffe + x9) - x17); out[3] = ((0x7ffffffffe + x11) - x19); out[4] = ((0x7ffffffffe + x10) - x18); diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e192m2e64m1_5limbs/fesubDisplay.log index 6112bbc17..7372f4ab9 100644 --- a/src/Specific/solinas64_2e192m2e64m1_5limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, - (((0x7ffffffffe + x10) - x18), ((0x7ffffffffe + x11) - x19), ((0xfffffffffe + x9) - x17), ((Const 549688705022 + x7) - x15), ((0xfffffffffe + x5) - x13))) + (((0x7ffffffffe + x10) - x18), ((0x7ffffffffe + x11) - x19), ((0xfffffffffe + x9) - x17), ((0x7ffbfffffe + x7) - x15), ((0xfffffffffe + 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_2e192m2e64m1_5limbs/freeze.c b/src/Specific/solinas64_2e192m2e64m1_5limbs/freeze.c index a78ca39fb..4d7951d82 100644 --- a/src/Specific/solinas64_2e192m2e64m1_5limbs/freeze.c +++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/freeze.c @@ -5,14 +5,14 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) { { 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, 0x7fffffffff); - { 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, Const 274844352511); + { 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, 0x3ffdffffff); { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7fffffffff); { 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 & 0x7fffffffff); { 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 & Const 274844352511); + { uint64_t x29 = (x24 & 0x3ffdffffff); { 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 & 0x7fffffffff); { uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x16, Return x33); diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e192m2e64m1_5limbs/freezeDisplay.log index e0a95a07a..03365946d 100644 --- a/src/Specific/solinas64_2e192m2e64m1_5limbs/freezeDisplay.log +++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/freezeDisplay.log @@ -3,14 +3,14 @@ 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, 0x7fffffffff); - 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, Const 274844352511); + 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, 0x3ffdffffff); uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7fffffffff); 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 & 0x7fffffffff); 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 & Const 274844352511); + uint64_t x29 = (x24 & 0x3ffdffffff); 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 & 0x7fffffffff); uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x16, Return x33); diff --git a/src/Specific/solinas64_2e194m33_5limbs/fesub.c b/src/Specific/solinas64_2e194m33_5limbs/fesub.c index 15831bbc3..af5e3276a 100644 --- a/src/Specific/solinas64_2e194m33_5limbs/fesub.c +++ b/src/Specific/solinas64_2e194m33_5limbs/fesub.c @@ -9,7 +9,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) { const uint64_t x17 = in2[2]; { const uint64_t x15 = in2[1]; { const uint64_t x13 = in2[0]; - out[0] = ((Const 1099511627710 + x5) - x13); + out[0] = ((0xffffffffbe + x5) - x13); out[1] = ((0xfffffffffe + x7) - x15); out[2] = ((0xfffffffffe + x9) - x17); out[3] = ((0xfffffffffe + x11) - x19); diff --git a/src/Specific/solinas64_2e194m33_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e194m33_5limbs/fesubDisplay.log index af3be2036..77468d508 100644 --- a/src/Specific/solinas64_2e194m33_5limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e194m33_5limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, - (((0x7ffffffffe + x10) - x18), ((0xfffffffffe + x11) - x19), ((0xfffffffffe + x9) - x17), ((0xfffffffffe + x7) - x15), ((Const 1099511627710 + x5) - x13))) + (((0x7ffffffffe + x10) - x18), ((0xfffffffffe + x11) - x19), ((0xfffffffffe + x9) - x17), ((0xfffffffffe + x7) - x15), ((0xffffffffbe + 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_2e194m33_5limbs/freeze.c b/src/Specific/solinas64_2e194m33_5limbs/freeze.c index 5cdddffcf..78d62c5d8 100644 --- a/src/Specific/solinas64_2e194m33_5limbs/freeze.c +++ b/src/Specific/solinas64_2e194m33_5limbs/freeze.c @@ -4,13 +4,13 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) { { 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, Const 549755813855); + { 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, 0x7fffffffdf); { uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x7fffffffff); { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7fffffffff); { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x7fffffffff); { 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 & Const 549755813855); + { uint64_t x25 = (x24 & 0x7fffffffdf); { 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 & 0x7fffffffff); { uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29); diff --git a/src/Specific/solinas64_2e194m33_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e194m33_5limbs/freezeDisplay.log index 214521270..f2db1e405 100644 --- a/src/Specific/solinas64_2e194m33_5limbs/freezeDisplay.log +++ b/src/Specific/solinas64_2e194m33_5limbs/freezeDisplay.log @@ -2,13 +2,13 @@ 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, Const 549755813855); + 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, 0x7fffffffdf); uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x7fffffffff); uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7fffffffff); uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x7fffffffff); 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 & Const 549755813855); + uint64_t x25 = (x24 & 0x7fffffffdf); 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 & 0x7fffffffff); uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29); diff --git a/src/Specific/solinas64_2e198m17_5limbs/fesub.c b/src/Specific/solinas64_2e198m17_5limbs/fesub.c index eefcf8a63..b921e2e67 100644 --- a/src/Specific/solinas64_2e198m17_5limbs/fesub.c +++ b/src/Specific/solinas64_2e198m17_5limbs/fesub.c @@ -9,7 +9,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) { const uint64_t x17 = in2[2]; { const uint64_t x15 = in2[1]; { const uint64_t x13 = in2[0]; - out[0] = ((Const 2199023255518 + x5) - x13); + out[0] = ((0x1ffffffffde + x5) - x13); out[1] = ((0x1fffffffffe + x7) - x15); out[2] = ((0xfffffffffe + x9) - x17); out[3] = ((0x1fffffffffe + x11) - x19); diff --git a/src/Specific/solinas64_2e198m17_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e198m17_5limbs/fesubDisplay.log index 59d635b7b..a9271c01c 100644 --- a/src/Specific/solinas64_2e198m17_5limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e198m17_5limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, - (((0xfffffffffe + x10) - x18), ((0x1fffffffffe + x11) - x19), ((0xfffffffffe + x9) - x17), ((0x1fffffffffe + x7) - x15), ((Const 2199023255518 + x5) - x13))) + (((0xfffffffffe + x10) - x18), ((0x1fffffffffe + x11) - x19), ((0xfffffffffe + x9) - x17), ((0x1fffffffffe + x7) - x15), ((0x1ffffffffde + 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_2e198m17_5limbs/freeze.c b/src/Specific/solinas64_2e198m17_5limbs/freeze.c index d92e169b8..91d69ba0a 100644 --- a/src/Specific/solinas64_2e198m17_5limbs/freeze.c +++ b/src/Specific/solinas64_2e198m17_5limbs/freeze.c @@ -4,13 +4,13 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) { { 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 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 1099511627759); + { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffef); { uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0xffffffffff); { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7fffffffff); { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0xffffffffff); { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x7fffffffff); { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL); - { uint64_t x25 = (x24 & Const 1099511627759); + { uint64_t x25 = (x24 & 0xffffffffef); { uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25); { uint64_t x29 = (x24 & 0xffffffffff); { uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29); diff --git a/src/Specific/solinas64_2e198m17_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e198m17_5limbs/freezeDisplay.log index 65abc09f1..8cc8ad621 100644 --- a/src/Specific/solinas64_2e198m17_5limbs/freezeDisplay.log +++ b/src/Specific/solinas64_2e198m17_5limbs/freezeDisplay.log @@ -2,13 +2,13 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x7, x8, x6, x4, x2)%core, - uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 1099511627759); + uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffef); uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0xffffffffff); uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7fffffffff); uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0xffffffffff); uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x7fffffffff); uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL); - uint64_t x25 = (x24 & Const 1099511627759); + uint64_t x25 = (x24 & 0xffffffffef); uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25); uint64_t x29 = (x24 & 0xffffffffff); uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29); diff --git a/src/Specific/solinas64_2e206m5_5limbs/fesub.c b/src/Specific/solinas64_2e206m5_5limbs/fesub.c index d18b70c32..a55886274 100644 --- a/src/Specific/solinas64_2e206m5_5limbs/fesub.c +++ b/src/Specific/solinas64_2e206m5_5limbs/fesub.c @@ -9,7 +9,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) { const uint64_t x17 = in2[2]; { const uint64_t x15 = in2[1]; { const uint64_t x13 = in2[0]; - out[0] = ((Const 8796093022198 + x5) - x13); + out[0] = ((0x7fffffffff6 + x5) - x13); out[1] = ((0x3fffffffffe + x7) - x15); out[2] = ((0x3fffffffffe + x9) - x17); out[3] = ((0x3fffffffffe + x11) - x19); diff --git a/src/Specific/solinas64_2e206m5_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e206m5_5limbs/fesubDisplay.log index c4085232a..784e4571c 100644 --- a/src/Specific/solinas64_2e206m5_5limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e206m5_5limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, - (((0x3fffffffffe + x10) - x18), ((0x3fffffffffe + x11) - x19), ((0x3fffffffffe + x9) - x17), ((0x3fffffffffe + x7) - x15), ((Const 8796093022198 + x5) - x13))) + (((0x3fffffffffe + x10) - x18), ((0x3fffffffffe + x11) - x19), ((0x3fffffffffe + x9) - x17), ((0x3fffffffffe + x7) - x15), ((0x7fffffffff6 + 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_2e212m29_5limbs/fesub.c b/src/Specific/solinas64_2e212m29_5limbs/fesub.c index 53937519c..45d29efd6 100644 --- a/src/Specific/solinas64_2e212m29_5limbs/fesub.c +++ b/src/Specific/solinas64_2e212m29_5limbs/fesub.c @@ -9,7 +9,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) { const uint64_t x17 = in2[2]; { const uint64_t x15 = in2[1]; { const uint64_t x13 = in2[0]; - out[0] = ((Const 17592186044358 + x5) - x13); + out[0] = ((0xfffffffffc6 + x5) - x13); out[1] = ((0x7fffffffffe + x7) - x15); out[2] = ((0xffffffffffe + x9) - x17); out[3] = ((0x7fffffffffe + x11) - x19); diff --git a/src/Specific/solinas64_2e212m29_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e212m29_5limbs/fesubDisplay.log index 575066130..40ae8723a 100644 --- a/src/Specific/solinas64_2e212m29_5limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e212m29_5limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, - (((0x7fffffffffe + x10) - x18), ((0x7fffffffffe + x11) - x19), ((0xffffffffffe + x9) - x17), ((0x7fffffffffe + x7) - x15), ((Const 17592186044358 + x5) - x13))) + (((0x7fffffffffe + x10) - x18), ((0x7fffffffffe + x11) - x19), ((0xffffffffffe + x9) - x17), ((0x7fffffffffe + x7) - x15), ((0xfffffffffc6 + 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_2e212m29_5limbs/freeze.c b/src/Specific/solinas64_2e212m29_5limbs/freeze.c index 0c8f1e8df..63bd21e1c 100644 --- a/src/Specific/solinas64_2e212m29_5limbs/freeze.c +++ b/src/Specific/solinas64_2e212m29_5limbs/freeze.c @@ -4,13 +4,13 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) { { 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 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 8796093022179); + { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffe3); { uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x3ffffffffff); { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7ffffffffff); { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x3ffffffffff); { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3ffffffffff); { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL); - { uint64_t x25 = (x24 & Const 8796093022179); + { uint64_t x25 = (x24 & 0x7ffffffffe3); { uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25); { uint64_t x29 = (x24 & 0x3ffffffffff); { uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29); diff --git a/src/Specific/solinas64_2e212m29_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e212m29_5limbs/freezeDisplay.log index d43037392..d300528f6 100644 --- a/src/Specific/solinas64_2e212m29_5limbs/freezeDisplay.log +++ b/src/Specific/solinas64_2e212m29_5limbs/freezeDisplay.log @@ -2,13 +2,13 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x7, x8, x6, x4, x2)%core, - uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 8796093022179); + uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffe3); uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x3ffffffffff); uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7ffffffffff); uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x3ffffffffff); uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3ffffffffff); uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL); - uint64_t x25 = (x24 & Const 8796093022179); + uint64_t x25 = (x24 & 0x7ffffffffe3); uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25); uint64_t x29 = (x24 & 0x3ffffffffff); uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29); diff --git a/src/Specific/solinas64_2e213m3_5limbs/fesub.c b/src/Specific/solinas64_2e213m3_5limbs/fesub.c index 2bd522da3..60ab8a21f 100644 --- a/src/Specific/solinas64_2e213m3_5limbs/fesub.c +++ b/src/Specific/solinas64_2e213m3_5limbs/fesub.c @@ -9,7 +9,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) { const uint64_t x17 = in2[2]; { const uint64_t x15 = in2[1]; { const uint64_t x13 = in2[0]; - out[0] = ((Const 17592186044410 + x5) - x13); + out[0] = ((0xffffffffffa + x5) - x13); out[1] = ((0xffffffffffe + x7) - x15); out[2] = ((0x7fffffffffe + x9) - x17); out[3] = ((0xffffffffffe + x11) - x19); diff --git a/src/Specific/solinas64_2e213m3_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e213m3_5limbs/fesubDisplay.log index 6df32d9d1..88bb8871c 100644 --- a/src/Specific/solinas64_2e213m3_5limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e213m3_5limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, - (((0x7fffffffffe + x10) - x18), ((0xffffffffffe + x11) - x19), ((0x7fffffffffe + x9) - x17), ((0xffffffffffe + x7) - x15), ((Const 17592186044410 + x5) - x13))) + (((0x7fffffffffe + x10) - x18), ((0xffffffffffe + x11) - x19), ((0x7fffffffffe + x9) - x17), ((0xffffffffffe + x7) - x15), ((0xffffffffffa + 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_2e213m3_5limbs/freeze.c b/src/Specific/solinas64_2e213m3_5limbs/freeze.c index 0d09f19ba..172111a41 100644 --- a/src/Specific/solinas64_2e213m3_5limbs/freeze.c +++ b/src/Specific/solinas64_2e213m3_5limbs/freeze.c @@ -4,13 +4,13 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) { { 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 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 8796093022205); + { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffd); { uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x7ffffffffff); { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x3ffffffffff); { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x7ffffffffff); { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3ffffffffff); { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL); - { uint64_t x25 = (x24 & Const 8796093022205); + { uint64_t x25 = (x24 & 0x7fffffffffd); { uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25); { uint64_t x29 = (x24 & 0x7ffffffffff); { uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29); diff --git a/src/Specific/solinas64_2e213m3_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e213m3_5limbs/freezeDisplay.log index 99807b6cb..582a7d192 100644 --- a/src/Specific/solinas64_2e213m3_5limbs/freezeDisplay.log +++ b/src/Specific/solinas64_2e213m3_5limbs/freezeDisplay.log @@ -2,13 +2,13 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x7, x8, x6, x4, x2)%core, - uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 8796093022205); + uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffd); uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x7ffffffffff); uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x3ffffffffff); uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x7ffffffffff); uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3ffffffffff); uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL); - uint64_t x25 = (x24 & Const 8796093022205); + uint64_t x25 = (x24 & 0x7fffffffffd); uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25); uint64_t x29 = (x24 & 0x7ffffffffff); uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29); diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/fesub.c b/src/Specific/solinas64_2e216m2e108m1_5limbs/fesub.c index 55ab4e110..92276f1f9 100644 --- a/src/Specific/solinas64_2e216m2e108m1_5limbs/fesub.c +++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/fesub.c @@ -9,9 +9,9 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) { const uint64_t x17 = in2[2]; { const uint64_t x15 = in2[1]; { const uint64_t x13 = in2[0]; - out[0] = ((Const 35184372088830 + x5) - x13); + out[0] = ((0x1ffffffffffe + x5) - x13); out[1] = ((0xffffffffffe + x7) - x15); - out[2] = ((Const 17592181850110 + x9) - x17); + out[2] = ((0xfffffbffffe + x9) - x17); out[3] = ((0xffffffffffe + x11) - x19); out[4] = ((0xffffffffffe + x10) - x18); }}}}}}}}}} diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e216m2e108m1_5limbs/fesubDisplay.log index 4c3aff559..354b61ffe 100644 --- a/src/Specific/solinas64_2e216m2e108m1_5limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, - (((0xffffffffffe + x10) - x18), ((0xffffffffffe + x11) - x19), ((Const 17592181850110 + x9) - x17), ((0xffffffffffe + x7) - x15), ((Const 35184372088830 + x5) - x13))) + (((0xffffffffffe + x10) - x18), ((0xffffffffffe + x11) - x19), ((0xfffffbffffe + x9) - x17), ((0xffffffffffe + x7) - x15), ((0x1ffffffffffe + 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_2e221m3_5limbs/fesub.c b/src/Specific/solinas64_2e221m3_5limbs/fesub.c index 23ba6c7c8..555e77138 100644 --- a/src/Specific/solinas64_2e221m3_5limbs/fesub.c +++ b/src/Specific/solinas64_2e221m3_5limbs/fesub.c @@ -9,10 +9,10 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) { const uint64_t x17 = in2[2]; { const uint64_t x15 = in2[1]; { const uint64_t x13 = in2[0]; - out[0] = ((Const 70368744177658 + x5) - x13); - out[1] = ((Const 35184372088830 + x7) - x15); - out[2] = ((Const 35184372088830 + x9) - x17); - out[3] = ((Const 35184372088830 + x11) - x19); - out[4] = ((Const 35184372088830 + x10) - x18); + out[0] = ((0x3ffffffffffa + x5) - x13); + out[1] = ((0x1ffffffffffe + x7) - x15); + out[2] = ((0x1ffffffffffe + x9) - x17); + out[3] = ((0x1ffffffffffe + x11) - x19); + out[4] = ((0x1ffffffffffe + x10) - x18); }}}}}}}}}} } diff --git a/src/Specific/solinas64_2e221m3_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e221m3_5limbs/fesubDisplay.log index 72bc5753d..ff9597411 100644 --- a/src/Specific/solinas64_2e221m3_5limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e221m3_5limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, - (((Const 35184372088830 + x10) - x18), ((Const 35184372088830 + x11) - x19), ((Const 35184372088830 + x9) - x17), ((Const 35184372088830 + x7) - x15), ((Const 70368744177658 + x5) - x13))) + (((0x1ffffffffffe + x10) - x18), ((0x1ffffffffffe + x11) - x19), ((0x1ffffffffffe + x9) - x17), ((0x1ffffffffffe + x7) - x15), ((0x3ffffffffffa + 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_2e222m117_5limbs/fesub.c b/src/Specific/solinas64_2e222m117_5limbs/fesub.c index c3a416f25..c2a38ad49 100644 --- a/src/Specific/solinas64_2e222m117_5limbs/fesub.c +++ b/src/Specific/solinas64_2e222m117_5limbs/fesub.c @@ -9,10 +9,10 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) { const uint64_t x17 = in2[2]; { const uint64_t x15 = in2[1]; { const uint64_t x13 = in2[0]; - out[0] = ((Const 70368744177430 + x5) - x13); - out[1] = ((Const 35184372088830 + x7) - x15); - out[2] = ((Const 70368744177662 + x9) - x17); - out[3] = ((Const 35184372088830 + x11) - x19); - out[4] = ((Const 35184372088830 + x10) - x18); + out[0] = ((0x3fffffffff16 + x5) - x13); + out[1] = ((0x1ffffffffffe + x7) - x15); + out[2] = ((0x3ffffffffffe + x9) - x17); + out[3] = ((0x1ffffffffffe + x11) - x19); + out[4] = ((0x1ffffffffffe + x10) - x18); }}}}}}}}}} } diff --git a/src/Specific/solinas64_2e222m117_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e222m117_5limbs/fesubDisplay.log index 88fd72c73..ccfc6bccd 100644 --- a/src/Specific/solinas64_2e222m117_5limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e222m117_5limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, - (((Const 35184372088830 + x10) - x18), ((Const 35184372088830 + x11) - x19), ((Const 70368744177662 + x9) - x17), ((Const 35184372088830 + x7) - x15), ((Const 70368744177430 + x5) - x13))) + (((0x1ffffffffffe + x10) - x18), ((0x1ffffffffffe + x11) - x19), ((0x3ffffffffffe + x9) - x17), ((0x1ffffffffffe + x7) - x15), ((0x3fffffffff16 + 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_2e222m117_5limbs/freeze.c b/src/Specific/solinas64_2e222m117_5limbs/freeze.c index e4e3dcab2..7905a55d4 100644 --- a/src/Specific/solinas64_2e222m117_5limbs/freeze.c +++ b/src/Specific/solinas64_2e222m117_5limbs/freeze.c @@ -4,13 +4,13 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) { { 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 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 35184372088715); + { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffff8b); { uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0xfffffffffff); { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x1fffffffffff); { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0xfffffffffff); { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0xfffffffffff); { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL); - { uint64_t x25 = (x24 & Const 35184372088715); + { uint64_t x25 = (x24 & 0x1fffffffff8b); { uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 45 (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 = Op (Syntax.AddWithGetCarry 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29); diff --git a/src/Specific/solinas64_2e222m117_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e222m117_5limbs/freezeDisplay.log index 22783f4fd..ee234450a 100644 --- a/src/Specific/solinas64_2e222m117_5limbs/freezeDisplay.log +++ b/src/Specific/solinas64_2e222m117_5limbs/freezeDisplay.log @@ -2,13 +2,13 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x7, x8, x6, x4, x2)%core, - uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 35184372088715); + uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffff8b); uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0xfffffffffff); uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x1fffffffffff); uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0xfffffffffff); uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0xfffffffffff); uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL); - uint64_t x25 = (x24 & Const 35184372088715); + uint64_t x25 = (x24 & 0x1fffffffff8b); uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 45 (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 = Op (Syntax.AddWithGetCarry 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29); diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/freeze.c b/src/Specific/solinas64_2e224m2e96p1_5limbs/freeze.c index 92007cb82..9bd4af647 100644 --- a/src/Specific/solinas64_2e224m2e96p1_5limbs/freeze.c +++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/freeze.c @@ -6,14 +6,14 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) { { const uint64_t x2 = in1[0]; { uint64_t x10, ℤ x11 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (0x0, Return x2, 0x1); { uint64_t x13, ℤ x14 = Op (Syntax.SubWithGetBorrow 45 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (Return x11, Return x4, 0x0); - { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 45 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, Const 35184372088768); + { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 45 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x1fffffffffc0); { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x1fffffffffff); { uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0xfffffffffff); { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL); { uint8_t x25 = ((uint8_t)x24 & 0x1); { uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25); { uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, 0x0); - { uint64_t x32 = (x24 & Const 35184372088768); + { uint64_t x32 = (x24 & 0x1fffffffffc0); { uint64_t x34, uint8_t x35 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x16, Return x32); { uint64_t x36 = (x24 & 0x1fffffffffff); { uint64_t x38, uint8_t x39 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x19, Return x36); diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e224m2e96p1_5limbs/freezeDisplay.log index decdaa341..86c5ce8e8 100644 --- a/src/Specific/solinas64_2e224m2e96p1_5limbs/freezeDisplay.log +++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/freezeDisplay.log @@ -4,14 +4,14 @@ Interp-η λ '(x7, x8, x6, x4, x2)%core, uint64_t x10, ℤ x11 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (0x0, Return x2, 0x1); uint64_t x13, ℤ x14 = Op (Syntax.SubWithGetBorrow 45 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (Return x11, Return x4, 0x0); - uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 45 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, Const 35184372088768); + uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 45 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x1fffffffffc0); uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x1fffffffffff); uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0xfffffffffff); uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL); uint8_t x25 = ((uint8_t)x24 & 0x1); uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25); uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, 0x0); - uint64_t x32 = (x24 & Const 35184372088768); + uint64_t x32 = (x24 & 0x1fffffffffc0); uint64_t x34, uint8_t x35 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x16, Return x32); uint64_t x36 = (x24 & 0x1fffffffffff); uint64_t x38, uint8_t x39 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x19, Return x36); diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/feadd.c b/src/Specific/solinas64_2e224m2e96p1_6limbs/feadd.c new file mode 100644 index 000000000..4a6bfb999 --- /dev/null +++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_2e224m2e96p1_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e224m2e96p1_6limbs/feaddDisplay.log new file mode 100644 index 000000000..e32995a81 --- /dev/null +++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_2e224m2e96p1_6limbs/freeze.c b/src/Specific/solinas64_2e224m2e96p1_6limbs/freeze.c new file mode 100644 index 000000000..ceb4a7f2a --- /dev/null +++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/freeze.c @@ -0,0 +1,33 @@ +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, ℤ x13 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (0x0, Return x2, 0x1); + { uint64_t x15, ℤ x16 = Op (Syntax.SubWithGetBorrow 37 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (Return x13, Return x4, 0x0); + { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 37 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x1fffe00000); + { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3fffffffff); + { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x1fffffffff); + { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffffffff); + { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + { uint8_t x30 = ((uint8_t)x29 & 0x1); + { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30); + { uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, 0x0); + { uint64_t x37 = (x29 & 0x1fffe00000); + { uint64_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x18, Return x37); + { uint64_t x41 = (x29 & 0x3fffffffff); + { uint64_t x43, uint8_t x44 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x21, Return x41); + { uint64_t x45 = (x29 & 0x1fffffffff); + { uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x44, Return x24, Return x45); + { uint64_t x49 = (x29 & 0x1fffffffff); + { uint64_t x51, uint8_t _ = Op (Syntax.AddWithGetCarry 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x27, Return x49); + out[0] = x32; + out[1] = x35; + out[2] = x39; + out[3] = x43; + out[4] = x47; + out[5] = x51; + }}}}}}}}}}}}}}}}}}}}}}}} +} diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e224m2e96p1_6limbs/freezeDisplay.log new file mode 100644 index 000000000..b64dbd5e4 --- /dev/null +++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/freezeDisplay.log @@ -0,0 +1,25 @@ +λ x : word64 * word64 * word64 * word64 * word64 * word64, +Interp-η +(λ var : Syntax.base_type → Type, + λ '(x9, x10, x8, x6, x4, x2)%core, + uint64_t x12, ℤ x13 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (0x0, Return x2, 0x1); + uint64_t x15, ℤ x16 = Op (Syntax.SubWithGetBorrow 37 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (Return x13, Return x4, 0x0); + uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 37 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x1fffe00000); + uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3fffffffff); + uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x1fffffffff); + uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffffffff); + uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + uint8_t x30 = ((uint8_t)x29 & 0x1); + uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30); + uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, 0x0); + uint64_t x37 = (x29 & 0x1fffe00000); + uint64_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x18, Return x37); + uint64_t x41 = (x29 & 0x3fffffffff); + uint64_t x43, uint8_t x44 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x21, Return x41); + uint64_t x45 = (x29 & 0x1fffffffff); + uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x44, Return x24, Return x45); + uint64_t x49 = (x29 & 0x1fffffffff); + uint64_t x51, uint8_t _ = Op (Syntax.AddWithGetCarry 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x27, Return x49); + (Return x51, Return x47, Return x43, Return x39, Return x35, 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_2e226m5_5limbs/fesub.c b/src/Specific/solinas64_2e226m5_5limbs/fesub.c index 33f348616..3abd171ea 100644 --- a/src/Specific/solinas64_2e226m5_5limbs/fesub.c +++ b/src/Specific/solinas64_2e226m5_5limbs/fesub.c @@ -9,10 +9,10 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) { const uint64_t x17 = in2[2]; { const uint64_t x15 = in2[1]; { const uint64_t x13 = in2[0]; - out[0] = ((Const 140737488355318 + x5) - x13); - out[1] = ((Const 70368744177662 + x7) - x15); - out[2] = ((Const 70368744177662 + x9) - x17); - out[3] = ((Const 70368744177662 + x11) - x19); - out[4] = ((Const 70368744177662 + x10) - x18); + out[0] = ((0x7ffffffffff6 + x5) - x13); + out[1] = ((0x3ffffffffffe + x7) - x15); + out[2] = ((0x3ffffffffffe + x9) - x17); + out[3] = ((0x3ffffffffffe + x11) - x19); + out[4] = ((0x3ffffffffffe + x10) - x18); }}}}}}}}}} } diff --git a/src/Specific/solinas64_2e226m5_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e226m5_5limbs/fesubDisplay.log index d120587a3..c91c66cd3 100644 --- a/src/Specific/solinas64_2e226m5_5limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e226m5_5limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, - (((Const 70368744177662 + x10) - x18), ((Const 70368744177662 + x11) - x19), ((Const 70368744177662 + x9) - x17), ((Const 70368744177662 + x7) - x15), ((Const 140737488355318 + x5) - x13))) + (((0x3ffffffffffe + x10) - x18), ((0x3ffffffffffe + x11) - x19), ((0x3ffffffffffe + x9) - x17), ((0x3ffffffffffe + x7) - x15), ((0x7ffffffffff6 + 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_2e230m27_5limbs/fesub.c b/src/Specific/solinas64_2e230m27_5limbs/fesub.c index 640b6ec3b..134570c81 100644 --- a/src/Specific/solinas64_2e230m27_5limbs/fesub.c +++ b/src/Specific/solinas64_2e230m27_5limbs/fesub.c @@ -9,7 +9,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) { const uint64_t x17 = in2[2]; { const uint64_t x15 = in2[1]; { const uint64_t x13 = in2[0]; - out[0] = ((Const 140737488355274 + x5) - x13); + out[0] = ((0x7fffffffffca + x5) - x13); out[1] = ((0x7ffffffffffe + x7) - x15); out[2] = ((0x7ffffffffffe + x9) - x17); out[3] = ((0x7ffffffffffe + x11) - x19); diff --git a/src/Specific/solinas64_2e230m27_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e230m27_5limbs/fesubDisplay.log index caf713a08..9a32db234 100644 --- a/src/Specific/solinas64_2e230m27_5limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e230m27_5limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, - (((0x7ffffffffffe + x10) - x18), ((0x7ffffffffffe + x11) - x19), ((0x7ffffffffffe + x9) - x17), ((0x7ffffffffffe + x7) - x15), ((Const 140737488355274 + x5) - x13))) + (((0x7ffffffffffe + x10) - x18), ((0x7ffffffffffe + x11) - x19), ((0x7ffffffffffe + x9) - x17), ((0x7ffffffffffe + x7) - x15), ((0x7fffffffffca + 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_4limbs/fesub.c b/src/Specific/solinas64_2e235m15_4limbs/fesub.c index bff07d25d..6a22e87ef 100644 --- a/src/Specific/solinas64_2e235m15_4limbs/fesub.c +++ b/src/Specific/solinas64_2e235m15_4limbs/fesub.c @@ -7,7 +7,7 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) { const uint64_t x15 = in2[2]; { const uint64_t x13 = in2[1]; { const uint64_t x11 = in2[0]; - out[0] = ((Const 1152921504606846946 + x5) - x11); + out[0] = ((0xfffffffffffffe2 + x5) - x11); out[1] = ((0xffffffffffffffe + x7) - x13); out[2] = ((0xffffffffffffffe + x9) - x15); out[3] = ((0x7fffffffffffffe + x8) - x14); diff --git a/src/Specific/solinas64_2e235m15_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e235m15_4limbs/fesubDisplay.log index 356050985..46f99dab1 100644 --- a/src/Specific/solinas64_2e235m15_4limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e235m15_4limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core, - (((0x7fffffffffffffe + x8) - x14), ((0xffffffffffffffe + x9) - x15), ((0xffffffffffffffe + x7) - x13), ((Const 1152921504606846946 + x5) - x11))) + (((0x7fffffffffffffe + x8) - x14), ((0xffffffffffffffe + x9) - x15), ((0xffffffffffffffe + x7) - x13), ((0xfffffffffffffe2 + 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_2e235m15_4limbs/freeze.c b/src/Specific/solinas64_2e235m15_4limbs/freeze.c index 8e7752601..9d95407c0 100644 --- a/src/Specific/solinas64_2e235m15_4limbs/freeze.c +++ b/src/Specific/solinas64_2e235m15_4limbs/freeze.c @@ -3,12 +3,12 @@ static void freeze(uint64_t out[4], const uint64_t in1[4]) { { 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 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 576460752303423473); + { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffffff1); { uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x7ffffffffffffff); { 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)) (Return x12, Return x6, 0x7ffffffffffffff); { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x3ffffffffffffff); { uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL); - { uint64_t x20 = (x19 & Const 576460752303423473); + { uint64_t x20 = (x19 & 0x7fffffffffffff1); { uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20); { uint64_t x24 = (x19 & 0x7ffffffffffffff); { uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24); diff --git a/src/Specific/solinas64_2e235m15_4limbs/freezeDisplay.log b/src/Specific/solinas64_2e235m15_4limbs/freezeDisplay.log index 14bfc493c..b26bb700c 100644 --- a/src/Specific/solinas64_2e235m15_4limbs/freezeDisplay.log +++ b/src/Specific/solinas64_2e235m15_4limbs/freezeDisplay.log @@ -2,12 +2,12 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x5, x6, x4, x2)%core, - uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 576460752303423473); + uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffffff1); uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x7ffffffffffffff); 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)) (Return x12, Return x6, 0x7ffffffffffffff); uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x3ffffffffffffff); uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL); - uint64_t x20 = (x19 & Const 576460752303423473); + uint64_t x20 = (x19 & 0x7fffffffffffff1); uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20); uint64_t x24 = (x19 & 0x7ffffffffffffff); uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24); diff --git a/src/Specific/solinas64_2e243m9_5limbs/fesub.c b/src/Specific/solinas64_2e243m9_5limbs/fesub.c index 7929f8406..0c1ddafdb 100644 --- a/src/Specific/solinas64_2e243m9_5limbs/fesub.c +++ b/src/Specific/solinas64_2e243m9_5limbs/fesub.c @@ -9,7 +9,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) { const uint64_t x17 = in2[2]; { const uint64_t x15 = in2[1]; { const uint64_t x13 = in2[0]; - out[0] = ((Const 1125899906842606 + x5) - x13); + out[0] = ((0x3ffffffffffee + x5) - x13); out[1] = ((0x3fffffffffffe + x7) - x15); out[2] = ((0x1fffffffffffe + x9) - x17); out[3] = ((0x3fffffffffffe + x11) - x19); diff --git a/src/Specific/solinas64_2e243m9_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e243m9_5limbs/fesubDisplay.log index ad3326534..1a4484124 100644 --- a/src/Specific/solinas64_2e243m9_5limbs/fesubDisplay.log +++ b/src/Specific/solinas64_2e243m9_5limbs/fesubDisplay.log @@ -2,6 +2,6 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, - (((0x1fffffffffffe + x10) - x18), ((0x3fffffffffffe + x11) - x19), ((0x1fffffffffffe + x9) - x17), ((0x3fffffffffffe + x7) - x15), ((Const 1125899906842606 + x5) - x13))) + (((0x1fffffffffffe + x10) - x18), ((0x3fffffffffffe + x11) - x19), ((0x1fffffffffffe + x9) - x17), ((0x3fffffffffffe + x7) - x15), ((0x3ffffffffffee + 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_2e243m9_5limbs/freeze.c b/src/Specific/solinas64_2e243m9_5limbs/freeze.c index 9ab331db9..2f3cac0e8 100644 --- a/src/Specific/solinas64_2e243m9_5limbs/freeze.c +++ b/src/Specific/solinas64_2e243m9_5limbs/freeze.c @@ -4,13 +4,13 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) { { 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 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 562949953421303); + { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffff7); { uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x1ffffffffffff); { 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)) (Return x14, Return x6, 0xffffffffffff); { uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x1ffffffffffff); { 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 x7, 0xffffffffffff); { uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL); - { uint64_t x25 = (x24 & Const 562949953421303); + { uint64_t x25 = (x24 & 0x1fffffffffff7); { uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25); { uint64_t x29 = (x24 & 0x1ffffffffffff); { uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29); diff --git a/src/Specific/solinas64_2e243m9_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e243m9_5limbs/freezeDisplay.log index a1e031534..adf7a911b 100644 --- a/src/Specific/solinas64_2e243m9_5limbs/freezeDisplay.log +++ b/src/Specific/solinas64_2e243m9_5limbs/freezeDisplay.log @@ -2,13 +2,13 @@ Interp-η (λ var : Syntax.base_type → Type, λ '(x7, x8, x6, x4, x2)%core, - uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 562949953421303); + uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffff7); uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x1ffffffffffff); 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)) (Return x14, Return x6, 0xffffffffffff); uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x1ffffffffffff); 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 x7, 0xffffffffffff); uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL); - uint64_t x25 = (x24 & Const 562949953421303); + uint64_t x25 = (x24 & 0x1fffffffffff7); uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25); uint64_t x29 = (x24 & 0x1ffffffffffff); uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29); diff --git a/src/Specific/solinas64_2e243m9_6limbs/feadd.c b/src/Specific/solinas64_2e243m9_6limbs/feadd.c new file mode 100644 index 000000000..4a6bfb999 --- /dev/null +++ b/src/Specific/solinas64_2e243m9_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e243m9_6limbs/feaddDisplay.log new file mode 100644 index 000000000..e32995a81 --- /dev/null +++ b/src/Specific/solinas64_2e243m9_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/femul.c b/src/Specific/solinas64_2e243m9_6limbs/femul.c new file mode 100644 index 000000000..1f3dd625a --- /dev/null +++ b/src/Specific/solinas64_2e243m9_6limbs/femul.c @@ -0,0 +1,50 @@ +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_6limbs/femulDisplay.log b/src/Specific/solinas64_2e243m9_6limbs/femulDisplay.log new file mode 100644 index 000000000..6b6b1ee55 --- /dev/null +++ b/src/Specific/solinas64_2e243m9_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesquare.c b/src/Specific/solinas64_2e243m9_6limbs/fesquare.c new file mode 100644 index 000000000..c1d0d52c6 --- /dev/null +++ b/src/Specific/solinas64_2e243m9_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e243m9_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..5b9f6a27c --- /dev/null +++ b/src/Specific/solinas64_2e243m9_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesub.c b/src/Specific/solinas64_2e243m9_6limbs/fesub.c new file mode 100644 index 000000000..50c317b29 --- /dev/null +++ b/src/Specific/solinas64_2e243m9_6limbs/fesub.c @@ -0,0 +1,21 @@ +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_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e243m9_6limbs/fesubDisplay.log new file mode 100644 index 000000000..22e0778d0 --- /dev/null +++ b/src/Specific/solinas64_2e243m9_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/freeze.c b/src/Specific/solinas64_2e243m9_6limbs/freeze.c new file mode 100644 index 000000000..56fe99d55 --- /dev/null +++ b/src/Specific/solinas64_2e243m9_6limbs/freeze.c @@ -0,0 +1,34 @@ +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_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e243m9_6limbs/freezeDisplay.log new file mode 100644 index 000000000..2240ec6b1 --- /dev/null +++ b/src/Specific/solinas64_2e243m9_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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_2e251m9_6limbs/feadd.c b/src/Specific/solinas64_2e251m9_6limbs/feadd.c new file mode 100644 index 000000000..4a6bfb999 --- /dev/null +++ b/src/Specific/solinas64_2e251m9_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_2e251m9_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e251m9_6limbs/feaddDisplay.log new file mode 100644 index 000000000..e32995a81 --- /dev/null +++ b/src/Specific/solinas64_2e251m9_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_2e251m9_6limbs/femul.c b/src/Specific/solinas64_2e251m9_6limbs/femul.c new file mode 100644 index 000000000..3bc17a4ad --- /dev/null +++ b/src/Specific/solinas64_2e251m9_6limbs/femul.c @@ -0,0 +1,50 @@ +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))))) + (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 * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23))))); + { uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (0x9 * ((0x2 * ((uint128_t)x11 * x22)) + ((0x2 * ((uint128_t)x13 * x23)) + (0x2 * ((uint128_t)x12 * x21)))))); + { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x9 * ((0x2 * ((uint128_t)x9 * x22)) + ((0x2 * ((uint128_t)x11 * x23)) + ((0x2 * ((uint128_t)x13 * x21)) + (0x2 * ((uint128_t)x12 * x19))))))); + { uint128_t x29 = (((uint128_t)x5 * x15) + (0x9 * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + ((0x2 * ((uint128_t)x11 * x21)) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17)))))))); + { uint64_t x30 = (uint64_t) (x29 >> 0x2a); + { uint64_t x31 = ((uint64_t)x29 & 0x3ffffffffff); + { uint128_t x32 = (x30 + x28); + { uint64_t x33 = (uint64_t) (x32 >> 0x2a); + { uint64_t x34 = ((uint64_t)x32 & 0x3ffffffffff); + { uint128_t x35 = (x33 + x27); + { uint64_t x36 = (uint64_t) (x35 >> 0x2a); + { uint64_t x37 = ((uint64_t)x35 & 0x3ffffffffff); + { uint128_t x38 = (x36 + x26); + { uint64_t x39 = (uint64_t) (x38 >> 0x2a); + { uint64_t x40 = ((uint64_t)x38 & 0x3ffffffffff); + { uint128_t x41 = (x39 + x25); + { uint64_t x42 = (uint64_t) (x41 >> 0x2a); + { uint64_t x43 = ((uint64_t)x41 & 0x3ffffffffff); + { uint128_t x44 = (x42 + x24); + { uint64_t x45 = (uint64_t) (x44 >> 0x29); + { uint64_t x46 = ((uint64_t)x44 & 0x1ffffffffff); + { uint64_t x47 = (x31 + (0x9 * x45)); + { uint64_t x48 = (x47 >> 0x2a); + { uint64_t x49 = (x47 & 0x3ffffffffff); + { uint64_t x50 = (x48 + x34); + { uint64_t x51 = (x50 >> 0x2a); + { uint64_t x52 = (x50 & 0x3ffffffffff); + 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_2e251m9_6limbs/femulDisplay.log b/src/Specific/solinas64_2e251m9_6limbs/femulDisplay.log new file mode 100644 index 000000000..439f15a88 --- /dev/null +++ b/src/Specific/solinas64_2e251m9_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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))))) + (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 * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23))))); + uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (0x9 * ((0x2 * ((uint128_t)x11 * x22)) + ((0x2 * ((uint128_t)x13 * x23)) + (0x2 * ((uint128_t)x12 * x21)))))); + uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x9 * ((0x2 * ((uint128_t)x9 * x22)) + ((0x2 * ((uint128_t)x11 * x23)) + ((0x2 * ((uint128_t)x13 * x21)) + (0x2 * ((uint128_t)x12 * x19))))))); + uint128_t x29 = (((uint128_t)x5 * x15) + (0x9 * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + ((0x2 * ((uint128_t)x11 * x21)) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17)))))))); + uint64_t x30 = (uint64_t) (x29 >> 0x2a); + uint64_t x31 = ((uint64_t)x29 & 0x3ffffffffff); + uint128_t x32 = (x30 + x28); + uint64_t x33 = (uint64_t) (x32 >> 0x2a); + uint64_t x34 = ((uint64_t)x32 & 0x3ffffffffff); + uint128_t x35 = (x33 + x27); + uint64_t x36 = (uint64_t) (x35 >> 0x2a); + uint64_t x37 = ((uint64_t)x35 & 0x3ffffffffff); + uint128_t x38 = (x36 + x26); + uint64_t x39 = (uint64_t) (x38 >> 0x2a); + uint64_t x40 = ((uint64_t)x38 & 0x3ffffffffff); + uint128_t x41 = (x39 + x25); + uint64_t x42 = (uint64_t) (x41 >> 0x2a); + uint64_t x43 = ((uint64_t)x41 & 0x3ffffffffff); + uint128_t x44 = (x42 + x24); + uint64_t x45 = (uint64_t) (x44 >> 0x29); + uint64_t x46 = ((uint64_t)x44 & 0x1ffffffffff); + uint64_t x47 = (x31 + (0x9 * x45)); + uint64_t x48 = (x47 >> 0x2a); + uint64_t x49 = (x47 & 0x3ffffffffff); + uint64_t x50 = (x48 + x34); + uint64_t x51 = (x50 >> 0x2a); + uint64_t x52 = (x50 & 0x3ffffffffff); + 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_2e251m9_6limbs/fesquare.c b/src/Specific/solinas64_2e251m9_6limbs/fesquare.c new file mode 100644 index 000000000..d638fab8c --- /dev/null +++ b/src/Specific/solinas64_2e251m9_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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))))) + (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 * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10))))); + { uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x9 * ((0x2 * ((uint128_t)x8 * x9)) + ((0x2 * ((uint128_t)x10 * x10)) + (0x2 * ((uint128_t)x9 * x8)))))); + { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * ((0x2 * ((uint128_t)x6 * x9)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + (0x2 * ((uint128_t)x9 * x6))))))); + { uint128_t x16 = (((uint128_t)x2 * x2) + (0x9 * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4)))))))); + { uint64_t x17 = (uint64_t) (x16 >> 0x2a); + { uint64_t x18 = ((uint64_t)x16 & 0x3ffffffffff); + { uint128_t x19 = (x17 + x15); + { uint64_t x20 = (uint64_t) (x19 >> 0x2a); + { uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffff); + { uint128_t x22 = (x20 + x14); + { uint64_t x23 = (uint64_t) (x22 >> 0x2a); + { uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffff); + { uint128_t x25 = (x23 + x13); + { uint64_t x26 = (uint64_t) (x25 >> 0x2a); + { uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffff); + { uint128_t x28 = (x26 + x12); + { uint64_t x29 = (uint64_t) (x28 >> 0x2a); + { uint64_t x30 = ((uint64_t)x28 & 0x3ffffffffff); + { uint128_t x31 = (x29 + x11); + { uint64_t x32 = (uint64_t) (x31 >> 0x29); + { uint64_t x33 = ((uint64_t)x31 & 0x1ffffffffff); + { uint64_t x34 = (x18 + (0x9 * x32)); + { uint64_t x35 = (x34 >> 0x2a); + { uint64_t x36 = (x34 & 0x3ffffffffff); + { uint64_t x37 = (x35 + x21); + { uint64_t x38 = (x37 >> 0x2a); + { uint64_t x39 = (x37 & 0x3ffffffffff); + 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_2e251m9_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e251m9_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..a59d1e7f0 --- /dev/null +++ b/src/Specific/solinas64_2e251m9_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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))))) + (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 * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10))))); + uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x9 * ((0x2 * ((uint128_t)x8 * x9)) + ((0x2 * ((uint128_t)x10 * x10)) + (0x2 * ((uint128_t)x9 * x8)))))); + uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * ((0x2 * ((uint128_t)x6 * x9)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + (0x2 * ((uint128_t)x9 * x6))))))); + uint128_t x16 = (((uint128_t)x2 * x2) + (0x9 * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4)))))))); + uint64_t x17 = (uint64_t) (x16 >> 0x2a); + uint64_t x18 = ((uint64_t)x16 & 0x3ffffffffff); + uint128_t x19 = (x17 + x15); + uint64_t x20 = (uint64_t) (x19 >> 0x2a); + uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffff); + uint128_t x22 = (x20 + x14); + uint64_t x23 = (uint64_t) (x22 >> 0x2a); + uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffff); + uint128_t x25 = (x23 + x13); + uint64_t x26 = (uint64_t) (x25 >> 0x2a); + uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffff); + uint128_t x28 = (x26 + x12); + uint64_t x29 = (uint64_t) (x28 >> 0x2a); + uint64_t x30 = ((uint64_t)x28 & 0x3ffffffffff); + uint128_t x31 = (x29 + x11); + uint64_t x32 = (uint64_t) (x31 >> 0x29); + uint64_t x33 = ((uint64_t)x31 & 0x1ffffffffff); + uint64_t x34 = (x18 + (0x9 * x32)); + uint64_t x35 = (x34 >> 0x2a); + uint64_t x36 = (x34 & 0x3ffffffffff); + uint64_t x37 = (x35 + x21); + uint64_t x38 = (x37 >> 0x2a); + uint64_t x39 = (x37 & 0x3ffffffffff); + 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_2e251m9_6limbs/fesub.c b/src/Specific/solinas64_2e251m9_6limbs/fesub.c new file mode 100644 index 000000000..dcbe60b66 --- /dev/null +++ b/src/Specific/solinas64_2e251m9_6limbs/fesub.c @@ -0,0 +1,21 @@ +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] = ((Const 8796093022190 + x5) - x15); + out[1] = ((0x7fffffffffe + x7) - x17); + out[2] = ((0x7fffffffffe + x9) - x19); + out[3] = ((0x7fffffffffe + x11) - x21); + out[4] = ((0x7fffffffffe + x13) - x23); + out[5] = ((0x3fffffffffe + x12) - x22); + }}}}}}}}}}}} +} diff --git a/src/Specific/solinas64_2e251m9_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e251m9_6limbs/fesubDisplay.log new file mode 100644 index 000000000..f58a21075 --- /dev/null +++ b/src/Specific/solinas64_2e251m9_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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, + (((0x3fffffffffe + x12) - x22), ((0x7fffffffffe + x13) - x23), ((0x7fffffffffe + x11) - x21), ((0x7fffffffffe + x9) - x19), ((0x7fffffffffe + x7) - x17), ((Const 8796093022190 + 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_2e251m9_6limbs/freeze.c b/src/Specific/solinas64_2e251m9_6limbs/freeze.c new file mode 100644 index 000000000..82690b8d6 --- /dev/null +++ b/src/Specific/solinas64_2e251m9_6limbs/freeze.c @@ -0,0 +1,34 @@ +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 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 4398046511095); + { 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 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffffffff); + { 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 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x1ffffffffff); + { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + { uint64_t x30 = (x29 & Const 4398046511095); + { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 42 (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 & 0x3ffffffffff); + { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 42 (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 & 0x1ffffffffff); + { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 41 (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_2e251m9_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e251m9_6limbs/freezeDisplay.log new file mode 100644 index 000000000..262d009bf --- /dev/null +++ b/src/Specific/solinas64_2e251m9_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 4398046511095); + 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 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffffffff); + 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 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x1ffffffffff); + uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + uint64_t x30 = (x29 & Const 4398046511095); + uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 42 (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 & 0x3ffffffffff); + uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 42 (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 & 0x1ffffffffff); + uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 41 (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_2e255m19_6limbs/feadd.c b/src/Specific/solinas64_2e255m19_6limbs/feadd.c new file mode 100644 index 000000000..4a6bfb999 --- /dev/null +++ b/src/Specific/solinas64_2e255m19_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_2e255m19_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e255m19_6limbs/feaddDisplay.log new file mode 100644 index 000000000..e32995a81 --- /dev/null +++ b/src/Specific/solinas64_2e255m19_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_2e255m19_6limbs/femul.c b/src/Specific/solinas64_2e255m19_6limbs/femul.c new file mode 100644 index 000000000..c99e800f9 --- /dev/null +++ b/src/Specific/solinas64_2e255m19_6limbs/femul.c @@ -0,0 +1,50 @@ +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))))) + (0x13 * (0x2 * ((uint128_t)x12 * x22)))); + { uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x13 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23)))); + { uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x13 * ((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)) + (0x13 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19)))))); + { uint128_t x29 = (((uint128_t)x5 * x15) + (0x13 * ((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 >> 0x2b); + { uint64_t x31 = ((uint64_t)x29 & 0x7ffffffffff); + { uint128_t x32 = (x30 + x28); + { uint64_t x33 = (uint64_t) (x32 >> 0x2a); + { uint64_t x34 = ((uint64_t)x32 & 0x3ffffffffff); + { uint128_t x35 = (x33 + x27); + { uint64_t x36 = (uint64_t) (x35 >> 0x2b); + { uint64_t x37 = ((uint64_t)x35 & 0x7ffffffffff); + { uint128_t x38 = (x36 + x26); + { uint64_t x39 = (uint64_t) (x38 >> 0x2a); + { uint64_t x40 = ((uint64_t)x38 & 0x3ffffffffff); + { uint128_t x41 = (x39 + x25); + { uint64_t x42 = (uint64_t) (x41 >> 0x2b); + { uint64_t x43 = ((uint64_t)x41 & 0x7ffffffffff); + { uint128_t x44 = (x42 + x24); + { uint64_t x45 = (uint64_t) (x44 >> 0x2a); + { uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffff); + { uint64_t x47 = (x31 + (0x13 * x45)); + { uint64_t x48 = (x47 >> 0x2b); + { uint64_t x49 = (x47 & 0x7ffffffffff); + { uint64_t x50 = (x48 + x34); + { uint64_t x51 = (x50 >> 0x2a); + { uint64_t x52 = (x50 & 0x3ffffffffff); + 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_2e255m19_6limbs/femulDisplay.log b/src/Specific/solinas64_2e255m19_6limbs/femulDisplay.log new file mode 100644 index 000000000..b29b13537 --- /dev/null +++ b/src/Specific/solinas64_2e255m19_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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))))) + (0x13 * (0x2 * ((uint128_t)x12 * x22)))); + uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x13 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23)))); + uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x13 * ((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)) + (0x13 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19)))))); + uint128_t x29 = (((uint128_t)x5 * x15) + (0x13 * ((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 >> 0x2b); + uint64_t x31 = ((uint64_t)x29 & 0x7ffffffffff); + uint128_t x32 = (x30 + x28); + uint64_t x33 = (uint64_t) (x32 >> 0x2a); + uint64_t x34 = ((uint64_t)x32 & 0x3ffffffffff); + uint128_t x35 = (x33 + x27); + uint64_t x36 = (uint64_t) (x35 >> 0x2b); + uint64_t x37 = ((uint64_t)x35 & 0x7ffffffffff); + uint128_t x38 = (x36 + x26); + uint64_t x39 = (uint64_t) (x38 >> 0x2a); + uint64_t x40 = ((uint64_t)x38 & 0x3ffffffffff); + uint128_t x41 = (x39 + x25); + uint64_t x42 = (uint64_t) (x41 >> 0x2b); + uint64_t x43 = ((uint64_t)x41 & 0x7ffffffffff); + uint128_t x44 = (x42 + x24); + uint64_t x45 = (uint64_t) (x44 >> 0x2a); + uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffff); + uint64_t x47 = (x31 + (0x13 * x45)); + uint64_t x48 = (x47 >> 0x2b); + uint64_t x49 = (x47 & 0x7ffffffffff); + uint64_t x50 = (x48 + x34); + uint64_t x51 = (x50 >> 0x2a); + uint64_t x52 = (x50 & 0x3ffffffffff); + 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_2e255m19_6limbs/fesquare.c b/src/Specific/solinas64_2e255m19_6limbs/fesquare.c new file mode 100644 index 000000000..58321a3b8 --- /dev/null +++ b/src/Specific/solinas64_2e255m19_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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))))) + (0x13 * (0x2 * ((uint128_t)x9 * x9)))); + { uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x13 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10)))); + { uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x13 * ((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)) + (0x13 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6)))))); + { uint128_t x16 = (((uint128_t)x2 * x2) + (0x13 * ((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 >> 0x2b); + { uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffff); + { uint128_t x19 = (x17 + x15); + { uint64_t x20 = (uint64_t) (x19 >> 0x2a); + { uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffff); + { uint128_t x22 = (x20 + x14); + { uint64_t x23 = (uint64_t) (x22 >> 0x2b); + { uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffff); + { uint128_t x25 = (x23 + x13); + { uint64_t x26 = (uint64_t) (x25 >> 0x2a); + { uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffff); + { uint128_t x28 = (x26 + x12); + { uint64_t x29 = (uint64_t) (x28 >> 0x2b); + { uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffff); + { uint128_t x31 = (x29 + x11); + { uint64_t x32 = (uint64_t) (x31 >> 0x2a); + { uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffff); + { uint64_t x34 = (x18 + (0x13 * x32)); + { uint64_t x35 = (x34 >> 0x2b); + { uint64_t x36 = (x34 & 0x7ffffffffff); + { uint64_t x37 = (x35 + x21); + { uint64_t x38 = (x37 >> 0x2a); + { uint64_t x39 = (x37 & 0x3ffffffffff); + 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_2e255m19_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e255m19_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..bd69925ce --- /dev/null +++ b/src/Specific/solinas64_2e255m19_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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))))) + (0x13 * (0x2 * ((uint128_t)x9 * x9)))); + uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x13 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10)))); + uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x13 * ((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)) + (0x13 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6)))))); + uint128_t x16 = (((uint128_t)x2 * x2) + (0x13 * ((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 >> 0x2b); + uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffff); + uint128_t x19 = (x17 + x15); + uint64_t x20 = (uint64_t) (x19 >> 0x2a); + uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffff); + uint128_t x22 = (x20 + x14); + uint64_t x23 = (uint64_t) (x22 >> 0x2b); + uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffff); + uint128_t x25 = (x23 + x13); + uint64_t x26 = (uint64_t) (x25 >> 0x2a); + uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffff); + uint128_t x28 = (x26 + x12); + uint64_t x29 = (uint64_t) (x28 >> 0x2b); + uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffff); + uint128_t x31 = (x29 + x11); + uint64_t x32 = (uint64_t) (x31 >> 0x2a); + uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffff); + uint64_t x34 = (x18 + (0x13 * x32)); + uint64_t x35 = (x34 >> 0x2b); + uint64_t x36 = (x34 & 0x7ffffffffff); + uint64_t x37 = (x35 + x21); + uint64_t x38 = (x37 >> 0x2a); + uint64_t x39 = (x37 & 0x3ffffffffff); + 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_2e255m19_6limbs/fesub.c b/src/Specific/solinas64_2e255m19_6limbs/fesub.c new file mode 100644 index 000000000..54f3005a3 --- /dev/null +++ b/src/Specific/solinas64_2e255m19_6limbs/fesub.c @@ -0,0 +1,21 @@ +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] = ((0xfffffffffda + x5) - x15); + out[1] = ((0x7fffffffffe + x7) - x17); + out[2] = ((0xffffffffffe + x9) - x19); + out[3] = ((0x7fffffffffe + x11) - x21); + out[4] = ((0xffffffffffe + x13) - x23); + out[5] = ((0x7fffffffffe + x12) - x22); + }}}}}}}}}}}} +} diff --git a/src/Specific/solinas64_2e255m19_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e255m19_6limbs/fesubDisplay.log new file mode 100644 index 000000000..486c4c548 --- /dev/null +++ b/src/Specific/solinas64_2e255m19_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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, + (((0x7fffffffffe + x12) - x22), ((0xffffffffffe + x13) - x23), ((0x7fffffffffe + x11) - x21), ((0xffffffffffe + x9) - x19), ((0x7fffffffffe + x7) - x17), ((0xfffffffffda + 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_2e255m19_6limbs/freeze.c b/src/Specific/solinas64_2e255m19_6limbs/freeze.c new file mode 100644 index 000000000..7ae8b3623 --- /dev/null +++ b/src/Specific/solinas64_2e255m19_6limbs/freeze.c @@ -0,0 +1,34 @@ +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, 0x7ffffffffed); + { 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 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x7ffffffffff); + { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffffffff); + { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x7ffffffffff); + { 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, 0x3ffffffffff); + { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + { uint64_t x30 = (x29 & 0x7ffffffffed); + { 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 & 0x7ffffffffff); + { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 43 (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 & 0x3ffffffffff); + { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 42 (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 & 0x7ffffffffff); + { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 43 (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 & 0x3ffffffffff); + { 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_2e255m19_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e255m19_6limbs/freezeDisplay.log new file mode 100644 index 000000000..a6ed6c0c3 --- /dev/null +++ b/src/Specific/solinas64_2e255m19_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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, 0x7ffffffffed); + 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 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x7ffffffffff); + uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffffffff); + uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x7ffffffffff); + 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, 0x3ffffffffff); + uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + uint64_t x30 = (x29 & 0x7ffffffffed); + 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 & 0x7ffffffffff); + uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 43 (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 & 0x3ffffffffff); + uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 42 (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 & 0x7ffffffffff); + uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 43 (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 & 0x3ffffffffff); + 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_2e255m765_6limbs/feadd.c b/src/Specific/solinas64_2e255m765_6limbs/feadd.c new file mode 100644 index 000000000..4a6bfb999 --- /dev/null +++ b/src/Specific/solinas64_2e255m765_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_2e255m765_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e255m765_6limbs/feaddDisplay.log new file mode 100644 index 000000000..e32995a81 --- /dev/null +++ b/src/Specific/solinas64_2e255m765_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_2e255m765_6limbs/femul.c b/src/Specific/solinas64_2e255m765_6limbs/femul.c new file mode 100644 index 000000000..0e0cb8e27 --- /dev/null +++ b/src/Specific/solinas64_2e255m765_6limbs/femul.c @@ -0,0 +1,50 @@ +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))))) + (0x2fd * (0x2 * ((uint128_t)x12 * x22)))); + { uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x2fd * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23)))); + { uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x2fd * ((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)) + (0x2fd * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19)))))); + { uint128_t x29 = (((uint128_t)x5 * x15) + (0x2fd * ((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 >> 0x2b); + { uint64_t x31 = ((uint64_t)x29 & 0x7ffffffffff); + { uint128_t x32 = (x30 + x28); + { uint64_t x33 = (uint64_t) (x32 >> 0x2a); + { uint64_t x34 = ((uint64_t)x32 & 0x3ffffffffff); + { uint128_t x35 = (x33 + x27); + { uint64_t x36 = (uint64_t) (x35 >> 0x2b); + { uint64_t x37 = ((uint64_t)x35 & 0x7ffffffffff); + { uint128_t x38 = (x36 + x26); + { uint64_t x39 = (uint64_t) (x38 >> 0x2a); + { uint64_t x40 = ((uint64_t)x38 & 0x3ffffffffff); + { uint128_t x41 = (x39 + x25); + { uint64_t x42 = (uint64_t) (x41 >> 0x2b); + { uint64_t x43 = ((uint64_t)x41 & 0x7ffffffffff); + { uint128_t x44 = (x42 + x24); + { uint64_t x45 = (uint64_t) (x44 >> 0x2a); + { uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffff); + { uint64_t x47 = (x31 + (0x2fd * x45)); + { uint64_t x48 = (x47 >> 0x2b); + { uint64_t x49 = (x47 & 0x7ffffffffff); + { uint64_t x50 = (x48 + x34); + { uint64_t x51 = (x50 >> 0x2a); + { uint64_t x52 = (x50 & 0x3ffffffffff); + 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_2e255m765_6limbs/femulDisplay.log b/src/Specific/solinas64_2e255m765_6limbs/femulDisplay.log new file mode 100644 index 000000000..1adaefd95 --- /dev/null +++ b/src/Specific/solinas64_2e255m765_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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))))) + (0x2fd * (0x2 * ((uint128_t)x12 * x22)))); + uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x2fd * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23)))); + uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x2fd * ((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)) + (0x2fd * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19)))))); + uint128_t x29 = (((uint128_t)x5 * x15) + (0x2fd * ((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 >> 0x2b); + uint64_t x31 = ((uint64_t)x29 & 0x7ffffffffff); + uint128_t x32 = (x30 + x28); + uint64_t x33 = (uint64_t) (x32 >> 0x2a); + uint64_t x34 = ((uint64_t)x32 & 0x3ffffffffff); + uint128_t x35 = (x33 + x27); + uint64_t x36 = (uint64_t) (x35 >> 0x2b); + uint64_t x37 = ((uint64_t)x35 & 0x7ffffffffff); + uint128_t x38 = (x36 + x26); + uint64_t x39 = (uint64_t) (x38 >> 0x2a); + uint64_t x40 = ((uint64_t)x38 & 0x3ffffffffff); + uint128_t x41 = (x39 + x25); + uint64_t x42 = (uint64_t) (x41 >> 0x2b); + uint64_t x43 = ((uint64_t)x41 & 0x7ffffffffff); + uint128_t x44 = (x42 + x24); + uint64_t x45 = (uint64_t) (x44 >> 0x2a); + uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffff); + uint64_t x47 = (x31 + (0x2fd * x45)); + uint64_t x48 = (x47 >> 0x2b); + uint64_t x49 = (x47 & 0x7ffffffffff); + uint64_t x50 = (x48 + x34); + uint64_t x51 = (x50 >> 0x2a); + uint64_t x52 = (x50 & 0x3ffffffffff); + 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_2e255m765_6limbs/fesquare.c b/src/Specific/solinas64_2e255m765_6limbs/fesquare.c new file mode 100644 index 000000000..063e8a157 --- /dev/null +++ b/src/Specific/solinas64_2e255m765_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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))))) + (0x2fd * (0x2 * ((uint128_t)x9 * x9)))); + { uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x2fd * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10)))); + { uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x2fd * ((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)) + (0x2fd * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6)))))); + { uint128_t x16 = (((uint128_t)x2 * x2) + (0x2fd * ((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 >> 0x2b); + { uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffff); + { uint128_t x19 = (x17 + x15); + { uint64_t x20 = (uint64_t) (x19 >> 0x2a); + { uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffff); + { uint128_t x22 = (x20 + x14); + { uint64_t x23 = (uint64_t) (x22 >> 0x2b); + { uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffff); + { uint128_t x25 = (x23 + x13); + { uint64_t x26 = (uint64_t) (x25 >> 0x2a); + { uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffff); + { uint128_t x28 = (x26 + x12); + { uint64_t x29 = (uint64_t) (x28 >> 0x2b); + { uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffff); + { uint128_t x31 = (x29 + x11); + { uint64_t x32 = (uint64_t) (x31 >> 0x2a); + { uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffff); + { uint64_t x34 = (x18 + (0x2fd * x32)); + { uint64_t x35 = (x34 >> 0x2b); + { uint64_t x36 = (x34 & 0x7ffffffffff); + { uint64_t x37 = (x35 + x21); + { uint64_t x38 = (x37 >> 0x2a); + { uint64_t x39 = (x37 & 0x3ffffffffff); + 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_2e255m765_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e255m765_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..0b5898c36 --- /dev/null +++ b/src/Specific/solinas64_2e255m765_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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))))) + (0x2fd * (0x2 * ((uint128_t)x9 * x9)))); + uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x2fd * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10)))); + uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x2fd * ((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)) + (0x2fd * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6)))))); + uint128_t x16 = (((uint128_t)x2 * x2) + (0x2fd * ((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 >> 0x2b); + uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffff); + uint128_t x19 = (x17 + x15); + uint64_t x20 = (uint64_t) (x19 >> 0x2a); + uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffff); + uint128_t x22 = (x20 + x14); + uint64_t x23 = (uint64_t) (x22 >> 0x2b); + uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffff); + uint128_t x25 = (x23 + x13); + uint64_t x26 = (uint64_t) (x25 >> 0x2a); + uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffff); + uint128_t x28 = (x26 + x12); + uint64_t x29 = (uint64_t) (x28 >> 0x2b); + uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffff); + uint128_t x31 = (x29 + x11); + uint64_t x32 = (uint64_t) (x31 >> 0x2a); + uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffff); + uint64_t x34 = (x18 + (0x2fd * x32)); + uint64_t x35 = (x34 >> 0x2b); + uint64_t x36 = (x34 & 0x7ffffffffff); + uint64_t x37 = (x35 + x21); + uint64_t x38 = (x37 >> 0x2a); + uint64_t x39 = (x37 & 0x3ffffffffff); + 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_2e255m765_6limbs/fesub.c b/src/Specific/solinas64_2e255m765_6limbs/fesub.c new file mode 100644 index 000000000..fdc5c7f23 --- /dev/null +++ b/src/Specific/solinas64_2e255m765_6limbs/fesub.c @@ -0,0 +1,21 @@ +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] = ((Const 17592186042886 + x5) - x15); + out[1] = ((0x7fffffffffe + x7) - x17); + out[2] = ((0xffffffffffe + x9) - x19); + out[3] = ((0x7fffffffffe + x11) - x21); + out[4] = ((0xffffffffffe + x13) - x23); + out[5] = ((0x7fffffffffe + x12) - x22); + }}}}}}}}}}}} +} diff --git a/src/Specific/solinas64_2e255m765_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e255m765_6limbs/fesubDisplay.log new file mode 100644 index 000000000..5befbd242 --- /dev/null +++ b/src/Specific/solinas64_2e255m765_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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, + (((0x7fffffffffe + x12) - x22), ((0xffffffffffe + x13) - x23), ((0x7fffffffffe + x11) - x21), ((0xffffffffffe + x9) - x19), ((0x7fffffffffe + x7) - x17), ((Const 17592186042886 + 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_2e255m765_6limbs/freeze.c b/src/Specific/solinas64_2e255m765_6limbs/freeze.c new file mode 100644 index 000000000..853fcdf56 --- /dev/null +++ b/src/Specific/solinas64_2e255m765_6limbs/freeze.c @@ -0,0 +1,34 @@ +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, 0x7fffffffd03); + { 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 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x7ffffffffff); + { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffffffff); + { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x7ffffffffff); + { 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, 0x3ffffffffff); + { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + { uint64_t x30 = (x29 & 0x7fffffffd03); + { 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 & 0x7ffffffffff); + { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 43 (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 & 0x3ffffffffff); + { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 42 (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 & 0x7ffffffffff); + { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 43 (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 & 0x3ffffffffff); + { 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_2e255m765_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e255m765_6limbs/freezeDisplay.log new file mode 100644 index 000000000..1e37295db --- /dev/null +++ b/src/Specific/solinas64_2e255m765_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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, 0x7fffffffd03); + 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 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x7ffffffffff); + uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffffffff); + uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x7ffffffffff); + 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, 0x3ffffffffff); + uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + uint64_t x30 = (x29 & 0x7fffffffd03); + 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 & 0x7ffffffffff); + uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 43 (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 & 0x3ffffffffff); + uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 42 (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 & 0x7ffffffffff); + uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 43 (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 & 0x3ffffffffff); + 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_2e256m189_6limbs/feadd.c b/src/Specific/solinas64_2e256m189_6limbs/feadd.c new file mode 100644 index 000000000..4a6bfb999 --- /dev/null +++ b/src/Specific/solinas64_2e256m189_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_2e256m189_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e256m189_6limbs/feaddDisplay.log new file mode 100644 index 000000000..e32995a81 --- /dev/null +++ b/src/Specific/solinas64_2e256m189_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_2e256m189_6limbs/femul.c b/src/Specific/solinas64_2e256m189_6limbs/femul.c new file mode 100644 index 000000000..eeb119f7d --- /dev/null +++ b/src/Specific/solinas64_2e256m189_6limbs/femul.c @@ -0,0 +1,50 @@ +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) + ((0x2 * ((uint128_t)x9 * x19)) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0xbd * (0x2 * ((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)))) + (0xbd * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23))))); + { uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (0xbd * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21))))); + { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0xbd * ((0x2 * ((uint128_t)x9 * x22)) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + (0x2 * ((uint128_t)x12 * x19))))))); + { uint128_t x29 = (((uint128_t)x5 * x15) + (0xbd * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17)))))))); + { uint64_t x30 = (uint64_t) (x29 >> 0x2b); + { uint64_t x31 = ((uint64_t)x29 & 0x7ffffffffff); + { uint128_t x32 = (x30 + x28); + { uint64_t x33 = (uint64_t) (x32 >> 0x2b); + { uint64_t x34 = ((uint64_t)x32 & 0x7ffffffffff); + { uint128_t x35 = (x33 + x27); + { uint64_t x36 = (uint64_t) (x35 >> 0x2a); + { uint64_t x37 = ((uint64_t)x35 & 0x3ffffffffff); + { uint128_t x38 = (x36 + x26); + { uint64_t x39 = (uint64_t) (x38 >> 0x2b); + { uint64_t x40 = ((uint64_t)x38 & 0x7ffffffffff); + { uint128_t x41 = (x39 + x25); + { uint64_t x42 = (uint64_t) (x41 >> 0x2b); + { uint64_t x43 = ((uint64_t)x41 & 0x7ffffffffff); + { uint128_t x44 = (x42 + x24); + { uint64_t x45 = (uint64_t) (x44 >> 0x2a); + { uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffff); + { uint64_t x47 = (x31 + (0xbd * x45)); + { uint64_t x48 = (x47 >> 0x2b); + { uint64_t x49 = (x47 & 0x7ffffffffff); + { uint64_t x50 = (x48 + x34); + { uint64_t x51 = (x50 >> 0x2b); + { uint64_t x52 = (x50 & 0x7ffffffffff); + 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_2e256m189_6limbs/femulDisplay.log b/src/Specific/solinas64_2e256m189_6limbs/femulDisplay.log new file mode 100644 index 000000000..5147bd4a8 --- /dev/null +++ b/src/Specific/solinas64_2e256m189_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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) + ((0x2 * ((uint128_t)x9 * x19)) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0xbd * (0x2 * ((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)))) + (0xbd * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23))))); + uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (0xbd * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21))))); + uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0xbd * ((0x2 * ((uint128_t)x9 * x22)) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + (0x2 * ((uint128_t)x12 * x19))))))); + uint128_t x29 = (((uint128_t)x5 * x15) + (0xbd * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17)))))))); + uint64_t x30 = (uint64_t) (x29 >> 0x2b); + uint64_t x31 = ((uint64_t)x29 & 0x7ffffffffff); + uint128_t x32 = (x30 + x28); + uint64_t x33 = (uint64_t) (x32 >> 0x2b); + uint64_t x34 = ((uint64_t)x32 & 0x7ffffffffff); + uint128_t x35 = (x33 + x27); + uint64_t x36 = (uint64_t) (x35 >> 0x2a); + uint64_t x37 = ((uint64_t)x35 & 0x3ffffffffff); + uint128_t x38 = (x36 + x26); + uint64_t x39 = (uint64_t) (x38 >> 0x2b); + uint64_t x40 = ((uint64_t)x38 & 0x7ffffffffff); + uint128_t x41 = (x39 + x25); + uint64_t x42 = (uint64_t) (x41 >> 0x2b); + uint64_t x43 = ((uint64_t)x41 & 0x7ffffffffff); + uint128_t x44 = (x42 + x24); + uint64_t x45 = (uint64_t) (x44 >> 0x2a); + uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffff); + uint64_t x47 = (x31 + (0xbd * x45)); + uint64_t x48 = (x47 >> 0x2b); + uint64_t x49 = (x47 & 0x7ffffffffff); + uint64_t x50 = (x48 + x34); + uint64_t x51 = (x50 >> 0x2b); + uint64_t x52 = (x50 & 0x7ffffffffff); + 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_2e256m189_6limbs/fesquare.c b/src/Specific/solinas64_2e256m189_6limbs/fesquare.c new file mode 100644 index 000000000..b5f9dabbf --- /dev/null +++ b/src/Specific/solinas64_2e256m189_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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) + ((0x2 * ((uint128_t)x6 * x6)) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0xbd * (0x2 * ((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)))) + (0xbd * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10))))); + { uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0xbd * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8))))); + { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xbd * ((0x2 * ((uint128_t)x6 * x9)) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (0x2 * ((uint128_t)x9 * x6))))))); + { uint128_t x16 = (((uint128_t)x2 * x2) + (0xbd * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4)))))))); + { uint64_t x17 = (uint64_t) (x16 >> 0x2b); + { uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffff); + { uint128_t x19 = (x17 + x15); + { uint64_t x20 = (uint64_t) (x19 >> 0x2b); + { uint64_t x21 = ((uint64_t)x19 & 0x7ffffffffff); + { uint128_t x22 = (x20 + x14); + { uint64_t x23 = (uint64_t) (x22 >> 0x2a); + { uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffff); + { uint128_t x25 = (x23 + x13); + { uint64_t x26 = (uint64_t) (x25 >> 0x2b); + { uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffff); + { uint128_t x28 = (x26 + x12); + { uint64_t x29 = (uint64_t) (x28 >> 0x2b); + { uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffff); + { uint128_t x31 = (x29 + x11); + { uint64_t x32 = (uint64_t) (x31 >> 0x2a); + { uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffff); + { uint64_t x34 = (x18 + (0xbd * x32)); + { uint64_t x35 = (x34 >> 0x2b); + { uint64_t x36 = (x34 & 0x7ffffffffff); + { uint64_t x37 = (x35 + x21); + { uint64_t x38 = (x37 >> 0x2b); + { uint64_t x39 = (x37 & 0x7ffffffffff); + 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_2e256m189_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e256m189_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..c679ff673 --- /dev/null +++ b/src/Specific/solinas64_2e256m189_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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) + ((0x2 * ((uint128_t)x6 * x6)) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0xbd * (0x2 * ((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)))) + (0xbd * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10))))); + uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0xbd * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8))))); + uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xbd * ((0x2 * ((uint128_t)x6 * x9)) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (0x2 * ((uint128_t)x9 * x6))))))); + uint128_t x16 = (((uint128_t)x2 * x2) + (0xbd * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4)))))))); + uint64_t x17 = (uint64_t) (x16 >> 0x2b); + uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffff); + uint128_t x19 = (x17 + x15); + uint64_t x20 = (uint64_t) (x19 >> 0x2b); + uint64_t x21 = ((uint64_t)x19 & 0x7ffffffffff); + uint128_t x22 = (x20 + x14); + uint64_t x23 = (uint64_t) (x22 >> 0x2a); + uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffff); + uint128_t x25 = (x23 + x13); + uint64_t x26 = (uint64_t) (x25 >> 0x2b); + uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffff); + uint128_t x28 = (x26 + x12); + uint64_t x29 = (uint64_t) (x28 >> 0x2b); + uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffff); + uint128_t x31 = (x29 + x11); + uint64_t x32 = (uint64_t) (x31 >> 0x2a); + uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffff); + uint64_t x34 = (x18 + (0xbd * x32)); + uint64_t x35 = (x34 >> 0x2b); + uint64_t x36 = (x34 & 0x7ffffffffff); + uint64_t x37 = (x35 + x21); + uint64_t x38 = (x37 >> 0x2b); + uint64_t x39 = (x37 & 0x7ffffffffff); + 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_2e256m189_6limbs/fesub.c b/src/Specific/solinas64_2e256m189_6limbs/fesub.c new file mode 100644 index 000000000..176aaf919 --- /dev/null +++ b/src/Specific/solinas64_2e256m189_6limbs/fesub.c @@ -0,0 +1,21 @@ +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] = ((Const 17592186044038 + x5) - x15); + out[1] = ((0xffffffffffe + x7) - x17); + out[2] = ((0x7fffffffffe + x9) - x19); + out[3] = ((0xffffffffffe + x11) - x21); + out[4] = ((0xffffffffffe + x13) - x23); + out[5] = ((0x7fffffffffe + x12) - x22); + }}}}}}}}}}}} +} diff --git a/src/Specific/solinas64_2e256m189_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e256m189_6limbs/fesubDisplay.log new file mode 100644 index 000000000..3b4749268 --- /dev/null +++ b/src/Specific/solinas64_2e256m189_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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, + (((0x7fffffffffe + x12) - x22), ((0xffffffffffe + x13) - x23), ((0xffffffffffe + x11) - x21), ((0x7fffffffffe + x9) - x19), ((0xffffffffffe + x7) - x17), ((Const 17592186044038 + 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_2e256m189_6limbs/freeze.c b/src/Specific/solinas64_2e256m189_6limbs/freeze.c new file mode 100644 index 000000000..4ae724a39 --- /dev/null +++ b/src/Specific/solinas64_2e256m189_6limbs/freeze.c @@ -0,0 +1,34 @@ +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, Const 8796093022019); + { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x7ffffffffff); + { 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 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x7ffffffffff); + { 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, 0x3ffffffffff); + { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + { uint64_t x30 = (x29 & Const 8796093022019); + { 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 & 0x7ffffffffff); + { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 43 (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 & 0x7ffffffffff); + { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 43 (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 & 0x3ffffffffff); + { 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_2e256m189_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e256m189_6limbs/freezeDisplay.log new file mode 100644 index 000000000..54e1f5906 --- /dev/null +++ b/src/Specific/solinas64_2e256m189_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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, Const 8796093022019); + uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x7ffffffffff); + 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 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x7ffffffffff); + 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, 0x3ffffffffff); + uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + uint64_t x30 = (x29 & Const 8796093022019); + 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 & 0x7ffffffffff); + uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 43 (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 & 0x7ffffffffff); + uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 43 (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 & 0x3ffffffffff); + 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_2e256m2e224p2e192p2e96m1_6limbs/feadd.c b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feadd.c new file mode 100644 index 000000000..4a6bfb999 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_2e256m2e224p2e192p2e96m1_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feaddDisplay.log new file mode 100644 index 000000000..e32995a81 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_2e256m2e224p2e192p2e96m1_6limbs/freeze.c b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freeze.c new file mode 100644 index 000000000..ef8bc0847 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freeze.c @@ -0,0 +1,33 @@ +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 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x7ffffffffff); + { uint64_t x18, ℤ x19 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) Syntax.TZ) (Return x16, Return x6, 0x3ff); + { uint64_t x21, ℤ x22 = Op (Syntax.SubWithGetBorrow 43 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (Return x19, Return x8, 0x0); + { uint64_t x24, ℤ x25 = Op (Syntax.SubWithGetBorrow 43 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) Syntax.TZ) (Return x22, Return x10, 0x200000); + { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 42 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, Const 4398046510080); + { 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 & 0x7ffffffffff); + { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 43 (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 & 0x3ff); + { 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 x43, uint8_t x44 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, 0x0); + { uint64_t x45 = (x29 & 0x200000); + { uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x44, Return x24, Return x45); + { uint64_t x49 = (x29 & Const 4398046510080); + { uint64_t x51, uint8_t _ = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x27, Return x49); + out[0] = x32; + out[1] = x36; + out[2] = x40; + out[3] = x43; + out[4] = x47; + out[5] = x51; + }}}}}}}}}}}}}}}}}}}}}}}} +} diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freezeDisplay.log new file mode 100644 index 000000000..74f07be44 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freezeDisplay.log @@ -0,0 +1,25 @@ +λ 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 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x7ffffffffff); + uint64_t x18, ℤ x19 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) Syntax.TZ) (Return x16, Return x6, 0x3ff); + uint64_t x21, ℤ x22 = Op (Syntax.SubWithGetBorrow 43 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (Return x19, Return x8, 0x0); + uint64_t x24, ℤ x25 = Op (Syntax.SubWithGetBorrow 43 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) Syntax.TZ) (Return x22, Return x10, 0x200000); + uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 42 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, Const 4398046510080); + 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 & 0x7ffffffffff); + uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 43 (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 & 0x3ff); + 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 x43, uint8_t x44 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, 0x0); + uint64_t x45 = (x29 & 0x200000); + uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x44, Return x24, Return x45); + uint64_t x49 = (x29 & Const 4398046510080); + uint64_t x51, uint8_t _ = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x27, Return x49); + (Return x51, Return x47, Return x43, 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_2e256m2e32m977_6limbs/feadd.c b/src/Specific/solinas64_2e256m2e32m977_6limbs/feadd.c new file mode 100644 index 000000000..4a6bfb999 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_2e256m2e32m977_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e256m2e32m977_6limbs/feaddDisplay.log new file mode 100644 index 000000000..e32995a81 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_2e256m2e32m977_6limbs/femul.c b/src/Specific/solinas64_2e256m2e32m977_6limbs/femul.c new file mode 100644 index 000000000..cd2d8e297 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/femul.c @@ -0,0 +1,58 @@ +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) + ((0x2 * ((uint128_t)x9 * x19)) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + ((0x3d1 * (0x2 * ((uint128_t)x12 * x22))) + (0x100000000 * (0x2 * ((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)))) + ((0x3d1 * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))) + (0x100000000 * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))))); + { uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + ((0x3d1 * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))) + (0x100000000 * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))))); + { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + ((0x3d1 * ((0x2 * ((uint128_t)x9 * x22)) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + (0x2 * ((uint128_t)x12 * x19)))))) + (0x100000000 * ((0x2 * ((uint128_t)x9 * x22)) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + (0x2 * ((uint128_t)x12 * x19)))))))); + { uint128_t x29 = (((uint128_t)x5 * x15) + ((0x3d1 * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17))))))) + (0x100000000 * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17))))))))); + { uint64_t x30 = (uint64_t) (x24 >> 0x2a); + { uint64_t x31 = ((uint64_t)x24 & 0x3ffffffffff); + { uint128_t x32 = (((uint128_t)0x40000000000 * x30) + x31); + { uint64_t x33 = (uint64_t) (x32 >> 0x2a); + { uint64_t x34 = ((uint64_t)x32 & 0x3ffffffffff); + { uint128_t x35 = (((uint128_t)0x40000000000 * x33) + x34); + { uint64_t x36 = (uint64_t) (x35 >> 0x2a); + { uint64_t x37 = ((uint64_t)x35 & 0x3ffffffffff); + { uint128_t x38 = (x29 + ((0x3d1 * x36) + ((uint128_t)0x100000000 * x36))); + { uint128_t x39 = (x38 >> 0x2b); + { uint64_t x40 = ((uint64_t)x38 & 0x7ffffffffff); + { uint128_t x41 = (x39 + x28); + { uint128_t x42 = (x41 >> 0x2b); + { uint64_t x43 = ((uint64_t)x41 & 0x7ffffffffff); + { uint128_t x44 = (x42 + x27); + { uint128_t x45 = (x44 >> 0x2a); + { uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffff); + { uint128_t x47 = (x45 + x26); + { uint128_t x48 = (x47 >> 0x2b); + { uint64_t x49 = ((uint64_t)x47 & 0x7ffffffffff); + { uint128_t x50 = (x48 + x25); + { uint128_t x51 = (x50 >> 0x2b); + { uint64_t x52 = ((uint64_t)x50 & 0x7ffffffffff); + { uint128_t x53 = (x51 + x37); + { uint64_t x54 = (uint64_t) (x53 >> 0x2a); + { uint64_t x55 = ((uint64_t)x53 & 0x3ffffffffff); + { uint128_t x56 = (x40 + ((0x3d1 * x54) + ((uint128_t)0x100000000 * x54))); + { uint64_t x57 = (uint64_t) (x56 >> 0x2b); + { uint64_t x58 = ((uint64_t)x56 & 0x7ffffffffff); + { uint64_t x59 = (x58 >> 0x2b); + { uint64_t x60 = (x58 & 0x7ffffffffff); + out[0] = x60; + out[1] = (x59 + (x57 + x43)); + out[2] = x46; + out[3] = x49; + out[4] = x52; + out[5] = x55; + }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} +} diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/femulDisplay.log b/src/Specific/solinas64_2e256m2e32m977_6limbs/femulDisplay.log new file mode 100644 index 000000000..acddfec0b --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/femulDisplay.log @@ -0,0 +1,44 @@ +λ 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) + ((0x2 * ((uint128_t)x9 * x19)) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + ((0x3d1 * (0x2 * ((uint128_t)x12 * x22))) + (0x100000000 * (0x2 * ((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)))) + ((0x3d1 * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))) + (0x100000000 * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))))); + uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + ((0x3d1 * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))) + (0x100000000 * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))))); + uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + ((0x3d1 * ((0x2 * ((uint128_t)x9 * x22)) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + (0x2 * ((uint128_t)x12 * x19)))))) + (0x100000000 * ((0x2 * ((uint128_t)x9 * x22)) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + (0x2 * ((uint128_t)x12 * x19)))))))); + uint128_t x29 = (((uint128_t)x5 * x15) + ((0x3d1 * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17))))))) + (0x100000000 * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17))))))))); + uint64_t x30 = (uint64_t) (x24 >> 0x2a); + uint64_t x31 = ((uint64_t)x24 & 0x3ffffffffff); + uint128_t x32 = (((uint128_t)0x40000000000 * x30) + x31); + uint64_t x33 = (uint64_t) (x32 >> 0x2a); + uint64_t x34 = ((uint64_t)x32 & 0x3ffffffffff); + uint128_t x35 = (((uint128_t)0x40000000000 * x33) + x34); + uint64_t x36 = (uint64_t) (x35 >> 0x2a); + uint64_t x37 = ((uint64_t)x35 & 0x3ffffffffff); + uint128_t x38 = (x29 + ((0x3d1 * x36) + ((uint128_t)0x100000000 * x36))); + uint128_t x39 = (x38 >> 0x2b); + uint64_t x40 = ((uint64_t)x38 & 0x7ffffffffff); + uint128_t x41 = (x39 + x28); + uint128_t x42 = (x41 >> 0x2b); + uint64_t x43 = ((uint64_t)x41 & 0x7ffffffffff); + uint128_t x44 = (x42 + x27); + uint128_t x45 = (x44 >> 0x2a); + uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffff); + uint128_t x47 = (x45 + x26); + uint128_t x48 = (x47 >> 0x2b); + uint64_t x49 = ((uint64_t)x47 & 0x7ffffffffff); + uint128_t x50 = (x48 + x25); + uint128_t x51 = (x50 >> 0x2b); + uint64_t x52 = ((uint64_t)x50 & 0x7ffffffffff); + uint128_t x53 = (x51 + x37); + uint64_t x54 = (uint64_t) (x53 >> 0x2a); + uint64_t x55 = ((uint64_t)x53 & 0x3ffffffffff); + uint128_t x56 = (x40 + ((0x3d1 * x54) + ((uint128_t)0x100000000 * x54))); + uint64_t x57 = (uint64_t) (x56 >> 0x2b); + uint64_t x58 = ((uint64_t)x56 & 0x7ffffffffff); + uint64_t x59 = (x58 >> 0x2b); + uint64_t x60 = (x58 & 0x7ffffffffff); + return (Return x55, Return x52, Return x49, Return x46, (x59 + (x57 + x43)), Return x60)) +(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_2e256m2e32m977_6limbs/fesquare.c b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesquare.c new file mode 100644 index 000000000..e4d24df18 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesquare.c @@ -0,0 +1,52 @@ +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) + ((0x2 * ((uint128_t)x6 * x6)) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + ((0x3d1 * (0x2 * ((uint128_t)x9 * x9))) + (0x100000000 * (0x2 * ((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)))) + ((0x3d1 * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))) + (0x100000000 * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))))); + { uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + ((0x3d1 * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))) + (0x100000000 * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))))); + { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + ((0x3d1 * ((0x2 * ((uint128_t)x6 * x9)) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (0x2 * ((uint128_t)x9 * x6)))))) + (0x100000000 * ((0x2 * ((uint128_t)x6 * x9)) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (0x2 * ((uint128_t)x9 * x6)))))))); + { uint128_t x16 = (((uint128_t)x2 * x2) + ((0x3d1 * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4))))))) + (0x100000000 * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4))))))))); + { uint64_t x17 = (uint64_t) (x11 >> 0x2a); + { uint64_t x18 = ((uint64_t)x11 & 0x3ffffffffff); + { uint128_t x19 = (((uint128_t)0x40000000000 * x17) + x18); + { uint64_t x20 = (uint64_t) (x19 >> 0x2a); + { uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffff); + { uint128_t x22 = (((uint128_t)0x40000000000 * x20) + x21); + { uint64_t x23 = (uint64_t) (x22 >> 0x2a); + { uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffff); + { uint128_t x25 = (x16 + ((0x3d1 * x23) + ((uint128_t)0x100000000 * x23))); + { uint128_t x26 = (x25 >> 0x2b); + { uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffff); + { uint128_t x28 = (x26 + x15); + { uint128_t x29 = (x28 >> 0x2b); + { uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffff); + { uint128_t x31 = (x29 + x14); + { uint128_t x32 = (x31 >> 0x2a); + { uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffff); + { uint128_t x34 = (x32 + x13); + { uint128_t x35 = (x34 >> 0x2b); + { uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffff); + { uint128_t x37 = (x35 + x12); + { uint128_t x38 = (x37 >> 0x2b); + { uint64_t x39 = ((uint64_t)x37 & 0x7ffffffffff); + { uint128_t x40 = (x38 + x24); + { uint64_t x41 = (uint64_t) (x40 >> 0x2a); + { uint64_t x42 = ((uint64_t)x40 & 0x3ffffffffff); + { uint128_t x43 = (x27 + ((0x3d1 * x41) + ((uint128_t)0x100000000 * x41))); + { uint64_t x44 = (uint64_t) (x43 >> 0x2b); + { uint64_t x45 = ((uint64_t)x43 & 0x7ffffffffff); + { uint64_t x46 = (x45 >> 0x2b); + { uint64_t x47 = (x45 & 0x7ffffffffff); + out[0] = x47; + out[1] = (x46 + (x44 + x30)); + out[2] = x33; + out[3] = x36; + out[4] = x39; + out[5] = x42; + }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} +} diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..f9b2d40b2 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesquareDisplay.log @@ -0,0 +1,44 @@ +λ 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) + ((0x2 * ((uint128_t)x6 * x6)) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + ((0x3d1 * (0x2 * ((uint128_t)x9 * x9))) + (0x100000000 * (0x2 * ((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)))) + ((0x3d1 * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))) + (0x100000000 * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))))); + uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + ((0x3d1 * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))) + (0x100000000 * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))))); + uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + ((0x3d1 * ((0x2 * ((uint128_t)x6 * x9)) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (0x2 * ((uint128_t)x9 * x6)))))) + (0x100000000 * ((0x2 * ((uint128_t)x6 * x9)) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (0x2 * ((uint128_t)x9 * x6)))))))); + uint128_t x16 = (((uint128_t)x2 * x2) + ((0x3d1 * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4))))))) + (0x100000000 * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4))))))))); + uint64_t x17 = (uint64_t) (x11 >> 0x2a); + uint64_t x18 = ((uint64_t)x11 & 0x3ffffffffff); + uint128_t x19 = (((uint128_t)0x40000000000 * x17) + x18); + uint64_t x20 = (uint64_t) (x19 >> 0x2a); + uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffff); + uint128_t x22 = (((uint128_t)0x40000000000 * x20) + x21); + uint64_t x23 = (uint64_t) (x22 >> 0x2a); + uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffff); + uint128_t x25 = (x16 + ((0x3d1 * x23) + ((uint128_t)0x100000000 * x23))); + uint128_t x26 = (x25 >> 0x2b); + uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffff); + uint128_t x28 = (x26 + x15); + uint128_t x29 = (x28 >> 0x2b); + uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffff); + uint128_t x31 = (x29 + x14); + uint128_t x32 = (x31 >> 0x2a); + uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffff); + uint128_t x34 = (x32 + x13); + uint128_t x35 = (x34 >> 0x2b); + uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffff); + uint128_t x37 = (x35 + x12); + uint128_t x38 = (x37 >> 0x2b); + uint64_t x39 = ((uint64_t)x37 & 0x7ffffffffff); + uint128_t x40 = (x38 + x24); + uint64_t x41 = (uint64_t) (x40 >> 0x2a); + uint64_t x42 = ((uint64_t)x40 & 0x3ffffffffff); + uint128_t x43 = (x27 + ((0x3d1 * x41) + ((uint128_t)0x100000000 * x41))); + uint64_t x44 = (uint64_t) (x43 >> 0x2b); + uint64_t x45 = ((uint64_t)x43 & 0x7ffffffffff); + uint64_t x46 = (x45 >> 0x2b); + uint64_t x47 = (x45 & 0x7ffffffffff); + return (Return x42, Return x39, Return x36, Return x33, (x46 + (x44 + x30)), Return x47)) +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_2e256m2e32m977_6limbs/fesub.c b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesub.c new file mode 100644 index 000000000..9bdf1ffa7 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesub.c @@ -0,0 +1,21 @@ +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] = ((Const 17583596107870 + x5) - x15); + out[1] = ((0xffffffffffe + x7) - x17); + out[2] = ((0x7fffffffffe + x9) - x19); + out[3] = ((0xffffffffffe + x11) - x21); + out[4] = ((0xffffffffffe + x13) - x23); + out[5] = ((0x7fffffffffe + x12) - x22); + }}}}}}}}}}}} +} diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesubDisplay.log new file mode 100644 index 000000000..2564c2ad6 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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, + (((0x7fffffffffe + x12) - x22), ((0xffffffffffe + x13) - x23), ((0xffffffffffe + x11) - x21), ((0x7fffffffffe + x9) - x19), ((0xffffffffffe + x7) - x17), ((Const 17583596107870 + 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_2e256m2e32m977_6limbs/freeze.c b/src/Specific/solinas64_2e256m2e32m977_6limbs/freeze.c new file mode 100644 index 000000000..fefa8ecd5 --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/freeze.c @@ -0,0 +1,34 @@ +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, Const 8791798053935); + { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x7ffffffffff); + { 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 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x7ffffffffff); + { 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, 0x3ffffffffff); + { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + { uint64_t x30 = (x29 & Const 8791798053935); + { 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 & 0x7ffffffffff); + { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 43 (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 & 0x7ffffffffff); + { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 43 (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 & 0x3ffffffffff); + { 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_2e256m2e32m977_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e256m2e32m977_6limbs/freezeDisplay.log new file mode 100644 index 000000000..27a07ac5b --- /dev/null +++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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, Const 8791798053935); + uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x7ffffffffff); + 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 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x7ffffffffff); + 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, 0x3ffffffffff); + uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + uint64_t x30 = (x29 & Const 8791798053935); + 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 & 0x7ffffffffff); + uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 43 (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 & 0x7ffffffffff); + uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 43 (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 & 0x3ffffffffff); + 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_2e266m3_6limbs/feadd.c b/src/Specific/solinas64_2e266m3_6limbs/feadd.c new file mode 100644 index 000000000..4a6bfb999 --- /dev/null +++ b/src/Specific/solinas64_2e266m3_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_2e266m3_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e266m3_6limbs/feaddDisplay.log new file mode 100644 index 000000000..e32995a81 --- /dev/null +++ b/src/Specific/solinas64_2e266m3_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_2e266m3_6limbs/femul.c b/src/Specific/solinas64_2e266m3_6limbs/femul.c new file mode 100644 index 000000000..a42a8f09e --- /dev/null +++ b/src/Specific/solinas64_2e266m3_6limbs/femul.c @@ -0,0 +1,50 @@ +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))))) + (0x3 * ((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)))) + (0x3 * ((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))) + (0x3 * (((uint128_t)x11 * x22) + ((0x2 * ((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 * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17)))))))); + { uint64_t x30 = (uint64_t) (x29 >> 0x2d); + { uint64_t x31 = ((uint64_t)x29 & 0x1fffffffffff); + { uint128_t x32 = (x30 + x28); + { uint64_t x33 = (uint64_t) (x32 >> 0x2c); + { uint64_t x34 = ((uint64_t)x32 & 0xfffffffffff); + { uint128_t x35 = (x33 + x27); + { uint64_t x36 = (uint64_t) (x35 >> 0x2c); + { uint64_t x37 = ((uint64_t)x35 & 0xfffffffffff); + { uint128_t x38 = (x36 + x26); + { uint64_t x39 = (uint64_t) (x38 >> 0x2d); + { uint64_t x40 = ((uint64_t)x38 & 0x1fffffffffff); + { uint128_t x41 = (x39 + x25); + { uint64_t x42 = (uint64_t) (x41 >> 0x2c); + { uint64_t x43 = ((uint64_t)x41 & 0xfffffffffff); + { uint128_t x44 = (x42 + x24); + { uint64_t x45 = (uint64_t) (x44 >> 0x2c); + { uint64_t x46 = ((uint64_t)x44 & 0xfffffffffff); + { uint64_t x47 = (x31 + (0x3 * x45)); + { uint64_t x48 = (x47 >> 0x2d); + { uint64_t x49 = (x47 & 0x1fffffffffff); + { uint64_t x50 = (x48 + x34); + { uint64_t x51 = (x50 >> 0x2c); + { uint64_t x52 = (x50 & 0xfffffffffff); + 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_2e266m3_6limbs/femulDisplay.log b/src/Specific/solinas64_2e266m3_6limbs/femulDisplay.log new file mode 100644 index 000000000..8e3d2938d --- /dev/null +++ b/src/Specific/solinas64_2e266m3_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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))))) + (0x3 * ((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)))) + (0x3 * ((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))) + (0x3 * (((uint128_t)x11 * x22) + ((0x2 * ((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 * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17)))))))); + uint64_t x30 = (uint64_t) (x29 >> 0x2d); + uint64_t x31 = ((uint64_t)x29 & 0x1fffffffffff); + uint128_t x32 = (x30 + x28); + uint64_t x33 = (uint64_t) (x32 >> 0x2c); + uint64_t x34 = ((uint64_t)x32 & 0xfffffffffff); + uint128_t x35 = (x33 + x27); + uint64_t x36 = (uint64_t) (x35 >> 0x2c); + uint64_t x37 = ((uint64_t)x35 & 0xfffffffffff); + uint128_t x38 = (x36 + x26); + uint64_t x39 = (uint64_t) (x38 >> 0x2d); + uint64_t x40 = ((uint64_t)x38 & 0x1fffffffffff); + uint128_t x41 = (x39 + x25); + uint64_t x42 = (uint64_t) (x41 >> 0x2c); + uint64_t x43 = ((uint64_t)x41 & 0xfffffffffff); + uint128_t x44 = (x42 + x24); + uint64_t x45 = (uint64_t) (x44 >> 0x2c); + uint64_t x46 = ((uint64_t)x44 & 0xfffffffffff); + uint64_t x47 = (x31 + (0x3 * x45)); + uint64_t x48 = (x47 >> 0x2d); + uint64_t x49 = (x47 & 0x1fffffffffff); + uint64_t x50 = (x48 + x34); + uint64_t x51 = (x50 >> 0x2c); + uint64_t x52 = (x50 & 0xfffffffffff); + 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_2e266m3_6limbs/fesquare.c b/src/Specific/solinas64_2e266m3_6limbs/fesquare.c new file mode 100644 index 000000000..175fd89fc --- /dev/null +++ b/src/Specific/solinas64_2e266m3_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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))))) + (0x3 * ((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)))) + (0x3 * ((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))) + (0x3 * (((uint128_t)x8 * x9) + ((0x2 * ((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 * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4)))))))); + { uint64_t x17 = (uint64_t) (x16 >> 0x2d); + { uint64_t x18 = ((uint64_t)x16 & 0x1fffffffffff); + { uint128_t x19 = (x17 + x15); + { uint64_t x20 = (uint64_t) (x19 >> 0x2c); + { uint64_t x21 = ((uint64_t)x19 & 0xfffffffffff); + { uint128_t x22 = (x20 + x14); + { uint64_t x23 = (uint64_t) (x22 >> 0x2c); + { uint64_t x24 = ((uint64_t)x22 & 0xfffffffffff); + { uint128_t x25 = (x23 + x13); + { uint64_t x26 = (uint64_t) (x25 >> 0x2d); + { uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffff); + { uint128_t x28 = (x26 + x12); + { uint64_t x29 = (uint64_t) (x28 >> 0x2c); + { uint64_t x30 = ((uint64_t)x28 & 0xfffffffffff); + { uint128_t x31 = (x29 + x11); + { uint64_t x32 = (uint64_t) (x31 >> 0x2c); + { uint64_t x33 = ((uint64_t)x31 & 0xfffffffffff); + { uint64_t x34 = (x18 + (0x3 * x32)); + { uint64_t x35 = (x34 >> 0x2d); + { uint64_t x36 = (x34 & 0x1fffffffffff); + { uint64_t x37 = (x35 + x21); + { uint64_t x38 = (x37 >> 0x2c); + { uint64_t x39 = (x37 & 0xfffffffffff); + 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_2e266m3_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e266m3_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..390b09a98 --- /dev/null +++ b/src/Specific/solinas64_2e266m3_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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))))) + (0x3 * ((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)))) + (0x3 * ((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))) + (0x3 * (((uint128_t)x8 * x9) + ((0x2 * ((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 * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4)))))))); + uint64_t x17 = (uint64_t) (x16 >> 0x2d); + uint64_t x18 = ((uint64_t)x16 & 0x1fffffffffff); + uint128_t x19 = (x17 + x15); + uint64_t x20 = (uint64_t) (x19 >> 0x2c); + uint64_t x21 = ((uint64_t)x19 & 0xfffffffffff); + uint128_t x22 = (x20 + x14); + uint64_t x23 = (uint64_t) (x22 >> 0x2c); + uint64_t x24 = ((uint64_t)x22 & 0xfffffffffff); + uint128_t x25 = (x23 + x13); + uint64_t x26 = (uint64_t) (x25 >> 0x2d); + uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffff); + uint128_t x28 = (x26 + x12); + uint64_t x29 = (uint64_t) (x28 >> 0x2c); + uint64_t x30 = ((uint64_t)x28 & 0xfffffffffff); + uint128_t x31 = (x29 + x11); + uint64_t x32 = (uint64_t) (x31 >> 0x2c); + uint64_t x33 = ((uint64_t)x31 & 0xfffffffffff); + uint64_t x34 = (x18 + (0x3 * x32)); + uint64_t x35 = (x34 >> 0x2d); + uint64_t x36 = (x34 & 0x1fffffffffff); + uint64_t x37 = (x35 + x21); + uint64_t x38 = (x37 >> 0x2c); + uint64_t x39 = (x37 & 0xfffffffffff); + 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_2e266m3_6limbs/fesub.c b/src/Specific/solinas64_2e266m3_6limbs/fesub.c new file mode 100644 index 000000000..fe58e8d37 --- /dev/null +++ b/src/Specific/solinas64_2e266m3_6limbs/fesub.c @@ -0,0 +1,21 @@ +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] = ((0x3ffffffffffa + x5) - x15); + out[1] = ((0x1ffffffffffe + x7) - x17); + out[2] = ((0x1ffffffffffe + x9) - x19); + out[3] = ((0x3ffffffffffe + x11) - x21); + out[4] = ((0x1ffffffffffe + x13) - x23); + out[5] = ((0x1ffffffffffe + x12) - x22); + }}}}}}}}}}}} +} diff --git a/src/Specific/solinas64_2e266m3_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e266m3_6limbs/fesubDisplay.log new file mode 100644 index 000000000..b7fb76359 --- /dev/null +++ b/src/Specific/solinas64_2e266m3_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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, + (((0x1ffffffffffe + x12) - x22), ((0x1ffffffffffe + x13) - x23), ((0x3ffffffffffe + x11) - x21), ((0x1ffffffffffe + x9) - x19), ((0x1ffffffffffe + x7) - x17), ((0x3ffffffffffa + 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_2e266m3_6limbs/freeze.c b/src/Specific/solinas64_2e266m3_6limbs/freeze.c new file mode 100644 index 000000000..bc7c0b19b --- /dev/null +++ b/src/Specific/solinas64_2e266m3_6limbs/freeze.c @@ -0,0 +1,34 @@ +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 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffd); + { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xfffffffffff); + { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xfffffffffff); + { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x1fffffffffff); + { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xfffffffffff); + { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xfffffffffff); + { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + { uint64_t x30 = (x29 & 0x1ffffffffffd); + { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30); + { uint64_t x34 = (x29 & 0xfffffffffff); + { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 44 (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 & 0xfffffffffff); + { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 44 (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 & 0x1fffffffffff); + { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 45 (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 & 0xfffffffffff); + { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 44 (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 & 0xfffffffffff); + { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 44 (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_2e266m3_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e266m3_6limbs/freezeDisplay.log new file mode 100644 index 000000000..9f74404db --- /dev/null +++ b/src/Specific/solinas64_2e266m3_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffd); + uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xfffffffffff); + uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xfffffffffff); + uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x1fffffffffff); + uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xfffffffffff); + uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xfffffffffff); + uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + uint64_t x30 = (x29 & 0x1ffffffffffd); + uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30); + uint64_t x34 = (x29 & 0xfffffffffff); + uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 44 (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 & 0xfffffffffff); + uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 44 (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 & 0x1fffffffffff); + uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 45 (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 & 0xfffffffffff); + uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 44 (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 & 0xfffffffffff); + uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 44 (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_2e285m9_6limbs/feadd.c b/src/Specific/solinas64_2e285m9_6limbs/feadd.c new file mode 100644 index 000000000..4a6bfb999 --- /dev/null +++ b/src/Specific/solinas64_2e285m9_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_2e285m9_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e285m9_6limbs/feaddDisplay.log new file mode 100644 index 000000000..e32995a81 --- /dev/null +++ b/src/Specific/solinas64_2e285m9_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_2e285m9_6limbs/femul.c b/src/Specific/solinas64_2e285m9_6limbs/femul.c new file mode 100644 index 000000000..389d4a67f --- /dev/null +++ b/src/Specific/solinas64_2e285m9_6limbs/femul.c @@ -0,0 +1,50 @@ +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 >> 0x30); + { uint64_t x31 = ((uint64_t)x29 & 0xffffffffffff); + { uint128_t x32 = (x30 + x28); + { uint64_t x33 = (uint64_t) (x32 >> 0x2f); + { uint64_t x34 = ((uint64_t)x32 & 0x7fffffffffff); + { uint128_t x35 = (x33 + x27); + { uint64_t x36 = (uint64_t) (x35 >> 0x30); + { uint64_t x37 = ((uint64_t)x35 & 0xffffffffffff); + { uint128_t x38 = (x36 + x26); + { uint64_t x39 = (uint64_t) (x38 >> 0x2f); + { uint64_t x40 = ((uint64_t)x38 & 0x7fffffffffff); + { uint128_t x41 = (x39 + x25); + { uint64_t x42 = (uint64_t) (x41 >> 0x30); + { uint64_t x43 = ((uint64_t)x41 & 0xffffffffffff); + { uint128_t x44 = (x42 + x24); + { uint64_t x45 = (uint64_t) (x44 >> 0x2f); + { uint64_t x46 = ((uint64_t)x44 & 0x7fffffffffff); + { uint64_t x47 = (x31 + (0x9 * x45)); + { uint64_t x48 = (x47 >> 0x30); + { uint64_t x49 = (x47 & 0xffffffffffff); + { uint64_t x50 = (x48 + x34); + { uint64_t x51 = (x50 >> 0x2f); + { uint64_t x52 = (x50 & 0x7fffffffffff); + 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_2e285m9_6limbs/femulDisplay.log b/src/Specific/solinas64_2e285m9_6limbs/femulDisplay.log new file mode 100644 index 000000000..2c96480f4 --- /dev/null +++ b/src/Specific/solinas64_2e285m9_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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 >> 0x30); + uint64_t x31 = ((uint64_t)x29 & 0xffffffffffff); + uint128_t x32 = (x30 + x28); + uint64_t x33 = (uint64_t) (x32 >> 0x2f); + uint64_t x34 = ((uint64_t)x32 & 0x7fffffffffff); + uint128_t x35 = (x33 + x27); + uint64_t x36 = (uint64_t) (x35 >> 0x30); + uint64_t x37 = ((uint64_t)x35 & 0xffffffffffff); + uint128_t x38 = (x36 + x26); + uint64_t x39 = (uint64_t) (x38 >> 0x2f); + uint64_t x40 = ((uint64_t)x38 & 0x7fffffffffff); + uint128_t x41 = (x39 + x25); + uint64_t x42 = (uint64_t) (x41 >> 0x30); + uint64_t x43 = ((uint64_t)x41 & 0xffffffffffff); + uint128_t x44 = (x42 + x24); + uint64_t x45 = (uint64_t) (x44 >> 0x2f); + uint64_t x46 = ((uint64_t)x44 & 0x7fffffffffff); + uint64_t x47 = (x31 + (0x9 * x45)); + uint64_t x48 = (x47 >> 0x30); + uint64_t x49 = (x47 & 0xffffffffffff); + uint64_t x50 = (x48 + x34); + uint64_t x51 = (x50 >> 0x2f); + uint64_t x52 = (x50 & 0x7fffffffffff); + 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_2e285m9_6limbs/fesquare.c b/src/Specific/solinas64_2e285m9_6limbs/fesquare.c new file mode 100644 index 000000000..0d70776b1 --- /dev/null +++ b/src/Specific/solinas64_2e285m9_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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 >> 0x30); + { uint64_t x18 = ((uint64_t)x16 & 0xffffffffffff); + { uint128_t x19 = (x17 + x15); + { uint64_t x20 = (uint64_t) (x19 >> 0x2f); + { uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffff); + { uint128_t x22 = (x20 + x14); + { uint64_t x23 = (uint64_t) (x22 >> 0x30); + { uint64_t x24 = ((uint64_t)x22 & 0xffffffffffff); + { uint128_t x25 = (x23 + x13); + { uint64_t x26 = (uint64_t) (x25 >> 0x2f); + { uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffff); + { uint128_t x28 = (x26 + x12); + { uint64_t x29 = (uint64_t) (x28 >> 0x30); + { uint64_t x30 = ((uint64_t)x28 & 0xffffffffffff); + { uint128_t x31 = (x29 + x11); + { uint64_t x32 = (uint64_t) (x31 >> 0x2f); + { uint64_t x33 = ((uint64_t)x31 & 0x7fffffffffff); + { uint64_t x34 = (x18 + (0x9 * x32)); + { uint64_t x35 = (x34 >> 0x30); + { uint64_t x36 = (x34 & 0xffffffffffff); + { uint64_t x37 = (x35 + x21); + { uint64_t x38 = (x37 >> 0x2f); + { uint64_t x39 = (x37 & 0x7fffffffffff); + 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_2e285m9_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e285m9_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..fc3ae692b --- /dev/null +++ b/src/Specific/solinas64_2e285m9_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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 >> 0x30); + uint64_t x18 = ((uint64_t)x16 & 0xffffffffffff); + uint128_t x19 = (x17 + x15); + uint64_t x20 = (uint64_t) (x19 >> 0x2f); + uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffff); + uint128_t x22 = (x20 + x14); + uint64_t x23 = (uint64_t) (x22 >> 0x30); + uint64_t x24 = ((uint64_t)x22 & 0xffffffffffff); + uint128_t x25 = (x23 + x13); + uint64_t x26 = (uint64_t) (x25 >> 0x2f); + uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffff); + uint128_t x28 = (x26 + x12); + uint64_t x29 = (uint64_t) (x28 >> 0x30); + uint64_t x30 = ((uint64_t)x28 & 0xffffffffffff); + uint128_t x31 = (x29 + x11); + uint64_t x32 = (uint64_t) (x31 >> 0x2f); + uint64_t x33 = ((uint64_t)x31 & 0x7fffffffffff); + uint64_t x34 = (x18 + (0x9 * x32)); + uint64_t x35 = (x34 >> 0x30); + uint64_t x36 = (x34 & 0xffffffffffff); + uint64_t x37 = (x35 + x21); + uint64_t x38 = (x37 >> 0x2f); + uint64_t x39 = (x37 & 0x7fffffffffff); + 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_2e285m9_6limbs/fesub.c b/src/Specific/solinas64_2e285m9_6limbs/fesub.c new file mode 100644 index 000000000..768d289e2 --- /dev/null +++ b/src/Specific/solinas64_2e285m9_6limbs/fesub.c @@ -0,0 +1,21 @@ +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] = ((Const 562949953421294 + x5) - x15); + out[1] = ((0xfffffffffffe + x7) - x17); + out[2] = ((0x1fffffffffffe + x9) - x19); + out[3] = ((0xfffffffffffe + x11) - x21); + out[4] = ((0x1fffffffffffe + x13) - x23); + out[5] = ((0xfffffffffffe + x12) - x22); + }}}}}}}}}}}} +} diff --git a/src/Specific/solinas64_2e285m9_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e285m9_6limbs/fesubDisplay.log new file mode 100644 index 000000000..75a2f0bd0 --- /dev/null +++ b/src/Specific/solinas64_2e285m9_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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, + (((0xfffffffffffe + x12) - x22), ((0x1fffffffffffe + x13) - x23), ((0xfffffffffffe + x11) - x21), ((0x1fffffffffffe + x9) - x19), ((0xfffffffffffe + x7) - x17), ((Const 562949953421294 + 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_2e285m9_6limbs/freeze.c b/src/Specific/solinas64_2e285m9_6limbs/freeze.c new file mode 100644 index 000000000..de5684ced --- /dev/null +++ b/src/Specific/solinas64_2e285m9_6limbs/freeze.c @@ -0,0 +1,34 @@ +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 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffff7); + { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x7fffffffffff); + { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffffffffff); + { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x7fffffffffff); + { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffffffffff); + { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x7fffffffffff); + { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + { uint64_t x30 = (x29 & 0xfffffffffff7); + { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30); + { uint64_t x34 = (x29 & 0x7fffffffffff); + { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 47 (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 & 0xffffffffffff); + { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 48 (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 & 0x7fffffffffff); + { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 47 (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 & 0xffffffffffff); + { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 48 (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 & 0x7fffffffffff); + { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 47 (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_2e285m9_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e285m9_6limbs/freezeDisplay.log new file mode 100644 index 000000000..ef01503b3 --- /dev/null +++ b/src/Specific/solinas64_2e285m9_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffff7); + uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x7fffffffffff); + uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffffffffff); + uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x7fffffffffff); + uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffffffffff); + uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x7fffffffffff); + uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + uint64_t x30 = (x29 & 0xfffffffffff7); + uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30); + uint64_t x34 = (x29 & 0x7fffffffffff); + uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 47 (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 & 0xffffffffffff); + uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 48 (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 & 0x7fffffffffff); + uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 47 (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 & 0xffffffffffff); + uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 48 (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 & 0x7fffffffffff); + uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 47 (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_2e291m19_6limbs/feadd.c b/src/Specific/solinas64_2e291m19_6limbs/feadd.c new file mode 100644 index 000000000..4a6bfb999 --- /dev/null +++ b/src/Specific/solinas64_2e291m19_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_2e291m19_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e291m19_6limbs/feaddDisplay.log new file mode 100644 index 000000000..e32995a81 --- /dev/null +++ b/src/Specific/solinas64_2e291m19_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_2e291m19_6limbs/femul.c b/src/Specific/solinas64_2e291m19_6limbs/femul.c new file mode 100644 index 000000000..f4d373414 --- /dev/null +++ b/src/Specific/solinas64_2e291m19_6limbs/femul.c @@ -0,0 +1,50 @@ +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))))) + (0x13 * (0x2 * ((uint128_t)x12 * x22)))); + { uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x13 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23)))); + { uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x13 * ((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)) + (0x13 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19)))))); + { uint128_t x29 = (((uint128_t)x5 * x15) + (0x13 * ((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 >> 0x31); + { uint64_t x31 = ((uint64_t)x29 & 0x1ffffffffffff); + { uint128_t x32 = (x30 + x28); + { uint64_t x33 = (uint64_t) (x32 >> 0x30); + { uint64_t x34 = ((uint64_t)x32 & 0xffffffffffff); + { uint128_t x35 = (x33 + x27); + { uint64_t x36 = (uint64_t) (x35 >> 0x31); + { uint64_t x37 = ((uint64_t)x35 & 0x1ffffffffffff); + { uint128_t x38 = (x36 + x26); + { uint64_t x39 = (uint64_t) (x38 >> 0x30); + { uint64_t x40 = ((uint64_t)x38 & 0xffffffffffff); + { uint128_t x41 = (x39 + x25); + { uint64_t x42 = (uint64_t) (x41 >> 0x31); + { uint64_t x43 = ((uint64_t)x41 & 0x1ffffffffffff); + { uint128_t x44 = (x42 + x24); + { uint64_t x45 = (uint64_t) (x44 >> 0x30); + { uint64_t x46 = ((uint64_t)x44 & 0xffffffffffff); + { uint64_t x47 = (x31 + (0x13 * x45)); + { uint64_t x48 = (x47 >> 0x31); + { uint64_t x49 = (x47 & 0x1ffffffffffff); + { uint64_t x50 = (x48 + x34); + { uint64_t x51 = (x50 >> 0x30); + { uint64_t x52 = (x50 & 0xffffffffffff); + 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_2e291m19_6limbs/femulDisplay.log b/src/Specific/solinas64_2e291m19_6limbs/femulDisplay.log new file mode 100644 index 000000000..94c4c74e7 --- /dev/null +++ b/src/Specific/solinas64_2e291m19_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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))))) + (0x13 * (0x2 * ((uint128_t)x12 * x22)))); + uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x13 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23)))); + uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x13 * ((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)) + (0x13 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19)))))); + uint128_t x29 = (((uint128_t)x5 * x15) + (0x13 * ((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 >> 0x31); + uint64_t x31 = ((uint64_t)x29 & 0x1ffffffffffff); + uint128_t x32 = (x30 + x28); + uint64_t x33 = (uint64_t) (x32 >> 0x30); + uint64_t x34 = ((uint64_t)x32 & 0xffffffffffff); + uint128_t x35 = (x33 + x27); + uint64_t x36 = (uint64_t) (x35 >> 0x31); + uint64_t x37 = ((uint64_t)x35 & 0x1ffffffffffff); + uint128_t x38 = (x36 + x26); + uint64_t x39 = (uint64_t) (x38 >> 0x30); + uint64_t x40 = ((uint64_t)x38 & 0xffffffffffff); + uint128_t x41 = (x39 + x25); + uint64_t x42 = (uint64_t) (x41 >> 0x31); + uint64_t x43 = ((uint64_t)x41 & 0x1ffffffffffff); + uint128_t x44 = (x42 + x24); + uint64_t x45 = (uint64_t) (x44 >> 0x30); + uint64_t x46 = ((uint64_t)x44 & 0xffffffffffff); + uint64_t x47 = (x31 + (0x13 * x45)); + uint64_t x48 = (x47 >> 0x31); + uint64_t x49 = (x47 & 0x1ffffffffffff); + uint64_t x50 = (x48 + x34); + uint64_t x51 = (x50 >> 0x30); + uint64_t x52 = (x50 & 0xffffffffffff); + 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_2e291m19_6limbs/fesquare.c b/src/Specific/solinas64_2e291m19_6limbs/fesquare.c new file mode 100644 index 000000000..755f6f939 --- /dev/null +++ b/src/Specific/solinas64_2e291m19_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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))))) + (0x13 * (0x2 * ((uint128_t)x9 * x9)))); + { uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x13 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10)))); + { uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x13 * ((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)) + (0x13 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6)))))); + { uint128_t x16 = (((uint128_t)x2 * x2) + (0x13 * ((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 >> 0x31); + { uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffff); + { uint128_t x19 = (x17 + x15); + { uint64_t x20 = (uint64_t) (x19 >> 0x30); + { uint64_t x21 = ((uint64_t)x19 & 0xffffffffffff); + { uint128_t x22 = (x20 + x14); + { uint64_t x23 = (uint64_t) (x22 >> 0x31); + { uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffffff); + { uint128_t x25 = (x23 + x13); + { uint64_t x26 = (uint64_t) (x25 >> 0x30); + { uint64_t x27 = ((uint64_t)x25 & 0xffffffffffff); + { uint128_t x28 = (x26 + x12); + { uint64_t x29 = (uint64_t) (x28 >> 0x31); + { uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffff); + { uint128_t x31 = (x29 + x11); + { uint64_t x32 = (uint64_t) (x31 >> 0x30); + { uint64_t x33 = ((uint64_t)x31 & 0xffffffffffff); + { uint64_t x34 = (x18 + (0x13 * x32)); + { uint64_t x35 = (x34 >> 0x31); + { uint64_t x36 = (x34 & 0x1ffffffffffff); + { uint64_t x37 = (x35 + x21); + { uint64_t x38 = (x37 >> 0x30); + { uint64_t x39 = (x37 & 0xffffffffffff); + 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_2e291m19_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e291m19_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..7226ad189 --- /dev/null +++ b/src/Specific/solinas64_2e291m19_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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))))) + (0x13 * (0x2 * ((uint128_t)x9 * x9)))); + uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x13 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10)))); + uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x13 * ((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)) + (0x13 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6)))))); + uint128_t x16 = (((uint128_t)x2 * x2) + (0x13 * ((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 >> 0x31); + uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffff); + uint128_t x19 = (x17 + x15); + uint64_t x20 = (uint64_t) (x19 >> 0x30); + uint64_t x21 = ((uint64_t)x19 & 0xffffffffffff); + uint128_t x22 = (x20 + x14); + uint64_t x23 = (uint64_t) (x22 >> 0x31); + uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffffff); + uint128_t x25 = (x23 + x13); + uint64_t x26 = (uint64_t) (x25 >> 0x30); + uint64_t x27 = ((uint64_t)x25 & 0xffffffffffff); + uint128_t x28 = (x26 + x12); + uint64_t x29 = (uint64_t) (x28 >> 0x31); + uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffff); + uint128_t x31 = (x29 + x11); + uint64_t x32 = (uint64_t) (x31 >> 0x30); + uint64_t x33 = ((uint64_t)x31 & 0xffffffffffff); + uint64_t x34 = (x18 + (0x13 * x32)); + uint64_t x35 = (x34 >> 0x31); + uint64_t x36 = (x34 & 0x1ffffffffffff); + uint64_t x37 = (x35 + x21); + uint64_t x38 = (x37 >> 0x30); + uint64_t x39 = (x37 & 0xffffffffffff); + 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_2e291m19_6limbs/fesub.c b/src/Specific/solinas64_2e291m19_6limbs/fesub.c new file mode 100644 index 000000000..547e5a7d1 --- /dev/null +++ b/src/Specific/solinas64_2e291m19_6limbs/fesub.c @@ -0,0 +1,21 @@ +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] = ((Const 1125899906842586 + x5) - x15); + out[1] = ((0x1fffffffffffe + x7) - x17); + out[2] = ((0x3fffffffffffe + x9) - x19); + out[3] = ((0x1fffffffffffe + x11) - x21); + out[4] = ((0x3fffffffffffe + x13) - x23); + out[5] = ((0x1fffffffffffe + x12) - x22); + }}}}}}}}}}}} +} diff --git a/src/Specific/solinas64_2e291m19_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e291m19_6limbs/fesubDisplay.log new file mode 100644 index 000000000..c611d0a71 --- /dev/null +++ b/src/Specific/solinas64_2e291m19_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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, + (((0x1fffffffffffe + x12) - x22), ((0x3fffffffffffe + x13) - x23), ((0x1fffffffffffe + x11) - x21), ((0x3fffffffffffe + x9) - x19), ((0x1fffffffffffe + x7) - x17), ((Const 1125899906842586 + 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_2e291m19_6limbs/freeze.c b/src/Specific/solinas64_2e291m19_6limbs/freeze.c new file mode 100644 index 000000000..7abb503f8 --- /dev/null +++ b/src/Specific/solinas64_2e291m19_6limbs/freeze.c @@ -0,0 +1,34 @@ +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 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffed); + { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffffff); + { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffffffffff); + { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffffffffff); + { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffffffffff); + { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffffff); + { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + { uint64_t x30 = (x29 & 0x1ffffffffffed); + { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30); + { uint64_t x34 = (x29 & 0xffffffffffff); + { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 48 (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 & 0x1ffffffffffff); + { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 49 (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 & 0xffffffffffff); + { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 48 (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 & 0x1ffffffffffff); + { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 49 (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 & 0xffffffffffff); + { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (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_2e291m19_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e291m19_6limbs/freezeDisplay.log new file mode 100644 index 000000000..e4eb25461 --- /dev/null +++ b/src/Specific/solinas64_2e291m19_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffed); + uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffffff); + uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffffffffff); + uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffffffffff); + uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffffffffff); + uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffffff); + uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL); + uint64_t x30 = (x29 & 0x1ffffffffffed); + uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30); + uint64_t x34 = (x29 & 0xffffffffffff); + uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 48 (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 & 0x1ffffffffffff); + uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 49 (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 & 0xffffffffffff); + uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 48 (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 & 0x1ffffffffffff); + uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 49 (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 & 0xffffffffffff); + uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (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_6limbs/feadd.c b/src/Specific/solinas64_2e321m9_6limbs/feadd.c new file mode 100644 index 000000000..4a6bfb999 --- /dev/null +++ b/src/Specific/solinas64_2e321m9_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e321m9_6limbs/feaddDisplay.log new file mode 100644 index 000000000..e32995a81 --- /dev/null +++ b/src/Specific/solinas64_2e321m9_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/femul.c b/src/Specific/solinas64_2e321m9_6limbs/femul.c new file mode 100644 index 000000000..688d2ca13 --- /dev/null +++ b/src/Specific/solinas64_2e321m9_6limbs/femul.c @@ -0,0 +1,50 @@ +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_6limbs/femulDisplay.log b/src/Specific/solinas64_2e321m9_6limbs/femulDisplay.log new file mode 100644 index 000000000..a5811c0f9 --- /dev/null +++ b/src/Specific/solinas64_2e321m9_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesquare.c b/src/Specific/solinas64_2e321m9_6limbs/fesquare.c new file mode 100644 index 000000000..b2b14b5c2 --- /dev/null +++ b/src/Specific/solinas64_2e321m9_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e321m9_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..d28671d0a --- /dev/null +++ b/src/Specific/solinas64_2e321m9_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesub.c b/src/Specific/solinas64_2e321m9_6limbs/fesub.c new file mode 100644 index 000000000..8e1ad691e --- /dev/null +++ b/src/Specific/solinas64_2e321m9_6limbs/fesub.c @@ -0,0 +1,21 @@ +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_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e321m9_6limbs/fesubDisplay.log new file mode 100644 index 000000000..4d9559435 --- /dev/null +++ b/src/Specific/solinas64_2e321m9_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/freeze.c b/src/Specific/solinas64_2e321m9_6limbs/freeze.c new file mode 100644 index 000000000..73c7dc587 --- /dev/null +++ b/src/Specific/solinas64_2e321m9_6limbs/freeze.c @@ -0,0 +1,34 @@ +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_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e321m9_6limbs/freezeDisplay.log new file mode 100644 index 000000000..a296ea7ed --- /dev/null +++ b/src/Specific/solinas64_2e321m9_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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_2e322m2e161m1_6limbs/feadd.c b/src/Specific/solinas64_2e322m2e161m1_6limbs/feadd.c new file mode 100644 index 000000000..4a6bfb999 --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_2e322m2e161m1_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e322m2e161m1_6limbs/feaddDisplay.log new file mode 100644 index 000000000..e32995a81 --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_2e322m2e161m1_6limbs/femul.c b/src/Specific/solinas64_2e322m2e161m1_6limbs/femul.c new file mode 100644 index 000000000..a43f6ae3f --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/femul.c @@ -0,0 +1,65 @@ +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 = ((0x2 * ((uint128_t)(x9 + x12) * (x19 + x22))) - (0x2 * ((uint128_t)x9 * x19))); + { uint128_t x25 = (((0x2 * ((uint128_t)(x7 + x13) * (x19 + x22))) + (0x2 * ((uint128_t)(x9 + x12) * (x17 + x23)))) - ((0x2 * ((uint128_t)x7 * x19)) + (0x2 * ((uint128_t)x9 * x17)))); + { uint128_t x26 = ((((uint128_t)(x5 + x11) * (x19 + x22)) + (((uint128_t)(x7 + x13) * (x17 + x23)) + ((uint128_t)(x9 + x12) * (x15 + x21)))) - (((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15)))); + { uint128_t x27 = ((((uint128_t)(x5 + x11) * (x17 + x23)) + ((uint128_t)(x7 + x13) * (x15 + x21))) - (((uint128_t)x5 * x17) + ((uint128_t)x7 * x15))); + { uint128_t x28 = (((uint128_t)(x5 + x11) * (x15 + x21)) - ((uint128_t)x5 * x15)); + { uint128_t x29 = ((((0x2 * ((uint128_t)x9 * x19)) + (0x2 * ((uint128_t)x12 * x22))) + x27) + x24); + { uint128_t x30 = (((((0x2 * ((uint128_t)x7 * x19)) + (0x2 * ((uint128_t)x9 * x17))) + ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))) + x28) + x25); + { uint128_t x31 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))); + { uint128_t x32 = (((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (((uint128_t)x11 * x23) + ((uint128_t)x13 * x21))) + x24); + { uint128_t x33 = ((((uint128_t)x5 * x15) + ((uint128_t)x11 * x21)) + x25); + { uint64_t x34 = (uint64_t) (x31 >> 0x35); + { uint64_t x35 = ((uint64_t)x31 & 0x1fffffffffffff); + { uint64_t x36 = (uint64_t) (x26 >> 0x35); + { uint64_t x37 = ((uint64_t)x26 & 0x1fffffffffffff); + { uint128_t x38 = (((uint128_t)0x20000000000000 * x36) + x37); + { uint64_t x39 = (uint64_t) (x38 >> 0x35); + { uint64_t x40 = ((uint64_t)x38 & 0x1fffffffffffff); + { uint128_t x41 = ((x34 + x30) + x39); + { uint64_t x42 = (uint64_t) (x41 >> 0x36); + { uint64_t x43 = ((uint64_t)x41 & 0x3fffffffffffff); + { uint128_t x44 = (x33 + x39); + { uint64_t x45 = (uint64_t) (x44 >> 0x36); + { uint64_t x46 = ((uint64_t)x44 & 0x3fffffffffffff); + { uint128_t x47 = (x42 + x29); + { uint64_t x48 = (uint64_t) (x47 >> 0x36); + { uint64_t x49 = ((uint64_t)x47 & 0x3fffffffffffff); + { uint128_t x50 = (x45 + x32); + { uint64_t x51 = (uint64_t) (x50 >> 0x36); + { uint64_t x52 = ((uint64_t)x50 & 0x3fffffffffffff); + { uint64_t x53 = (x48 + x40); + { uint64_t x54 = (x53 >> 0x35); + { uint64_t x55 = (x53 & 0x1fffffffffffff); + { uint64_t x56 = (x51 + x35); + { uint64_t x57 = (x56 >> 0x35); + { uint64_t x58 = (x56 & 0x1fffffffffffff); + { uint64_t x59 = ((0x20000000000000 * x54) + x55); + { uint64_t x60 = (x59 >> 0x35); + { uint64_t x61 = (x59 & 0x1fffffffffffff); + { uint64_t x62 = ((x57 + x43) + x60); + { uint64_t x63 = (x62 >> 0x36); + { uint64_t x64 = (x62 & 0x3fffffffffffff); + { uint64_t x65 = (x46 + x60); + { uint64_t x66 = (x65 >> 0x36); + { uint64_t x67 = (x65 & 0x3fffffffffffff); + out[0] = x67; + out[1] = (x66 + x52); + out[2] = x58; + out[3] = x64; + out[4] = (x63 + x49); + out[5] = x61; + }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} +} diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/femulDisplay.log b/src/Specific/solinas64_2e322m2e161m1_6limbs/femulDisplay.log new file mode 100644 index 000000000..70b6e2902 --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/femulDisplay.log @@ -0,0 +1,51 @@ +λ 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 = ((0x2 * ((uint128_t)(x9 + x12) * (x19 + x22))) - (0x2 * ((uint128_t)x9 * x19))); + uint128_t x25 = (((0x2 * ((uint128_t)(x7 + x13) * (x19 + x22))) + (0x2 * ((uint128_t)(x9 + x12) * (x17 + x23)))) - ((0x2 * ((uint128_t)x7 * x19)) + (0x2 * ((uint128_t)x9 * x17)))); + uint128_t x26 = ((((uint128_t)(x5 + x11) * (x19 + x22)) + (((uint128_t)(x7 + x13) * (x17 + x23)) + ((uint128_t)(x9 + x12) * (x15 + x21)))) - (((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15)))); + uint128_t x27 = ((((uint128_t)(x5 + x11) * (x17 + x23)) + ((uint128_t)(x7 + x13) * (x15 + x21))) - (((uint128_t)x5 * x17) + ((uint128_t)x7 * x15))); + uint128_t x28 = (((uint128_t)(x5 + x11) * (x15 + x21)) - ((uint128_t)x5 * x15)); + uint128_t x29 = ((((0x2 * ((uint128_t)x9 * x19)) + (0x2 * ((uint128_t)x12 * x22))) + x27) + x24); + uint128_t x30 = (((((0x2 * ((uint128_t)x7 * x19)) + (0x2 * ((uint128_t)x9 * x17))) + ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))) + x28) + x25); + uint128_t x31 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))); + uint128_t x32 = (((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (((uint128_t)x11 * x23) + ((uint128_t)x13 * x21))) + x24); + uint128_t x33 = ((((uint128_t)x5 * x15) + ((uint128_t)x11 * x21)) + x25); + uint64_t x34 = (uint64_t) (x31 >> 0x35); + uint64_t x35 = ((uint64_t)x31 & 0x1fffffffffffff); + uint64_t x36 = (uint64_t) (x26 >> 0x35); + uint64_t x37 = ((uint64_t)x26 & 0x1fffffffffffff); + uint128_t x38 = (((uint128_t)0x20000000000000 * x36) + x37); + uint64_t x39 = (uint64_t) (x38 >> 0x35); + uint64_t x40 = ((uint64_t)x38 & 0x1fffffffffffff); + uint128_t x41 = ((x34 + x30) + x39); + uint64_t x42 = (uint64_t) (x41 >> 0x36); + uint64_t x43 = ((uint64_t)x41 & 0x3fffffffffffff); + uint128_t x44 = (x33 + x39); + uint64_t x45 = (uint64_t) (x44 >> 0x36); + uint64_t x46 = ((uint64_t)x44 & 0x3fffffffffffff); + uint128_t x47 = (x42 + x29); + uint64_t x48 = (uint64_t) (x47 >> 0x36); + uint64_t x49 = ((uint64_t)x47 & 0x3fffffffffffff); + uint128_t x50 = (x45 + x32); + uint64_t x51 = (uint64_t) (x50 >> 0x36); + uint64_t x52 = ((uint64_t)x50 & 0x3fffffffffffff); + uint64_t x53 = (x48 + x40); + uint64_t x54 = (x53 >> 0x35); + uint64_t x55 = (x53 & 0x1fffffffffffff); + uint64_t x56 = (x51 + x35); + uint64_t x57 = (x56 >> 0x35); + uint64_t x58 = (x56 & 0x1fffffffffffff); + uint64_t x59 = ((0x20000000000000 * x54) + x55); + uint64_t x60 = (x59 >> 0x35); + uint64_t x61 = (x59 & 0x1fffffffffffff); + uint64_t x62 = ((x57 + x43) + x60); + uint64_t x63 = (x62 >> 0x36); + uint64_t x64 = (x62 & 0x3fffffffffffff); + uint64_t x65 = (x46 + x60); + uint64_t x66 = (x65 >> 0x36); + uint64_t x67 = (x65 & 0x3fffffffffffff); + return (Return x61, (x63 + x49), Return x64, Return x58, (x66 + x52), Return x67)) +(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_2e322m2e161m1_6limbs/fesquare.c b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesquare.c new file mode 100644 index 000000000..282118f83 --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesquare.c @@ -0,0 +1,59 @@ +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 = ((0x2 * ((uint128_t)(x6 + x9) * (x6 + x9))) - (0x2 * ((uint128_t)x6 * x6))); + { uint128_t x12 = (((0x2 * ((uint128_t)(x4 + x10) * (x6 + x9))) + (0x2 * ((uint128_t)(x6 + x9) * (x4 + x10)))) - ((0x2 * ((uint128_t)x4 * x6)) + (0x2 * ((uint128_t)x6 * x4)))); + { uint128_t x13 = ((((uint128_t)(x2 + x8) * (x6 + x9)) + (((uint128_t)(x4 + x10) * (x4 + x10)) + ((uint128_t)(x6 + x9) * (x2 + x8)))) - (((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2)))); + { uint128_t x14 = ((((uint128_t)(x2 + x8) * (x4 + x10)) + ((uint128_t)(x4 + x10) * (x2 + x8))) - (((uint128_t)x2 * x4) + ((uint128_t)x4 * x2))); + { uint128_t x15 = (((uint128_t)(x2 + x8) * (x2 + x8)) - ((uint128_t)x2 * x2)); + { uint128_t x16 = ((((0x2 * ((uint128_t)x6 * x6)) + (0x2 * ((uint128_t)x9 * x9))) + x14) + x11); + { uint128_t x17 = (((((0x2 * ((uint128_t)x4 * x6)) + (0x2 * ((uint128_t)x6 * x4))) + ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))) + x15) + x12); + { uint128_t x18 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))); + { uint128_t x19 = (((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x8 * x10) + ((uint128_t)x10 * x8))) + x11); + { uint128_t x20 = ((((uint128_t)x2 * x2) + ((uint128_t)x8 * x8)) + x12); + { uint64_t x21 = (uint64_t) (x18 >> 0x35); + { uint64_t x22 = ((uint64_t)x18 & 0x1fffffffffffff); + { uint64_t x23 = (uint64_t) (x13 >> 0x35); + { uint64_t x24 = ((uint64_t)x13 & 0x1fffffffffffff); + { uint128_t x25 = (((uint128_t)0x20000000000000 * x23) + x24); + { uint64_t x26 = (uint64_t) (x25 >> 0x35); + { uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffffff); + { uint128_t x28 = ((x21 + x17) + x26); + { uint64_t x29 = (uint64_t) (x28 >> 0x36); + { uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffffff); + { uint128_t x31 = (x20 + x26); + { uint64_t x32 = (uint64_t) (x31 >> 0x36); + { uint64_t x33 = ((uint64_t)x31 & 0x3fffffffffffff); + { uint128_t x34 = (x29 + x16); + { uint64_t x35 = (uint64_t) (x34 >> 0x36); + { uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffffff); + { uint128_t x37 = (x32 + x19); + { uint64_t x38 = (uint64_t) (x37 >> 0x36); + { uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffffff); + { uint64_t x40 = (x35 + x27); + { uint64_t x41 = (x40 >> 0x35); + { uint64_t x42 = (x40 & 0x1fffffffffffff); + { uint64_t x43 = (x38 + x22); + { uint64_t x44 = (x43 >> 0x35); + { uint64_t x45 = (x43 & 0x1fffffffffffff); + { uint64_t x46 = ((0x20000000000000 * x41) + x42); + { uint64_t x47 = (x46 >> 0x35); + { uint64_t x48 = (x46 & 0x1fffffffffffff); + { uint64_t x49 = ((x44 + x30) + x47); + { uint64_t x50 = (x49 >> 0x36); + { uint64_t x51 = (x49 & 0x3fffffffffffff); + { uint64_t x52 = (x33 + x47); + { uint64_t x53 = (x52 >> 0x36); + { uint64_t x54 = (x52 & 0x3fffffffffffff); + out[0] = x54; + out[1] = (x53 + x39); + out[2] = x45; + out[3] = x51; + out[4] = (x50 + x36); + out[5] = x48; + }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} +} diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..f6f72ce2b --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesquareDisplay.log @@ -0,0 +1,51 @@ +λ x : word64 * word64 * word64 * word64 * word64 * word64, +Interp-η +(λ var : Syntax.base_type → Type, + λ '(x9, x10, x8, x6, x4, x2)%core, + uint128_t x11 = ((0x2 * ((uint128_t)(x6 + x9) * (x6 + x9))) - (0x2 * ((uint128_t)x6 * x6))); + uint128_t x12 = (((0x2 * ((uint128_t)(x4 + x10) * (x6 + x9))) + (0x2 * ((uint128_t)(x6 + x9) * (x4 + x10)))) - ((0x2 * ((uint128_t)x4 * x6)) + (0x2 * ((uint128_t)x6 * x4)))); + uint128_t x13 = ((((uint128_t)(x2 + x8) * (x6 + x9)) + (((uint128_t)(x4 + x10) * (x4 + x10)) + ((uint128_t)(x6 + x9) * (x2 + x8)))) - (((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2)))); + uint128_t x14 = ((((uint128_t)(x2 + x8) * (x4 + x10)) + ((uint128_t)(x4 + x10) * (x2 + x8))) - (((uint128_t)x2 * x4) + ((uint128_t)x4 * x2))); + uint128_t x15 = (((uint128_t)(x2 + x8) * (x2 + x8)) - ((uint128_t)x2 * x2)); + uint128_t x16 = ((((0x2 * ((uint128_t)x6 * x6)) + (0x2 * ((uint128_t)x9 * x9))) + x14) + x11); + uint128_t x17 = (((((0x2 * ((uint128_t)x4 * x6)) + (0x2 * ((uint128_t)x6 * x4))) + ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))) + x15) + x12); + uint128_t x18 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))); + uint128_t x19 = (((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x8 * x10) + ((uint128_t)x10 * x8))) + x11); + uint128_t x20 = ((((uint128_t)x2 * x2) + ((uint128_t)x8 * x8)) + x12); + uint64_t x21 = (uint64_t) (x18 >> 0x35); + uint64_t x22 = ((uint64_t)x18 & 0x1fffffffffffff); + uint64_t x23 = (uint64_t) (x13 >> 0x35); + uint64_t x24 = ((uint64_t)x13 & 0x1fffffffffffff); + uint128_t x25 = (((uint128_t)0x20000000000000 * x23) + x24); + uint64_t x26 = (uint64_t) (x25 >> 0x35); + uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffffff); + uint128_t x28 = ((x21 + x17) + x26); + uint64_t x29 = (uint64_t) (x28 >> 0x36); + uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffffff); + uint128_t x31 = (x20 + x26); + uint64_t x32 = (uint64_t) (x31 >> 0x36); + uint64_t x33 = ((uint64_t)x31 & 0x3fffffffffffff); + uint128_t x34 = (x29 + x16); + uint64_t x35 = (uint64_t) (x34 >> 0x36); + uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffffff); + uint128_t x37 = (x32 + x19); + uint64_t x38 = (uint64_t) (x37 >> 0x36); + uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffffff); + uint64_t x40 = (x35 + x27); + uint64_t x41 = (x40 >> 0x35); + uint64_t x42 = (x40 & 0x1fffffffffffff); + uint64_t x43 = (x38 + x22); + uint64_t x44 = (x43 >> 0x35); + uint64_t x45 = (x43 & 0x1fffffffffffff); + uint64_t x46 = ((0x20000000000000 * x41) + x42); + uint64_t x47 = (x46 >> 0x35); + uint64_t x48 = (x46 & 0x1fffffffffffff); + uint64_t x49 = ((x44 + x30) + x47); + uint64_t x50 = (x49 >> 0x36); + uint64_t x51 = (x49 & 0x3fffffffffffff); + uint64_t x52 = (x33 + x47); + uint64_t x53 = (x52 >> 0x36); + uint64_t x54 = (x52 & 0x3fffffffffffff); + return (Return x48, (x50 + x36), Return x51, Return x45, (x53 + x39), Return x54)) +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_2e322m2e161m1_6limbs/fesub.c b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesub.c new file mode 100644 index 000000000..891564394 --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesub.c @@ -0,0 +1,21 @@ +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] = ((0x7ffffffffffffe + x5) - x15); + out[1] = ((0x7ffffffffffffe + x7) - x17); + out[2] = ((0x3ffffffffffffe + x9) - x19); + out[3] = ((0x7ffffffffffffc + x11) - x21); + out[4] = ((0x7ffffffffffffe + x13) - x23); + out[5] = ((0x3ffffffffffffe + x12) - x22); + }}}}}}}}}}}} +} diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesubDisplay.log new file mode 100644 index 000000000..515b3aa45 --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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), ((0x7ffffffffffffc + x11) - x21), ((0x3ffffffffffffe + x9) - x19), ((0x7ffffffffffffe + x7) - x17), ((0x7ffffffffffffe + 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_2e322m2e161m1_6limbs/freeze.c b/src/Specific/solinas64_2e322m2e161m1_6limbs/freeze.c new file mode 100644 index 000000000..56fd8aa6a --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/freeze.c @@ -0,0 +1,34 @@ +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, 0x3fffffffffffff); + { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x3fffffffffffff); + { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x1fffffffffffff); + { 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 x8, 0x3ffffffffffffe); + { 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 & 0x3fffffffffffff); + { 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 & 0x3fffffffffffff); + { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 54 (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 & 0x1fffffffffffff); + { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 53 (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 & 0x3ffffffffffffe); + { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 54 (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_2e322m2e161m1_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e322m2e161m1_6limbs/freezeDisplay.log new file mode 100644 index 000000000..430abdfab --- /dev/null +++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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, 0x3fffffffffffff); + uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x3fffffffffffff); + uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x1fffffffffffff); + 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 x8, 0x3ffffffffffffe); + 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 & 0x3fffffffffffff); + 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 & 0x3fffffffffffff); + uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 54 (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 & 0x1fffffffffffff); + uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 53 (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 & 0x3ffffffffffffe); + uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 54 (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_2e336m17_6limbs/feadd.c b/src/Specific/solinas64_2e336m17_6limbs/feadd.c new file mode 100644 index 000000000..4a6bfb999 --- /dev/null +++ b/src/Specific/solinas64_2e336m17_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e336m17_6limbs/feaddDisplay.log new file mode 100644 index 000000000..e32995a81 --- /dev/null +++ b/src/Specific/solinas64_2e336m17_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/femul.c b/src/Specific/solinas64_2e336m17_6limbs/femul.c new file mode 100644 index 000000000..9e663e79f --- /dev/null +++ b/src/Specific/solinas64_2e336m17_6limbs/femul.c @@ -0,0 +1,50 @@ +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_6limbs/femulDisplay.log b/src/Specific/solinas64_2e336m17_6limbs/femulDisplay.log new file mode 100644 index 000000000..dba3aac29 --- /dev/null +++ b/src/Specific/solinas64_2e336m17_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesquare.c b/src/Specific/solinas64_2e336m17_6limbs/fesquare.c new file mode 100644 index 000000000..86e650785 --- /dev/null +++ b/src/Specific/solinas64_2e336m17_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e336m17_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..582686440 --- /dev/null +++ b/src/Specific/solinas64_2e336m17_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesub.c b/src/Specific/solinas64_2e336m17_6limbs/fesub.c new file mode 100644 index 000000000..3728606e2 --- /dev/null +++ b/src/Specific/solinas64_2e336m17_6limbs/fesub.c @@ -0,0 +1,21 @@ +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_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e336m17_6limbs/fesubDisplay.log new file mode 100644 index 000000000..6df841701 --- /dev/null +++ b/src/Specific/solinas64_2e336m17_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/freeze.c b/src/Specific/solinas64_2e336m17_6limbs/freeze.c new file mode 100644 index 000000000..ff74991e3 --- /dev/null +++ b/src/Specific/solinas64_2e336m17_6limbs/freeze.c @@ -0,0 +1,34 @@ +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_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e336m17_6limbs/freezeDisplay.log new file mode 100644 index 000000000..d1153b6c6 --- /dev/null +++ b/src/Specific/solinas64_2e336m17_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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_2e336m3_6limbs/feadd.c b/src/Specific/solinas64_2e336m3_6limbs/feadd.c new file mode 100644 index 000000000..4a6bfb999 --- /dev/null +++ b/src/Specific/solinas64_2e336m3_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e336m3_6limbs/feaddDisplay.log new file mode 100644 index 000000000..e32995a81 --- /dev/null +++ b/src/Specific/solinas64_2e336m3_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/femul.c b/src/Specific/solinas64_2e336m3_6limbs/femul.c new file mode 100644 index 000000000..879ec974c --- /dev/null +++ b/src/Specific/solinas64_2e336m3_6limbs/femul.c @@ -0,0 +1,50 @@ +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_6limbs/femulDisplay.log b/src/Specific/solinas64_2e336m3_6limbs/femulDisplay.log new file mode 100644 index 000000000..9540c82ee --- /dev/null +++ b/src/Specific/solinas64_2e336m3_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesquare.c b/src/Specific/solinas64_2e336m3_6limbs/fesquare.c new file mode 100644 index 000000000..5ccf65c0c --- /dev/null +++ b/src/Specific/solinas64_2e336m3_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e336m3_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..1a676031c --- /dev/null +++ b/src/Specific/solinas64_2e336m3_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesub.c b/src/Specific/solinas64_2e336m3_6limbs/fesub.c new file mode 100644 index 000000000..f680cabb5 --- /dev/null +++ b/src/Specific/solinas64_2e336m3_6limbs/fesub.c @@ -0,0 +1,21 @@ +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_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e336m3_6limbs/fesubDisplay.log new file mode 100644 index 000000000..f11308491 --- /dev/null +++ b/src/Specific/solinas64_2e336m3_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/freeze.c b/src/Specific/solinas64_2e336m3_6limbs/freeze.c new file mode 100644 index 000000000..41a597f18 --- /dev/null +++ b/src/Specific/solinas64_2e336m3_6limbs/freeze.c @@ -0,0 +1,34 @@ +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_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e336m3_6limbs/freezeDisplay.log new file mode 100644 index 000000000..64e67c28c --- /dev/null +++ b/src/Specific/solinas64_2e336m3_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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_2e338m15_6limbs/feadd.c b/src/Specific/solinas64_2e338m15_6limbs/feadd.c new file mode 100644 index 000000000..4a6bfb999 --- /dev/null +++ b/src/Specific/solinas64_2e338m15_6limbs/feadd.c @@ -0,0 +1,21 @@ +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_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e338m15_6limbs/feaddDisplay.log new file mode 100644 index 000000000..e32995a81 --- /dev/null +++ b/src/Specific/solinas64_2e338m15_6limbs/feaddDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/femul.c b/src/Specific/solinas64_2e338m15_6limbs/femul.c new file mode 100644 index 000000000..b1b0c9dbc --- /dev/null +++ b/src/Specific/solinas64_2e338m15_6limbs/femul.c @@ -0,0 +1,50 @@ +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_6limbs/femulDisplay.log b/src/Specific/solinas64_2e338m15_6limbs/femulDisplay.log new file mode 100644 index 000000000..c00b329ae --- /dev/null +++ b/src/Specific/solinas64_2e338m15_6limbs/femulDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesquare.c b/src/Specific/solinas64_2e338m15_6limbs/fesquare.c new file mode 100644 index 000000000..0c19e81c2 --- /dev/null +++ b/src/Specific/solinas64_2e338m15_6limbs/fesquare.c @@ -0,0 +1,44 @@ +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_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e338m15_6limbs/fesquareDisplay.log new file mode 100644 index 000000000..20434092e --- /dev/null +++ b/src/Specific/solinas64_2e338m15_6limbs/fesquareDisplay.log @@ -0,0 +1,36 @@ +λ 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_6limbs/fesub.c b/src/Specific/solinas64_2e338m15_6limbs/fesub.c new file mode 100644 index 000000000..58f3e1e4b --- /dev/null +++ b/src/Specific/solinas64_2e338m15_6limbs/fesub.c @@ -0,0 +1,21 @@ +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_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e338m15_6limbs/fesubDisplay.log new file mode 100644 index 000000000..9eb96c91d --- /dev/null +++ b/src/Specific/solinas64_2e338m15_6limbs/fesubDisplay.log @@ -0,0 +1,7 @@ +λ 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_6limbs/freeze.c b/src/Specific/solinas64_2e338m15_6limbs/freeze.c new file mode 100644 index 000000000..9163faff6 --- /dev/null +++ b/src/Specific/solinas64_2e338m15_6limbs/freeze.c @@ -0,0 +1,34 @@ +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_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e338m15_6limbs/freezeDisplay.log new file mode 100644 index 000000000..d2d9556a4 --- /dev/null +++ b/src/Specific/solinas64_2e338m15_6limbs/freezeDisplay.log @@ -0,0 +1,26 @@ +λ 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) |