From 37a8b2a0c14082298d77f0a4858ab3402d9d1c6c Mon Sep 17 00:00:00 2001 From: Jason Gross Date: Thu, 2 Nov 2017 02:20:52 -0400 Subject: Update display logs and c files --- src/Specific/montgomery32_2e150m5/feadd.c | 76 +++--- src/Specific/montgomery32_2e150m5/femul.c | 392 +++++++++++++++--------------- src/Specific/montgomery32_2e150m5/fenz.c | 39 +-- src/Specific/montgomery32_2e150m5/feopp.c | 71 +++--- src/Specific/montgomery32_2e150m5/fesub.c | 76 +++--- 5 files changed, 302 insertions(+), 352 deletions(-) (limited to 'src/Specific/montgomery32_2e150m5') diff --git a/src/Specific/montgomery32_2e150m5/feadd.c b/src/Specific/montgomery32_2e150m5/feadd.c index f0c527d11..d39f224e8 100644 --- a/src/Specific/montgomery32_2e150m5/feadd.c +++ b/src/Specific/montgomery32_2e150m5/feadd.c @@ -1,42 +1,34 @@ -#include -#include -#include -#include "liblow.h" - -#include "feadd.h" - -typedef unsigned int uint128_t __attribute__((mode(TI))); - -#if (defined(__GNUC__) || defined(__GNUG__)) && !(defined(__clang__)||defined(__INTEL_COMPILER)) -// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81294 -#define _subborrow_u32 __builtin_ia32_sbb_u32 -#define _subborrow_u64 __builtin_ia32_sbb_u64 -#endif - -#undef force_inline -#define force_inline __attribute__((always_inline)) - -void force_inline feadd(uint64_t* out, uint64_t x10, uint64_t x11, uint64_t x9, uint64_t x7, uint64_t x5, uint64_t x18, uint64_t x19, uint64_t x17, uint64_t x15, uint64_t x13) -{ uint32_t x21; uint8_t x22 = _addcarryx_u32(0x0, x5, x13, &x21); -{ uint32_t x24; uint8_t x25 = _addcarryx_u32(x22, x7, x15, &x24); -{ uint32_t x27; uint8_t x28 = _addcarryx_u32(x25, x9, x17, &x27); -{ uint32_t x30; uint8_t x31 = _addcarryx_u32(x28, x11, x19, &x30); -{ uint32_t x33; uint8_t x34 = _addcarryx_u32(x31, x10, x18, &x33); -{ uint32_t x36; uint8_t x37 = _subborrow_u32(0x0, x21, 0xfffffffb, &x36); -{ uint32_t x39; uint8_t x40 = _subborrow_u32(x37, x24, 0xffffffff, &x39); -{ uint32_t x42; uint8_t x43 = _subborrow_u32(x40, x27, 0xffffffff, &x42); -{ uint32_t x45; uint8_t x46 = _subborrow_u32(x43, x30, 0xffffffff, &x45); -{ uint32_t x48; uint8_t x49 = _subborrow_u32(x46, x33, 0x3fffff, &x48); -{ uint32_t _; uint8_t x52 = _subborrow_u32(x49, x34, 0x0, &_); -{ uint32_t x53 = cmovznz(x52, x48, x33); -{ uint32_t x54 = cmovznz(x52, x45, x30); -{ uint32_t x55 = cmovznz(x52, x42, x27); -{ uint32_t x56 = cmovznz(x52, x39, x24); -{ uint32_t x57 = cmovznz(x52, x36, x21); -out[0] = x53; -out[1] = x54; -out[2] = x55; -out[3] = x56; -out[4] = x57; -}}}}}}}}}}}}}}}} -// caller: uint64_t out[5]; +static void feadd(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) { + { const uint32_t x10 = in1[4]; + { const uint32_t x11 = in1[3]; + { const uint32_t x9 = in1[2]; + { const uint32_t x7 = in1[1]; + { const uint32_t x5 = in1[0]; + { const uint32_t x18 = in2[4]; + { const uint32_t x19 = in2[3]; + { const uint32_t x17 = in2[2]; + { const uint32_t x15 = in2[1]; + { const uint32_t x13 = in2[0]; + { uint32_t x21; uint8_t x22 = _addcarryx_u32(0x0, x5, x13, &x21); + { uint32_t x24; uint8_t x25 = _addcarryx_u32(x22, x7, x15, &x24); + { uint32_t x27; uint8_t x28 = _addcarryx_u32(x25, x9, x17, &x27); + { uint32_t x30; uint8_t x31 = _addcarryx_u32(x28, x11, x19, &x30); + { uint32_t x33; uint8_t x34 = _addcarryx_u32(x31, x10, x18, &x33); + { uint32_t x36; uint8_t x37 = _subborrow_u32(0x0, x21, 0xfffffffb, &x36); + { uint32_t x39; uint8_t x40 = _subborrow_u32(x37, x24, 0xffffffff, &x39); + { uint32_t x42; uint8_t x43 = _subborrow_u32(x40, x27, 0xffffffff, &x42); + { uint32_t x45; uint8_t x46 = _subborrow_u32(x43, x30, 0xffffffff, &x45); + { uint32_t x48; uint8_t x49 = _subborrow_u32(x46, x33, 0x3fffff, &x48); + { uint32_t _; uint8_t x52 = _subborrow_u32(x49, x34, 0x0, &_); + { uint32_t x53 = cmovznz(x52, x48, x33); + { uint32_t x54 = cmovznz(x52, x45, x30); + { uint32_t x55 = cmovznz(x52, x42, x27); + { uint32_t x56 = cmovznz(x52, x39, x24); + { uint32_t x57 = cmovznz(x52, x36, x21); + out[0] = x57; + out[1] = x56; + out[2] = x55; + out[3] = x54; + out[4] = x53; + }}}}}}}}}}}}}}}}}}}}}}}}}} +} diff --git a/src/Specific/montgomery32_2e150m5/femul.c b/src/Specific/montgomery32_2e150m5/femul.c index b0134aeff..19902bde1 100644 --- a/src/Specific/montgomery32_2e150m5/femul.c +++ b/src/Specific/montgomery32_2e150m5/femul.c @@ -1,200 +1,192 @@ -#include -#include -#include -#include "liblow.h" - -#include "femul.h" - -typedef unsigned int uint128_t __attribute__((mode(TI))); - -#if (defined(__GNUC__) || defined(__GNUG__)) && !(defined(__clang__)||defined(__INTEL_COMPILER)) -// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81294 -#define _subborrow_u32 __builtin_ia32_sbb_u32 -#define _subborrow_u64 __builtin_ia32_sbb_u64 -#endif - -#undef force_inline -#define force_inline __attribute__((always_inline)) - -void force_inline femul(uint64_t* out, uint64_t x10, uint64_t x11, uint64_t x9, uint64_t x7, uint64_t x5, uint64_t x18, uint64_t x19, uint64_t x17, uint64_t x15, uint64_t x13) -{ uint32_t x22; uint32_t x21 = _mulx_u32(x5, x13, &x22); -{ uint32_t x25; uint32_t x24 = _mulx_u32(x5, x15, &x25); -{ uint32_t x28; uint32_t x27 = _mulx_u32(x5, x17, &x28); -{ uint32_t x31; uint32_t x30 = _mulx_u32(x5, x19, &x31); -{ uint32_t x34; uint32_t x33 = _mulx_u32(x5, x18, &x34); -{ uint32_t x36; uint8_t x37 = _addcarryx_u32(0x0, x22, x24, &x36); -{ uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x25, x27, &x39); -{ uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x28, x30, &x42); -{ uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x31, x33, &x45); -{ uint32_t x48; uint8_t _ = _addcarryx_u32(0x0, x46, x34, &x48); -{ uint32_t _; uint32_t x51 = _mulx_u32(x21, 0xcccccccd, &_); -{ uint32_t x55; uint32_t x54 = _mulx_u32(x51, 0xfffffffb, &x55); -{ uint32_t x58; uint32_t x57 = _mulx_u32(x51, 0xffffffff, &x58); -{ uint32_t x61; uint32_t x60 = _mulx_u32(x51, 0xffffffff, &x61); -{ uint32_t x64; uint32_t x63 = _mulx_u32(x51, 0xffffffff, &x64); -{ uint32_t x67; uint32_t x66 = _mulx_u32(x51, 0x3fffff, &x67); -{ uint32_t x69; uint8_t x70 = _addcarryx_u32(0x0, x55, x57, &x69); -{ uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x58, x60, &x72); -{ uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x61, x63, &x75); -{ uint32_t x78; uint8_t x79 = _addcarryx_u32(x76, x64, x66, &x78); -{ uint32_t x81; uint8_t _ = _addcarryx_u32(0x0, x79, x67, &x81); -{ uint32_t _; uint8_t x85 = _addcarryx_u32(0x0, x21, x54, &_); -{ uint32_t x87; uint8_t x88 = _addcarryx_u32(x85, x36, x69, &x87); -{ uint32_t x90; uint8_t x91 = _addcarryx_u32(x88, x39, x72, &x90); -{ uint32_t x93; uint8_t x94 = _addcarryx_u32(x91, x42, x75, &x93); -{ uint32_t x96; uint8_t x97 = _addcarryx_u32(x94, x45, x78, &x96); -{ uint32_t x99; uint8_t x100 = _addcarryx_u32(x97, x48, x81, &x99); -{ uint32_t x103; uint32_t x102 = _mulx_u32(x7, x13, &x103); -{ uint32_t x106; uint32_t x105 = _mulx_u32(x7, x15, &x106); -{ uint32_t x109; uint32_t x108 = _mulx_u32(x7, x17, &x109); -{ uint32_t x112; uint32_t x111 = _mulx_u32(x7, x19, &x112); -{ uint32_t x115; uint32_t x114 = _mulx_u32(x7, x18, &x115); -{ uint32_t x117; uint8_t x118 = _addcarryx_u32(0x0, x103, x105, &x117); -{ uint32_t x120; uint8_t x121 = _addcarryx_u32(x118, x106, x108, &x120); -{ uint32_t x123; uint8_t x124 = _addcarryx_u32(x121, x109, x111, &x123); -{ uint32_t x126; uint8_t x127 = _addcarryx_u32(x124, x112, x114, &x126); -{ uint32_t x129; uint8_t _ = _addcarryx_u32(0x0, x127, x115, &x129); -{ uint32_t x132; uint8_t x133 = _addcarryx_u32(0x0, x87, x102, &x132); -{ uint32_t x135; uint8_t x136 = _addcarryx_u32(x133, x90, x117, &x135); -{ uint32_t x138; uint8_t x139 = _addcarryx_u32(x136, x93, x120, &x138); -{ uint32_t x141; uint8_t x142 = _addcarryx_u32(x139, x96, x123, &x141); -{ uint32_t x144; uint8_t x145 = _addcarryx_u32(x142, x99, x126, &x144); -{ uint32_t x147; uint8_t x148 = _addcarryx_u32(x145, x100, x129, &x147); -{ uint32_t _; uint32_t x150 = _mulx_u32(x132, 0xcccccccd, &_); -{ uint32_t x154; uint32_t x153 = _mulx_u32(x150, 0xfffffffb, &x154); -{ uint32_t x157; uint32_t x156 = _mulx_u32(x150, 0xffffffff, &x157); -{ uint32_t x160; uint32_t x159 = _mulx_u32(x150, 0xffffffff, &x160); -{ uint32_t x163; uint32_t x162 = _mulx_u32(x150, 0xffffffff, &x163); -{ uint32_t x166; uint32_t x165 = _mulx_u32(x150, 0x3fffff, &x166); -{ uint32_t x168; uint8_t x169 = _addcarryx_u32(0x0, x154, x156, &x168); -{ uint32_t x171; uint8_t x172 = _addcarryx_u32(x169, x157, x159, &x171); -{ uint32_t x174; uint8_t x175 = _addcarryx_u32(x172, x160, x162, &x174); -{ uint32_t x177; uint8_t x178 = _addcarryx_u32(x175, x163, x165, &x177); -{ uint32_t x180; uint8_t _ = _addcarryx_u32(0x0, x178, x166, &x180); -{ uint32_t _; uint8_t x184 = _addcarryx_u32(0x0, x132, x153, &_); -{ uint32_t x186; uint8_t x187 = _addcarryx_u32(x184, x135, x168, &x186); -{ uint32_t x189; uint8_t x190 = _addcarryx_u32(x187, x138, x171, &x189); -{ uint32_t x192; uint8_t x193 = _addcarryx_u32(x190, x141, x174, &x192); -{ uint32_t x195; uint8_t x196 = _addcarryx_u32(x193, x144, x177, &x195); -{ uint32_t x198; uint8_t x199 = _addcarryx_u32(x196, x147, x180, &x198); -{ uint8_t x200 = (x199 + x148); -{ uint32_t x203; uint32_t x202 = _mulx_u32(x9, x13, &x203); -{ uint32_t x206; uint32_t x205 = _mulx_u32(x9, x15, &x206); -{ uint32_t x209; uint32_t x208 = _mulx_u32(x9, x17, &x209); -{ uint32_t x212; uint32_t x211 = _mulx_u32(x9, x19, &x212); -{ uint32_t x215; uint32_t x214 = _mulx_u32(x9, x18, &x215); -{ uint32_t x217; uint8_t x218 = _addcarryx_u32(0x0, x203, x205, &x217); -{ uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x206, x208, &x220); -{ uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x209, x211, &x223); -{ uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x212, x214, &x226); -{ uint32_t x229; uint8_t _ = _addcarryx_u32(0x0, x227, x215, &x229); -{ uint32_t x232; uint8_t x233 = _addcarryx_u32(0x0, x186, x202, &x232); -{ uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x189, x217, &x235); -{ uint32_t x238; uint8_t x239 = _addcarryx_u32(x236, x192, x220, &x238); -{ uint32_t x241; uint8_t x242 = _addcarryx_u32(x239, x195, x223, &x241); -{ uint32_t x244; uint8_t x245 = _addcarryx_u32(x242, x198, x226, &x244); -{ uint32_t x247; uint8_t x248 = _addcarryx_u32(x245, x200, x229, &x247); -{ uint32_t _; uint32_t x250 = _mulx_u32(x232, 0xcccccccd, &_); -{ uint32_t x254; uint32_t x253 = _mulx_u32(x250, 0xfffffffb, &x254); -{ uint32_t x257; uint32_t x256 = _mulx_u32(x250, 0xffffffff, &x257); -{ uint32_t x260; uint32_t x259 = _mulx_u32(x250, 0xffffffff, &x260); -{ uint32_t x263; uint32_t x262 = _mulx_u32(x250, 0xffffffff, &x263); -{ uint32_t x266; uint32_t x265 = _mulx_u32(x250, 0x3fffff, &x266); -{ uint32_t x268; uint8_t x269 = _addcarryx_u32(0x0, x254, x256, &x268); -{ uint32_t x271; uint8_t x272 = _addcarryx_u32(x269, x257, x259, &x271); -{ uint32_t x274; uint8_t x275 = _addcarryx_u32(x272, x260, x262, &x274); -{ uint32_t x277; uint8_t x278 = _addcarryx_u32(x275, x263, x265, &x277); -{ uint32_t x280; uint8_t _ = _addcarryx_u32(0x0, x278, x266, &x280); -{ uint32_t _; uint8_t x284 = _addcarryx_u32(0x0, x232, x253, &_); -{ uint32_t x286; uint8_t x287 = _addcarryx_u32(x284, x235, x268, &x286); -{ uint32_t x289; uint8_t x290 = _addcarryx_u32(x287, x238, x271, &x289); -{ uint32_t x292; uint8_t x293 = _addcarryx_u32(x290, x241, x274, &x292); -{ uint32_t x295; uint8_t x296 = _addcarryx_u32(x293, x244, x277, &x295); -{ uint32_t x298; uint8_t x299 = _addcarryx_u32(x296, x247, x280, &x298); -{ uint8_t x300 = (x299 + x248); -{ uint32_t x303; uint32_t x302 = _mulx_u32(x11, x13, &x303); -{ uint32_t x306; uint32_t x305 = _mulx_u32(x11, x15, &x306); -{ uint32_t x309; uint32_t x308 = _mulx_u32(x11, x17, &x309); -{ uint32_t x312; uint32_t x311 = _mulx_u32(x11, x19, &x312); -{ uint32_t x315; uint32_t x314 = _mulx_u32(x11, x18, &x315); -{ uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x303, x305, &x317); -{ uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x306, x308, &x320); -{ uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x309, x311, &x323); -{ uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x312, x314, &x326); -{ uint32_t x329; uint8_t _ = _addcarryx_u32(0x0, x327, x315, &x329); -{ uint32_t x332; uint8_t x333 = _addcarryx_u32(0x0, x286, x302, &x332); -{ uint32_t x335; uint8_t x336 = _addcarryx_u32(x333, x289, x317, &x335); -{ uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x292, x320, &x338); -{ uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x295, x323, &x341); -{ uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x298, x326, &x344); -{ uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x300, x329, &x347); -{ uint32_t _; uint32_t x350 = _mulx_u32(x332, 0xcccccccd, &_); -{ uint32_t x354; uint32_t x353 = _mulx_u32(x350, 0xfffffffb, &x354); -{ uint32_t x357; uint32_t x356 = _mulx_u32(x350, 0xffffffff, &x357); -{ uint32_t x360; uint32_t x359 = _mulx_u32(x350, 0xffffffff, &x360); -{ uint32_t x363; uint32_t x362 = _mulx_u32(x350, 0xffffffff, &x363); -{ uint32_t x366; uint32_t x365 = _mulx_u32(x350, 0x3fffff, &x366); -{ uint32_t x368; uint8_t x369 = _addcarryx_u32(0x0, x354, x356, &x368); -{ uint32_t x371; uint8_t x372 = _addcarryx_u32(x369, x357, x359, &x371); -{ uint32_t x374; uint8_t x375 = _addcarryx_u32(x372, x360, x362, &x374); -{ uint32_t x377; uint8_t x378 = _addcarryx_u32(x375, x363, x365, &x377); -{ uint32_t x380; uint8_t _ = _addcarryx_u32(0x0, x378, x366, &x380); -{ uint32_t _; uint8_t x384 = _addcarryx_u32(0x0, x332, x353, &_); -{ uint32_t x386; uint8_t x387 = _addcarryx_u32(x384, x335, x368, &x386); -{ uint32_t x389; uint8_t x390 = _addcarryx_u32(x387, x338, x371, &x389); -{ uint32_t x392; uint8_t x393 = _addcarryx_u32(x390, x341, x374, &x392); -{ uint32_t x395; uint8_t x396 = _addcarryx_u32(x393, x344, x377, &x395); -{ uint32_t x398; uint8_t x399 = _addcarryx_u32(x396, x347, x380, &x398); -{ uint8_t x400 = (x399 + x348); -{ uint32_t x403; uint32_t x402 = _mulx_u32(x10, x13, &x403); -{ uint32_t x406; uint32_t x405 = _mulx_u32(x10, x15, &x406); -{ uint32_t x409; uint32_t x408 = _mulx_u32(x10, x17, &x409); -{ uint32_t x412; uint32_t x411 = _mulx_u32(x10, x19, &x412); -{ uint32_t x415; uint32_t x414 = _mulx_u32(x10, x18, &x415); -{ uint32_t x417; uint8_t x418 = _addcarryx_u32(0x0, x403, x405, &x417); -{ uint32_t x420; uint8_t x421 = _addcarryx_u32(x418, x406, x408, &x420); -{ uint32_t x423; uint8_t x424 = _addcarryx_u32(x421, x409, x411, &x423); -{ uint32_t x426; uint8_t x427 = _addcarryx_u32(x424, x412, x414, &x426); -{ uint32_t x429; uint8_t _ = _addcarryx_u32(0x0, x427, x415, &x429); -{ uint32_t x432; uint8_t x433 = _addcarryx_u32(0x0, x386, x402, &x432); -{ uint32_t x435; uint8_t x436 = _addcarryx_u32(x433, x389, x417, &x435); -{ uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x392, x420, &x438); -{ uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x395, x423, &x441); -{ uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x398, x426, &x444); -{ uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x400, x429, &x447); -{ uint32_t _; uint32_t x450 = _mulx_u32(x432, 0xcccccccd, &_); -{ uint32_t x454; uint32_t x453 = _mulx_u32(x450, 0xfffffffb, &x454); -{ uint32_t x457; uint32_t x456 = _mulx_u32(x450, 0xffffffff, &x457); -{ uint32_t x460; uint32_t x459 = _mulx_u32(x450, 0xffffffff, &x460); -{ uint32_t x463; uint32_t x462 = _mulx_u32(x450, 0xffffffff, &x463); -{ uint32_t x466; uint32_t x465 = _mulx_u32(x450, 0x3fffff, &x466); -{ uint32_t x468; uint8_t x469 = _addcarryx_u32(0x0, x454, x456, &x468); -{ uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x457, x459, &x471); -{ uint32_t x474; uint8_t x475 = _addcarryx_u32(x472, x460, x462, &x474); -{ uint32_t x477; uint8_t x478 = _addcarryx_u32(x475, x463, x465, &x477); -{ uint32_t x480; uint8_t _ = _addcarryx_u32(0x0, x478, x466, &x480); -{ uint32_t _; uint8_t x484 = _addcarryx_u32(0x0, x432, x453, &_); -{ uint32_t x486; uint8_t x487 = _addcarryx_u32(x484, x435, x468, &x486); -{ uint32_t x489; uint8_t x490 = _addcarryx_u32(x487, x438, x471, &x489); -{ uint32_t x492; uint8_t x493 = _addcarryx_u32(x490, x441, x474, &x492); -{ uint32_t x495; uint8_t x496 = _addcarryx_u32(x493, x444, x477, &x495); -{ uint32_t x498; uint8_t x499 = _addcarryx_u32(x496, x447, x480, &x498); -{ uint8_t x500 = (x499 + x448); -{ uint32_t x502; uint8_t x503 = _subborrow_u32(0x0, x486, 0xfffffffb, &x502); -{ uint32_t x505; uint8_t x506 = _subborrow_u32(x503, x489, 0xffffffff, &x505); -{ uint32_t x508; uint8_t x509 = _subborrow_u32(x506, x492, 0xffffffff, &x508); -{ uint32_t x511; uint8_t x512 = _subborrow_u32(x509, x495, 0xffffffff, &x511); -{ uint32_t x514; uint8_t x515 = _subborrow_u32(x512, x498, 0x3fffff, &x514); -{ uint32_t _; uint8_t x518 = _subborrow_u32(x515, x500, 0x0, &_); -{ uint32_t x519 = cmovznz(x518, x514, x498); -{ uint32_t x520 = cmovznz(x518, x511, x495); -{ uint32_t x521 = cmovznz(x518, x508, x492); -{ uint32_t x522 = cmovznz(x518, x505, x489); -{ uint32_t x523 = cmovznz(x518, x502, x486); -out[0] = x519; -out[1] = x520; -out[2] = x521; -out[3] = x522; -out[4] = x523; -}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} -// caller: uint64_t out[5]; +static void femul(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) { + { const uint32_t x10 = in1[4]; + { const uint32_t x11 = in1[3]; + { const uint32_t x9 = in1[2]; + { const uint32_t x7 = in1[1]; + { const uint32_t x5 = in1[0]; + { const uint32_t x18 = in2[4]; + { const uint32_t x19 = in2[3]; + { const uint32_t x17 = in2[2]; + { const uint32_t x15 = in2[1]; + { const uint32_t x13 = in2[0]; + { uint32_t x22; uint32_t x21 = _mulx_u32(x5, x13, &x22); + { uint32_t x25; uint32_t x24 = _mulx_u32(x5, x15, &x25); + { uint32_t x28; uint32_t x27 = _mulx_u32(x5, x17, &x28); + { uint32_t x31; uint32_t x30 = _mulx_u32(x5, x19, &x31); + { uint32_t x34; uint32_t x33 = _mulx_u32(x5, x18, &x34); + { uint32_t x36; uint8_t x37 = _addcarryx_u32(0x0, x22, x24, &x36); + { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x25, x27, &x39); + { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x28, x30, &x42); + { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x31, x33, &x45); + { uint32_t x48; uint8_t _ = _addcarryx_u32(0x0, x46, x34, &x48); + { uint32_t _; uint32_t x51 = _mulx_u32(x21, 0xcccccccd, &_); + { uint32_t x55; uint32_t x54 = _mulx_u32(x51, 0xfffffffb, &x55); + { uint32_t x58; uint32_t x57 = _mulx_u32(x51, 0xffffffff, &x58); + { uint32_t x61; uint32_t x60 = _mulx_u32(x51, 0xffffffff, &x61); + { uint32_t x64; uint32_t x63 = _mulx_u32(x51, 0xffffffff, &x64); + { uint32_t x67; uint32_t x66 = _mulx_u32(x51, 0x3fffff, &x67); + { uint32_t x69; uint8_t x70 = _addcarryx_u32(0x0, x55, x57, &x69); + { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x58, x60, &x72); + { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x61, x63, &x75); + { uint32_t x78; uint8_t x79 = _addcarryx_u32(x76, x64, x66, &x78); + { uint32_t x81; uint8_t _ = _addcarryx_u32(0x0, x79, x67, &x81); + { uint32_t _; uint8_t x85 = _addcarryx_u32(0x0, x21, x54, &_); + { uint32_t x87; uint8_t x88 = _addcarryx_u32(x85, x36, x69, &x87); + { uint32_t x90; uint8_t x91 = _addcarryx_u32(x88, x39, x72, &x90); + { uint32_t x93; uint8_t x94 = _addcarryx_u32(x91, x42, x75, &x93); + { uint32_t x96; uint8_t x97 = _addcarryx_u32(x94, x45, x78, &x96); + { uint32_t x99; uint8_t x100 = _addcarryx_u32(x97, x48, x81, &x99); + { uint32_t x103; uint32_t x102 = _mulx_u32(x7, x13, &x103); + { uint32_t x106; uint32_t x105 = _mulx_u32(x7, x15, &x106); + { uint32_t x109; uint32_t x108 = _mulx_u32(x7, x17, &x109); + { uint32_t x112; uint32_t x111 = _mulx_u32(x7, x19, &x112); + { uint32_t x115; uint32_t x114 = _mulx_u32(x7, x18, &x115); + { uint32_t x117; uint8_t x118 = _addcarryx_u32(0x0, x103, x105, &x117); + { uint32_t x120; uint8_t x121 = _addcarryx_u32(x118, x106, x108, &x120); + { uint32_t x123; uint8_t x124 = _addcarryx_u32(x121, x109, x111, &x123); + { uint32_t x126; uint8_t x127 = _addcarryx_u32(x124, x112, x114, &x126); + { uint32_t x129; uint8_t _ = _addcarryx_u32(0x0, x127, x115, &x129); + { uint32_t x132; uint8_t x133 = _addcarryx_u32(0x0, x87, x102, &x132); + { uint32_t x135; uint8_t x136 = _addcarryx_u32(x133, x90, x117, &x135); + { uint32_t x138; uint8_t x139 = _addcarryx_u32(x136, x93, x120, &x138); + { uint32_t x141; uint8_t x142 = _addcarryx_u32(x139, x96, x123, &x141); + { uint32_t x144; uint8_t x145 = _addcarryx_u32(x142, x99, x126, &x144); + { uint32_t x147; uint8_t x148 = _addcarryx_u32(x145, x100, x129, &x147); + { uint32_t _; uint32_t x150 = _mulx_u32(x132, 0xcccccccd, &_); + { uint32_t x154; uint32_t x153 = _mulx_u32(x150, 0xfffffffb, &x154); + { uint32_t x157; uint32_t x156 = _mulx_u32(x150, 0xffffffff, &x157); + { uint32_t x160; uint32_t x159 = _mulx_u32(x150, 0xffffffff, &x160); + { uint32_t x163; uint32_t x162 = _mulx_u32(x150, 0xffffffff, &x163); + { uint32_t x166; uint32_t x165 = _mulx_u32(x150, 0x3fffff, &x166); + { uint32_t x168; uint8_t x169 = _addcarryx_u32(0x0, x154, x156, &x168); + { uint32_t x171; uint8_t x172 = _addcarryx_u32(x169, x157, x159, &x171); + { uint32_t x174; uint8_t x175 = _addcarryx_u32(x172, x160, x162, &x174); + { uint32_t x177; uint8_t x178 = _addcarryx_u32(x175, x163, x165, &x177); + { uint32_t x180; uint8_t _ = _addcarryx_u32(0x0, x178, x166, &x180); + { uint32_t _; uint8_t x184 = _addcarryx_u32(0x0, x132, x153, &_); + { uint32_t x186; uint8_t x187 = _addcarryx_u32(x184, x135, x168, &x186); + { uint32_t x189; uint8_t x190 = _addcarryx_u32(x187, x138, x171, &x189); + { uint32_t x192; uint8_t x193 = _addcarryx_u32(x190, x141, x174, &x192); + { uint32_t x195; uint8_t x196 = _addcarryx_u32(x193, x144, x177, &x195); + { uint32_t x198; uint8_t x199 = _addcarryx_u32(x196, x147, x180, &x198); + { uint8_t x200 = (x199 + x148); + { uint32_t x203; uint32_t x202 = _mulx_u32(x9, x13, &x203); + { uint32_t x206; uint32_t x205 = _mulx_u32(x9, x15, &x206); + { uint32_t x209; uint32_t x208 = _mulx_u32(x9, x17, &x209); + { uint32_t x212; uint32_t x211 = _mulx_u32(x9, x19, &x212); + { uint32_t x215; uint32_t x214 = _mulx_u32(x9, x18, &x215); + { uint32_t x217; uint8_t x218 = _addcarryx_u32(0x0, x203, x205, &x217); + { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x206, x208, &x220); + { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x209, x211, &x223); + { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x212, x214, &x226); + { uint32_t x229; uint8_t _ = _addcarryx_u32(0x0, x227, x215, &x229); + { uint32_t x232; uint8_t x233 = _addcarryx_u32(0x0, x186, x202, &x232); + { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x189, x217, &x235); + { uint32_t x238; uint8_t x239 = _addcarryx_u32(x236, x192, x220, &x238); + { uint32_t x241; uint8_t x242 = _addcarryx_u32(x239, x195, x223, &x241); + { uint32_t x244; uint8_t x245 = _addcarryx_u32(x242, x198, x226, &x244); + { uint32_t x247; uint8_t x248 = _addcarryx_u32(x245, x200, x229, &x247); + { uint32_t _; uint32_t x250 = _mulx_u32(x232, 0xcccccccd, &_); + { uint32_t x254; uint32_t x253 = _mulx_u32(x250, 0xfffffffb, &x254); + { uint32_t x257; uint32_t x256 = _mulx_u32(x250, 0xffffffff, &x257); + { uint32_t x260; uint32_t x259 = _mulx_u32(x250, 0xffffffff, &x260); + { uint32_t x263; uint32_t x262 = _mulx_u32(x250, 0xffffffff, &x263); + { uint32_t x266; uint32_t x265 = _mulx_u32(x250, 0x3fffff, &x266); + { uint32_t x268; uint8_t x269 = _addcarryx_u32(0x0, x254, x256, &x268); + { uint32_t x271; uint8_t x272 = _addcarryx_u32(x269, x257, x259, &x271); + { uint32_t x274; uint8_t x275 = _addcarryx_u32(x272, x260, x262, &x274); + { uint32_t x277; uint8_t x278 = _addcarryx_u32(x275, x263, x265, &x277); + { uint32_t x280; uint8_t _ = _addcarryx_u32(0x0, x278, x266, &x280); + { uint32_t _; uint8_t x284 = _addcarryx_u32(0x0, x232, x253, &_); + { uint32_t x286; uint8_t x287 = _addcarryx_u32(x284, x235, x268, &x286); + { uint32_t x289; uint8_t x290 = _addcarryx_u32(x287, x238, x271, &x289); + { uint32_t x292; uint8_t x293 = _addcarryx_u32(x290, x241, x274, &x292); + { uint32_t x295; uint8_t x296 = _addcarryx_u32(x293, x244, x277, &x295); + { uint32_t x298; uint8_t x299 = _addcarryx_u32(x296, x247, x280, &x298); + { uint8_t x300 = (x299 + x248); + { uint32_t x303; uint32_t x302 = _mulx_u32(x11, x13, &x303); + { uint32_t x306; uint32_t x305 = _mulx_u32(x11, x15, &x306); + { uint32_t x309; uint32_t x308 = _mulx_u32(x11, x17, &x309); + { uint32_t x312; uint32_t x311 = _mulx_u32(x11, x19, &x312); + { uint32_t x315; uint32_t x314 = _mulx_u32(x11, x18, &x315); + { uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x303, x305, &x317); + { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x306, x308, &x320); + { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x309, x311, &x323); + { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x312, x314, &x326); + { uint32_t x329; uint8_t _ = _addcarryx_u32(0x0, x327, x315, &x329); + { uint32_t x332; uint8_t x333 = _addcarryx_u32(0x0, x286, x302, &x332); + { uint32_t x335; uint8_t x336 = _addcarryx_u32(x333, x289, x317, &x335); + { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x292, x320, &x338); + { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x295, x323, &x341); + { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x298, x326, &x344); + { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x300, x329, &x347); + { uint32_t _; uint32_t x350 = _mulx_u32(x332, 0xcccccccd, &_); + { uint32_t x354; uint32_t x353 = _mulx_u32(x350, 0xfffffffb, &x354); + { uint32_t x357; uint32_t x356 = _mulx_u32(x350, 0xffffffff, &x357); + { uint32_t x360; uint32_t x359 = _mulx_u32(x350, 0xffffffff, &x360); + { uint32_t x363; uint32_t x362 = _mulx_u32(x350, 0xffffffff, &x363); + { uint32_t x366; uint32_t x365 = _mulx_u32(x350, 0x3fffff, &x366); + { uint32_t x368; uint8_t x369 = _addcarryx_u32(0x0, x354, x356, &x368); + { uint32_t x371; uint8_t x372 = _addcarryx_u32(x369, x357, x359, &x371); + { uint32_t x374; uint8_t x375 = _addcarryx_u32(x372, x360, x362, &x374); + { uint32_t x377; uint8_t x378 = _addcarryx_u32(x375, x363, x365, &x377); + { uint32_t x380; uint8_t _ = _addcarryx_u32(0x0, x378, x366, &x380); + { uint32_t _; uint8_t x384 = _addcarryx_u32(0x0, x332, x353, &_); + { uint32_t x386; uint8_t x387 = _addcarryx_u32(x384, x335, x368, &x386); + { uint32_t x389; uint8_t x390 = _addcarryx_u32(x387, x338, x371, &x389); + { uint32_t x392; uint8_t x393 = _addcarryx_u32(x390, x341, x374, &x392); + { uint32_t x395; uint8_t x396 = _addcarryx_u32(x393, x344, x377, &x395); + { uint32_t x398; uint8_t x399 = _addcarryx_u32(x396, x347, x380, &x398); + { uint8_t x400 = (x399 + x348); + { uint32_t x403; uint32_t x402 = _mulx_u32(x10, x13, &x403); + { uint32_t x406; uint32_t x405 = _mulx_u32(x10, x15, &x406); + { uint32_t x409; uint32_t x408 = _mulx_u32(x10, x17, &x409); + { uint32_t x412; uint32_t x411 = _mulx_u32(x10, x19, &x412); + { uint32_t x415; uint32_t x414 = _mulx_u32(x10, x18, &x415); + { uint32_t x417; uint8_t x418 = _addcarryx_u32(0x0, x403, x405, &x417); + { uint32_t x420; uint8_t x421 = _addcarryx_u32(x418, x406, x408, &x420); + { uint32_t x423; uint8_t x424 = _addcarryx_u32(x421, x409, x411, &x423); + { uint32_t x426; uint8_t x427 = _addcarryx_u32(x424, x412, x414, &x426); + { uint32_t x429; uint8_t _ = _addcarryx_u32(0x0, x427, x415, &x429); + { uint32_t x432; uint8_t x433 = _addcarryx_u32(0x0, x386, x402, &x432); + { uint32_t x435; uint8_t x436 = _addcarryx_u32(x433, x389, x417, &x435); + { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x392, x420, &x438); + { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x395, x423, &x441); + { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x398, x426, &x444); + { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x400, x429, &x447); + { uint32_t _; uint32_t x450 = _mulx_u32(x432, 0xcccccccd, &_); + { uint32_t x454; uint32_t x453 = _mulx_u32(x450, 0xfffffffb, &x454); + { uint32_t x457; uint32_t x456 = _mulx_u32(x450, 0xffffffff, &x457); + { uint32_t x460; uint32_t x459 = _mulx_u32(x450, 0xffffffff, &x460); + { uint32_t x463; uint32_t x462 = _mulx_u32(x450, 0xffffffff, &x463); + { uint32_t x466; uint32_t x465 = _mulx_u32(x450, 0x3fffff, &x466); + { uint32_t x468; uint8_t x469 = _addcarryx_u32(0x0, x454, x456, &x468); + { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x457, x459, &x471); + { uint32_t x474; uint8_t x475 = _addcarryx_u32(x472, x460, x462, &x474); + { uint32_t x477; uint8_t x478 = _addcarryx_u32(x475, x463, x465, &x477); + { uint32_t x480; uint8_t _ = _addcarryx_u32(0x0, x478, x466, &x480); + { uint32_t _; uint8_t x484 = _addcarryx_u32(0x0, x432, x453, &_); + { uint32_t x486; uint8_t x487 = _addcarryx_u32(x484, x435, x468, &x486); + { uint32_t x489; uint8_t x490 = _addcarryx_u32(x487, x438, x471, &x489); + { uint32_t x492; uint8_t x493 = _addcarryx_u32(x490, x441, x474, &x492); + { uint32_t x495; uint8_t x496 = _addcarryx_u32(x493, x444, x477, &x495); + { uint32_t x498; uint8_t x499 = _addcarryx_u32(x496, x447, x480, &x498); + { uint8_t x500 = (x499 + x448); + { uint32_t x502; uint8_t x503 = _subborrow_u32(0x0, x486, 0xfffffffb, &x502); + { uint32_t x505; uint8_t x506 = _subborrow_u32(x503, x489, 0xffffffff, &x505); + { uint32_t x508; uint8_t x509 = _subborrow_u32(x506, x492, 0xffffffff, &x508); + { uint32_t x511; uint8_t x512 = _subborrow_u32(x509, x495, 0xffffffff, &x511); + { uint32_t x514; uint8_t x515 = _subborrow_u32(x512, x498, 0x3fffff, &x514); + { uint32_t _; uint8_t x518 = _subborrow_u32(x515, x500, 0x0, &_); + { uint32_t x519 = cmovznz(x518, x514, x498); + { uint32_t x520 = cmovznz(x518, x511, x495); + { uint32_t x521 = cmovznz(x518, x508, x492); + { uint32_t x522 = cmovznz(x518, x505, x489); + { uint32_t x523 = cmovznz(x518, x502, x486); + out[0] = x523; + out[1] = x522; + out[2] = x521; + out[3] = x520; + out[4] = x519; + }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} +} diff --git a/src/Specific/montgomery32_2e150m5/fenz.c b/src/Specific/montgomery32_2e150m5/fenz.c index 755695e18..5601e8c15 100644 --- a/src/Specific/montgomery32_2e150m5/fenz.c +++ b/src/Specific/montgomery32_2e150m5/fenz.c @@ -1,26 +1,13 @@ -#include -#include -#include -#include "liblow.h" - -#include "fenz.h" - -typedef unsigned int uint128_t __attribute__((mode(TI))); - -#if (defined(__GNUC__) || defined(__GNUG__)) && !(defined(__clang__)||defined(__INTEL_COMPILER)) -// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81294 -#define _subborrow_u32 __builtin_ia32_sbb_u32 -#define _subborrow_u64 __builtin_ia32_sbb_u64 -#endif - -#undef force_inline -#define force_inline __attribute__((always_inline)) - -void force_inline fenz(uint64_t* out, uint64_t x7, uint64_t x8, uint64_t x6, uint64_t x4, uint64_t x2) -{ uint32_t x9 = (x8 | x7); -{ uint32_t x10 = (x6 | x9); -{ uint32_t x11 = (x4 | x10); -{ uint32_t x12 = (x2 | x11); -out[0] = x12; -}}}} -// caller: uint64_t out[1]; +static void fenz(ReturnType uint32_t out[1], const uint32_t in1[5]) { + { const uint32_t x7 = in1[4]; + { const uint32_t x8 = in1[3]; + { const uint32_t x6 = in1[2]; + { const uint32_t x4 = in1[1]; + { const uint32_t x2 = in1[0]; + { uint32_t x9 = (x8 | x7); + { uint32_t x10 = (x6 | x9); + { uint32_t x11 = (x4 | x10); + { uint32_t x12 = (x2 | x11); + out[0] = x12; + }}}}}}}}} +} diff --git a/src/Specific/montgomery32_2e150m5/feopp.c b/src/Specific/montgomery32_2e150m5/feopp.c index e4f714108..0484af931 100644 --- a/src/Specific/montgomery32_2e150m5/feopp.c +++ b/src/Specific/montgomery32_2e150m5/feopp.c @@ -1,42 +1,29 @@ -#include -#include -#include -#include "liblow.h" - -#include "feopp.h" - -typedef unsigned int uint128_t __attribute__((mode(TI))); - -#if (defined(__GNUC__) || defined(__GNUG__)) && !(defined(__clang__)||defined(__INTEL_COMPILER)) -// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81294 -#define _subborrow_u32 __builtin_ia32_sbb_u32 -#define _subborrow_u64 __builtin_ia32_sbb_u64 -#endif - -#undef force_inline -#define force_inline __attribute__((always_inline)) - -void force_inline feopp(uint64_t* out, uint64_t x7, uint64_t x8, uint64_t x6, uint64_t x4, uint64_t x2) -{ uint32_t x10; uint8_t x11 = _subborrow_u32(0x0, 0x0, x2, &x10); -{ uint32_t x13; uint8_t x14 = _subborrow_u32(x11, 0x0, x4, &x13); -{ uint32_t x16; uint8_t x17 = _subborrow_u32(x14, 0x0, x6, &x16); -{ uint32_t x19; uint8_t x20 = _subborrow_u32(x17, 0x0, x8, &x19); -{ uint32_t x22; uint8_t x23 = _subborrow_u32(x20, 0x0, x7, &x22); -{ uint32_t x24 = (uint32_t)cmovznz(x23, 0x0, 0xffffffff); -{ uint32_t x25 = (x24 & 0xfffffffb); -{ uint32_t x27; uint8_t x28 = _addcarryx_u32(0x0, x10, x25, &x27); -{ uint32_t x29 = (x24 & 0xffffffff); -{ uint32_t x31; uint8_t x32 = _addcarryx_u32(x28, x13, x29, &x31); -{ uint32_t x33 = (x24 & 0xffffffff); -{ uint32_t x35; uint8_t x36 = _addcarryx_u32(x32, x16, x33, &x35); -{ uint32_t x37 = (x24 & 0xffffffff); -{ uint32_t x39; uint8_t x40 = _addcarryx_u32(x36, x19, x37, &x39); -{ uint32_t x41 = (x24 & 0x3fffff); -{ uint32_t x43; uint8_t _ = _addcarryx_u32(x40, x22, x41, &x43); -out[0] = x43; -out[1] = x39; -out[2] = x35; -out[3] = x31; -out[4] = x27; -}}}}}}}}}}}}}}}} -// caller: uint64_t out[5]; +static void feopp(uint32_t out[5], const uint32_t in1[5]) { + { const uint32_t x7 = in1[4]; + { const uint32_t x8 = in1[3]; + { const uint32_t x6 = in1[2]; + { const uint32_t x4 = in1[1]; + { const uint32_t x2 = in1[0]; + { uint32_t x10; uint8_t x11 = _subborrow_u32(0x0, 0x0, x2, &x10); + { uint32_t x13; uint8_t x14 = _subborrow_u32(x11, 0x0, x4, &x13); + { uint32_t x16; uint8_t x17 = _subborrow_u32(x14, 0x0, x6, &x16); + { uint32_t x19; uint8_t x20 = _subborrow_u32(x17, 0x0, x8, &x19); + { uint32_t x22; uint8_t x23 = _subborrow_u32(x20, 0x0, x7, &x22); + { uint32_t x24 = (uint32_t)cmovznz(x23, 0x0, 0xffffffff); + { uint32_t x25 = (x24 & 0xfffffffb); + { uint32_t x27; uint8_t x28 = _addcarryx_u32(0x0, x10, x25, &x27); + { uint32_t x29 = (x24 & 0xffffffff); + { uint32_t x31; uint8_t x32 = _addcarryx_u32(x28, x13, x29, &x31); + { uint32_t x33 = (x24 & 0xffffffff); + { uint32_t x35; uint8_t x36 = _addcarryx_u32(x32, x16, x33, &x35); + { uint32_t x37 = (x24 & 0xffffffff); + { uint32_t x39; uint8_t x40 = _addcarryx_u32(x36, x19, x37, &x39); + { uint32_t x41 = (x24 & 0x3fffff); + { uint32_t x43; uint8_t _ = _addcarryx_u32(x40, x22, x41, &x43); + out[0] = x27; + out[1] = x31; + out[2] = x35; + out[3] = x39; + out[4] = x43; + }}}}}}}}}}}}}}}}}}}}} +} diff --git a/src/Specific/montgomery32_2e150m5/fesub.c b/src/Specific/montgomery32_2e150m5/fesub.c index 4236fbd26..f3fd6956d 100644 --- a/src/Specific/montgomery32_2e150m5/fesub.c +++ b/src/Specific/montgomery32_2e150m5/fesub.c @@ -1,42 +1,34 @@ -#include -#include -#include -#include "liblow.h" - -#include "fesub.h" - -typedef unsigned int uint128_t __attribute__((mode(TI))); - -#if (defined(__GNUC__) || defined(__GNUG__)) && !(defined(__clang__)||defined(__INTEL_COMPILER)) -// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81294 -#define _subborrow_u32 __builtin_ia32_sbb_u32 -#define _subborrow_u64 __builtin_ia32_sbb_u64 -#endif - -#undef force_inline -#define force_inline __attribute__((always_inline)) - -void force_inline fesub(uint64_t* out, uint64_t x10, uint64_t x11, uint64_t x9, uint64_t x7, uint64_t x5, uint64_t x18, uint64_t x19, uint64_t x17, uint64_t x15, uint64_t x13) -{ uint32_t x21; uint8_t x22 = _subborrow_u32(0x0, x5, x13, &x21); -{ uint32_t x24; uint8_t x25 = _subborrow_u32(x22, x7, x15, &x24); -{ uint32_t x27; uint8_t x28 = _subborrow_u32(x25, x9, x17, &x27); -{ uint32_t x30; uint8_t x31 = _subborrow_u32(x28, x11, x19, &x30); -{ uint32_t x33; uint8_t x34 = _subborrow_u32(x31, x10, x18, &x33); -{ uint32_t x35 = (uint32_t)cmovznz(x34, 0x0, 0xffffffff); -{ uint32_t x36 = (x35 & 0xfffffffb); -{ uint32_t x38; uint8_t x39 = _addcarryx_u32(0x0, x21, x36, &x38); -{ uint32_t x40 = (x35 & 0xffffffff); -{ uint32_t x42; uint8_t x43 = _addcarryx_u32(x39, x24, x40, &x42); -{ uint32_t x44 = (x35 & 0xffffffff); -{ uint32_t x46; uint8_t x47 = _addcarryx_u32(x43, x27, x44, &x46); -{ uint32_t x48 = (x35 & 0xffffffff); -{ uint32_t x50; uint8_t x51 = _addcarryx_u32(x47, x30, x48, &x50); -{ uint32_t x52 = (x35 & 0x3fffff); -{ uint32_t x54; uint8_t _ = _addcarryx_u32(x51, x33, x52, &x54); -out[0] = x54; -out[1] = x50; -out[2] = x46; -out[3] = x42; -out[4] = x38; -}}}}}}}}}}}}}}}} -// caller: uint64_t out[5]; +static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) { + { const uint32_t x10 = in1[4]; + { const uint32_t x11 = in1[3]; + { const uint32_t x9 = in1[2]; + { const uint32_t x7 = in1[1]; + { const uint32_t x5 = in1[0]; + { const uint32_t x18 = in2[4]; + { const uint32_t x19 = in2[3]; + { const uint32_t x17 = in2[2]; + { const uint32_t x15 = in2[1]; + { const uint32_t x13 = in2[0]; + { uint32_t x21; uint8_t x22 = _subborrow_u32(0x0, x5, x13, &x21); + { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, x7, x15, &x24); + { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, x9, x17, &x27); + { uint32_t x30; uint8_t x31 = _subborrow_u32(x28, x11, x19, &x30); + { uint32_t x33; uint8_t x34 = _subborrow_u32(x31, x10, x18, &x33); + { uint32_t x35 = (uint32_t)cmovznz(x34, 0x0, 0xffffffff); + { uint32_t x36 = (x35 & 0xfffffffb); + { uint32_t x38; uint8_t x39 = _addcarryx_u32(0x0, x21, x36, &x38); + { uint32_t x40 = (x35 & 0xffffffff); + { uint32_t x42; uint8_t x43 = _addcarryx_u32(x39, x24, x40, &x42); + { uint32_t x44 = (x35 & 0xffffffff); + { uint32_t x46; uint8_t x47 = _addcarryx_u32(x43, x27, x44, &x46); + { uint32_t x48 = (x35 & 0xffffffff); + { uint32_t x50; uint8_t x51 = _addcarryx_u32(x47, x30, x48, &x50); + { uint32_t x52 = (x35 & 0x3fffff); + { uint32_t x54; uint8_t _ = _addcarryx_u32(x51, x33, x52, &x54); + out[0] = x38; + out[1] = x42; + out[2] = x46; + out[3] = x50; + out[4] = x54; + }}}}}}}}}}}}}}}}}}}}}}}}}} +} -- cgit v1.2.3