diff options
author | 2017-11-12 20:37:52 -0500 | |
---|---|---|
committer | 2017-11-12 20:37:52 -0500 | |
commit | 3441856432d451a3d5e807bea7d6e7c500942c12 (patch) | |
tree | 338ba4e518452daeaead9301fe06dc6ebe5040a6 /src/Specific/montgomery32_2e140m27_5limbs | |
parent | e5efbf51add38c90d7bbdde6d1887762fa1ecc8f (diff) |
Update display logs and c files
Diffstat (limited to 'src/Specific/montgomery32_2e140m27_5limbs')
10 files changed, 563 insertions, 0 deletions
diff --git a/src/Specific/montgomery32_2e140m27_5limbs/feadd.c b/src/Specific/montgomery32_2e140m27_5limbs/feadd.c new file mode 100644 index 000000000..a836d6e4b --- /dev/null +++ b/src/Specific/montgomery32_2e140m27_5limbs/feadd.c @@ -0,0 +1,34 @@ +static void feadd(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) { + { const uint32_t x10 = in1[4]; + { const uint32_t x11 = in1[3]; + { const uint32_t x9 = in1[2]; + { const uint32_t x7 = in1[1]; + { const uint32_t x5 = in1[0]; + { const uint32_t x18 = in2[4]; + { const uint32_t x19 = in2[3]; + { const uint32_t x17 = in2[2]; + { const uint32_t x15 = in2[1]; + { const uint32_t x13 = in2[0]; + { uint32_t x21; uint8_t x22 = _addcarryx_u32(0x0, x5, x13, &x21); + { uint32_t x24; uint8_t x25 = _addcarryx_u32(x22, x7, x15, &x24); + { uint32_t x27; uint8_t x28 = _addcarryx_u32(x25, x9, x17, &x27); + { uint32_t x30; uint8_t x31 = _addcarryx_u32(x28, x11, x19, &x30); + { uint32_t x33; uint8_t x34 = _addcarryx_u32(x31, x10, x18, &x33); + { uint32_t x36; uint8_t x37 = _subborrow_u32(0x0, x21, 0xffffffe5, &x36); + { uint32_t x39; uint8_t x40 = _subborrow_u32(x37, x24, 0xffffffff, &x39); + { uint32_t x42; uint8_t x43 = _subborrow_u32(x40, x27, 0xffffffff, &x42); + { uint32_t x45; uint8_t x46 = _subborrow_u32(x43, x30, 0xffffffff, &x45); + { uint32_t x48; uint8_t x49 = _subborrow_u32(x46, x33, 0xfff, &x48); + { uint32_t _; uint8_t x52 = _subborrow_u32(x49, x34, 0x0, &_); + { uint32_t x53 = cmovznz32(x52, x48, x33); + { uint32_t x54 = cmovznz32(x52, x45, x30); + { uint32_t x55 = cmovznz32(x52, x42, x27); + { uint32_t x56 = cmovznz32(x52, x39, x24); + { uint32_t x57 = cmovznz32(x52, x36, x21); + out[0] = x57; + out[1] = x56; + out[2] = x55; + out[3] = x54; + out[4] = x53; + }}}}}}}}}}}}}}}}}}}}}}}}}} +} diff --git a/src/Specific/montgomery32_2e140m27_5limbs/feaddDisplay.log b/src/Specific/montgomery32_2e140m27_5limbs/feaddDisplay.log new file mode 100644 index 000000000..1d528f09a --- /dev/null +++ b/src/Specific/montgomery32_2e140m27_5limbs/feaddDisplay.log @@ -0,0 +1,23 @@ +λ x x0 : word32 * word32 * word32 * word32 * word32, +Interp-η +(λ var : Syntax.base_type → Type, + λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, + uint32_t x21, uint8_t x22 = addcarryx_u32(0x0, x5, x13); + uint32_t x24, uint8_t x25 = addcarryx_u32(x22, x7, x15); + uint32_t x27, uint8_t x28 = addcarryx_u32(x25, x9, x17); + uint32_t x30, uint8_t x31 = addcarryx_u32(x28, x11, x19); + uint32_t x33, uint8_t x34 = addcarryx_u32(x31, x10, x18); + uint32_t x36, uint8_t x37 = subborrow_u32(0x0, x21, 0xffffffe5); + uint32_t x39, uint8_t x40 = subborrow_u32(x37, x24, 0xffffffff); + uint32_t x42, uint8_t x43 = subborrow_u32(x40, x27, 0xffffffff); + uint32_t x45, uint8_t x46 = subborrow_u32(x43, x30, 0xffffffff); + uint32_t x48, uint8_t x49 = subborrow_u32(x46, x33, 0xfff); + uint32_t _, uint8_t x52 = subborrow_u32(x49, x34, 0x0); + uint32_t x53 = cmovznz32(x52, x48, x33); + uint32_t x54 = cmovznz32(x52, x45, x30); + uint32_t x55 = cmovznz32(x52, x42, x27); + uint32_t x56 = cmovznz32(x52, x39, x24); + uint32_t x57 = cmovznz32(x52, x36, x21); + return (x53, x54, x55, x56, x57)) +(x, x0)%core + : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t) diff --git a/src/Specific/montgomery32_2e140m27_5limbs/femul.c b/src/Specific/montgomery32_2e140m27_5limbs/femul.c new file mode 100644 index 000000000..71d6053f7 --- /dev/null +++ b/src/Specific/montgomery32_2e140m27_5limbs/femul.c @@ -0,0 +1,192 @@ +static void femul(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) { + { const uint32_t x10 = in1[4]; + { const uint32_t x11 = in1[3]; + { const uint32_t x9 = in1[2]; + { const uint32_t x7 = in1[1]; + { const uint32_t x5 = in1[0]; + { const uint32_t x18 = in2[4]; + { const uint32_t x19 = in2[3]; + { const uint32_t x17 = in2[2]; + { const uint32_t x15 = in2[1]; + { const uint32_t x13 = in2[0]; + { uint32_t x22; uint32_t x21 = _mulx_u32(x5, x13, &x22); + { uint32_t x25; uint32_t x24 = _mulx_u32(x5, x15, &x25); + { uint32_t x28; uint32_t x27 = _mulx_u32(x5, x17, &x28); + { uint32_t x31; uint32_t x30 = _mulx_u32(x5, x19, &x31); + { uint32_t x34; uint32_t x33 = _mulx_u32(x5, x18, &x34); + { uint32_t x36; uint8_t x37 = _addcarryx_u32(0x0, x22, x24, &x36); + { uint32_t x39; uint8_t x40 = _addcarryx_u32(x37, x25, x27, &x39); + { uint32_t x42; uint8_t x43 = _addcarryx_u32(x40, x28, x30, &x42); + { uint32_t x45; uint8_t x46 = _addcarryx_u32(x43, x31, x33, &x45); + { uint32_t x48; uint8_t _ = _addcarryx_u32(0x0, x46, x34, &x48); + { uint32_t _; uint32_t x51 = _mulx_u32(x21, 0x684bda13, &_); + { uint32_t x55; uint32_t x54 = _mulx_u32(x51, 0xffffffe5, &x55); + { uint32_t x58; uint32_t x57 = _mulx_u32(x51, 0xffffffff, &x58); + { uint32_t x61; uint32_t x60 = _mulx_u32(x51, 0xffffffff, &x61); + { uint32_t x64; uint32_t x63 = _mulx_u32(x51, 0xffffffff, &x64); + { uint32_t x67; uint32_t x66 = _mulx_u32(x51, 0xfff, &x67); + { uint32_t x69; uint8_t x70 = _addcarryx_u32(0x0, x55, x57, &x69); + { uint32_t x72; uint8_t x73 = _addcarryx_u32(x70, x58, x60, &x72); + { uint32_t x75; uint8_t x76 = _addcarryx_u32(x73, x61, x63, &x75); + { uint32_t x78; uint8_t x79 = _addcarryx_u32(x76, x64, x66, &x78); + { uint32_t x81; uint8_t _ = _addcarryx_u32(0x0, x79, x67, &x81); + { uint32_t _; uint8_t x85 = _addcarryx_u32(0x0, x21, x54, &_); + { uint32_t x87; uint8_t x88 = _addcarryx_u32(x85, x36, x69, &x87); + { uint32_t x90; uint8_t x91 = _addcarryx_u32(x88, x39, x72, &x90); + { uint32_t x93; uint8_t x94 = _addcarryx_u32(x91, x42, x75, &x93); + { uint32_t x96; uint8_t x97 = _addcarryx_u32(x94, x45, x78, &x96); + { uint32_t x99; uint8_t x100 = _addcarryx_u32(x97, x48, x81, &x99); + { uint32_t x103; uint32_t x102 = _mulx_u32(x7, x13, &x103); + { uint32_t x106; uint32_t x105 = _mulx_u32(x7, x15, &x106); + { uint32_t x109; uint32_t x108 = _mulx_u32(x7, x17, &x109); + { uint32_t x112; uint32_t x111 = _mulx_u32(x7, x19, &x112); + { uint32_t x115; uint32_t x114 = _mulx_u32(x7, x18, &x115); + { uint32_t x117; uint8_t x118 = _addcarryx_u32(0x0, x103, x105, &x117); + { uint32_t x120; uint8_t x121 = _addcarryx_u32(x118, x106, x108, &x120); + { uint32_t x123; uint8_t x124 = _addcarryx_u32(x121, x109, x111, &x123); + { uint32_t x126; uint8_t x127 = _addcarryx_u32(x124, x112, x114, &x126); + { uint32_t x129; uint8_t _ = _addcarryx_u32(0x0, x127, x115, &x129); + { uint32_t x132; uint8_t x133 = _addcarryx_u32(0x0, x87, x102, &x132); + { uint32_t x135; uint8_t x136 = _addcarryx_u32(x133, x90, x117, &x135); + { uint32_t x138; uint8_t x139 = _addcarryx_u32(x136, x93, x120, &x138); + { uint32_t x141; uint8_t x142 = _addcarryx_u32(x139, x96, x123, &x141); + { uint32_t x144; uint8_t x145 = _addcarryx_u32(x142, x99, x126, &x144); + { uint32_t x147; uint8_t x148 = _addcarryx_u32(x145, x100, x129, &x147); + { uint32_t _; uint32_t x150 = _mulx_u32(x132, 0x684bda13, &_); + { uint32_t x154; uint32_t x153 = _mulx_u32(x150, 0xffffffe5, &x154); + { uint32_t x157; uint32_t x156 = _mulx_u32(x150, 0xffffffff, &x157); + { uint32_t x160; uint32_t x159 = _mulx_u32(x150, 0xffffffff, &x160); + { uint32_t x163; uint32_t x162 = _mulx_u32(x150, 0xffffffff, &x163); + { uint32_t x166; uint32_t x165 = _mulx_u32(x150, 0xfff, &x166); + { uint32_t x168; uint8_t x169 = _addcarryx_u32(0x0, x154, x156, &x168); + { uint32_t x171; uint8_t x172 = _addcarryx_u32(x169, x157, x159, &x171); + { uint32_t x174; uint8_t x175 = _addcarryx_u32(x172, x160, x162, &x174); + { uint32_t x177; uint8_t x178 = _addcarryx_u32(x175, x163, x165, &x177); + { uint32_t x180; uint8_t _ = _addcarryx_u32(0x0, x178, x166, &x180); + { uint32_t _; uint8_t x184 = _addcarryx_u32(0x0, x132, x153, &_); + { uint32_t x186; uint8_t x187 = _addcarryx_u32(x184, x135, x168, &x186); + { uint32_t x189; uint8_t x190 = _addcarryx_u32(x187, x138, x171, &x189); + { uint32_t x192; uint8_t x193 = _addcarryx_u32(x190, x141, x174, &x192); + { uint32_t x195; uint8_t x196 = _addcarryx_u32(x193, x144, x177, &x195); + { uint32_t x198; uint8_t x199 = _addcarryx_u32(x196, x147, x180, &x198); + { uint8_t x200 = (x199 + x148); + { uint32_t x203; uint32_t x202 = _mulx_u32(x9, x13, &x203); + { uint32_t x206; uint32_t x205 = _mulx_u32(x9, x15, &x206); + { uint32_t x209; uint32_t x208 = _mulx_u32(x9, x17, &x209); + { uint32_t x212; uint32_t x211 = _mulx_u32(x9, x19, &x212); + { uint32_t x215; uint32_t x214 = _mulx_u32(x9, x18, &x215); + { uint32_t x217; uint8_t x218 = _addcarryx_u32(0x0, x203, x205, &x217); + { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x206, x208, &x220); + { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x209, x211, &x223); + { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x212, x214, &x226); + { uint32_t x229; uint8_t _ = _addcarryx_u32(0x0, x227, x215, &x229); + { uint32_t x232; uint8_t x233 = _addcarryx_u32(0x0, x186, x202, &x232); + { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x189, x217, &x235); + { uint32_t x238; uint8_t x239 = _addcarryx_u32(x236, x192, x220, &x238); + { uint32_t x241; uint8_t x242 = _addcarryx_u32(x239, x195, x223, &x241); + { uint32_t x244; uint8_t x245 = _addcarryx_u32(x242, x198, x226, &x244); + { uint32_t x247; uint8_t x248 = _addcarryx_u32(x245, x200, x229, &x247); + { uint32_t _; uint32_t x250 = _mulx_u32(x232, 0x684bda13, &_); + { uint32_t x254; uint32_t x253 = _mulx_u32(x250, 0xffffffe5, &x254); + { uint32_t x257; uint32_t x256 = _mulx_u32(x250, 0xffffffff, &x257); + { uint32_t x260; uint32_t x259 = _mulx_u32(x250, 0xffffffff, &x260); + { uint32_t x263; uint32_t x262 = _mulx_u32(x250, 0xffffffff, &x263); + { uint32_t x266; uint32_t x265 = _mulx_u32(x250, 0xfff, &x266); + { uint32_t x268; uint8_t x269 = _addcarryx_u32(0x0, x254, x256, &x268); + { uint32_t x271; uint8_t x272 = _addcarryx_u32(x269, x257, x259, &x271); + { uint32_t x274; uint8_t x275 = _addcarryx_u32(x272, x260, x262, &x274); + { uint32_t x277; uint8_t x278 = _addcarryx_u32(x275, x263, x265, &x277); + { uint32_t x280; uint8_t _ = _addcarryx_u32(0x0, x278, x266, &x280); + { uint32_t _; uint8_t x284 = _addcarryx_u32(0x0, x232, x253, &_); + { uint32_t x286; uint8_t x287 = _addcarryx_u32(x284, x235, x268, &x286); + { uint32_t x289; uint8_t x290 = _addcarryx_u32(x287, x238, x271, &x289); + { uint32_t x292; uint8_t x293 = _addcarryx_u32(x290, x241, x274, &x292); + { uint32_t x295; uint8_t x296 = _addcarryx_u32(x293, x244, x277, &x295); + { uint32_t x298; uint8_t x299 = _addcarryx_u32(x296, x247, x280, &x298); + { uint8_t x300 = (x299 + x248); + { uint32_t x303; uint32_t x302 = _mulx_u32(x11, x13, &x303); + { uint32_t x306; uint32_t x305 = _mulx_u32(x11, x15, &x306); + { uint32_t x309; uint32_t x308 = _mulx_u32(x11, x17, &x309); + { uint32_t x312; uint32_t x311 = _mulx_u32(x11, x19, &x312); + { uint32_t x315; uint32_t x314 = _mulx_u32(x11, x18, &x315); + { uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x303, x305, &x317); + { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x306, x308, &x320); + { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x309, x311, &x323); + { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x312, x314, &x326); + { uint32_t x329; uint8_t _ = _addcarryx_u32(0x0, x327, x315, &x329); + { uint32_t x332; uint8_t x333 = _addcarryx_u32(0x0, x286, x302, &x332); + { uint32_t x335; uint8_t x336 = _addcarryx_u32(x333, x289, x317, &x335); + { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x292, x320, &x338); + { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x295, x323, &x341); + { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x298, x326, &x344); + { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x300, x329, &x347); + { uint32_t _; uint32_t x350 = _mulx_u32(x332, 0x684bda13, &_); + { uint32_t x354; uint32_t x353 = _mulx_u32(x350, 0xffffffe5, &x354); + { uint32_t x357; uint32_t x356 = _mulx_u32(x350, 0xffffffff, &x357); + { uint32_t x360; uint32_t x359 = _mulx_u32(x350, 0xffffffff, &x360); + { uint32_t x363; uint32_t x362 = _mulx_u32(x350, 0xffffffff, &x363); + { uint32_t x366; uint32_t x365 = _mulx_u32(x350, 0xfff, &x366); + { uint32_t x368; uint8_t x369 = _addcarryx_u32(0x0, x354, x356, &x368); + { uint32_t x371; uint8_t x372 = _addcarryx_u32(x369, x357, x359, &x371); + { uint32_t x374; uint8_t x375 = _addcarryx_u32(x372, x360, x362, &x374); + { uint32_t x377; uint8_t x378 = _addcarryx_u32(x375, x363, x365, &x377); + { uint32_t x380; uint8_t _ = _addcarryx_u32(0x0, x378, x366, &x380); + { uint32_t _; uint8_t x384 = _addcarryx_u32(0x0, x332, x353, &_); + { uint32_t x386; uint8_t x387 = _addcarryx_u32(x384, x335, x368, &x386); + { uint32_t x389; uint8_t x390 = _addcarryx_u32(x387, x338, x371, &x389); + { uint32_t x392; uint8_t x393 = _addcarryx_u32(x390, x341, x374, &x392); + { uint32_t x395; uint8_t x396 = _addcarryx_u32(x393, x344, x377, &x395); + { uint32_t x398; uint8_t x399 = _addcarryx_u32(x396, x347, x380, &x398); + { uint8_t x400 = (x399 + x348); + { uint32_t x403; uint32_t x402 = _mulx_u32(x10, x13, &x403); + { uint32_t x406; uint32_t x405 = _mulx_u32(x10, x15, &x406); + { uint32_t x409; uint32_t x408 = _mulx_u32(x10, x17, &x409); + { uint32_t x412; uint32_t x411 = _mulx_u32(x10, x19, &x412); + { uint32_t x415; uint32_t x414 = _mulx_u32(x10, x18, &x415); + { uint32_t x417; uint8_t x418 = _addcarryx_u32(0x0, x403, x405, &x417); + { uint32_t x420; uint8_t x421 = _addcarryx_u32(x418, x406, x408, &x420); + { uint32_t x423; uint8_t x424 = _addcarryx_u32(x421, x409, x411, &x423); + { uint32_t x426; uint8_t x427 = _addcarryx_u32(x424, x412, x414, &x426); + { uint32_t x429; uint8_t _ = _addcarryx_u32(0x0, x427, x415, &x429); + { uint32_t x432; uint8_t x433 = _addcarryx_u32(0x0, x386, x402, &x432); + { uint32_t x435; uint8_t x436 = _addcarryx_u32(x433, x389, x417, &x435); + { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x392, x420, &x438); + { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x395, x423, &x441); + { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x398, x426, &x444); + { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x400, x429, &x447); + { uint32_t _; uint32_t x450 = _mulx_u32(x432, 0x684bda13, &_); + { uint32_t x454; uint32_t x453 = _mulx_u32(x450, 0xffffffe5, &x454); + { uint32_t x457; uint32_t x456 = _mulx_u32(x450, 0xffffffff, &x457); + { uint32_t x460; uint32_t x459 = _mulx_u32(x450, 0xffffffff, &x460); + { uint32_t x463; uint32_t x462 = _mulx_u32(x450, 0xffffffff, &x463); + { uint32_t x466; uint32_t x465 = _mulx_u32(x450, 0xfff, &x466); + { uint32_t x468; uint8_t x469 = _addcarryx_u32(0x0, x454, x456, &x468); + { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x457, x459, &x471); + { uint32_t x474; uint8_t x475 = _addcarryx_u32(x472, x460, x462, &x474); + { uint32_t x477; uint8_t x478 = _addcarryx_u32(x475, x463, x465, &x477); + { uint32_t x480; uint8_t _ = _addcarryx_u32(0x0, x478, x466, &x480); + { uint32_t _; uint8_t x484 = _addcarryx_u32(0x0, x432, x453, &_); + { uint32_t x486; uint8_t x487 = _addcarryx_u32(x484, x435, x468, &x486); + { uint32_t x489; uint8_t x490 = _addcarryx_u32(x487, x438, x471, &x489); + { uint32_t x492; uint8_t x493 = _addcarryx_u32(x490, x441, x474, &x492); + { uint32_t x495; uint8_t x496 = _addcarryx_u32(x493, x444, x477, &x495); + { uint32_t x498; uint8_t x499 = _addcarryx_u32(x496, x447, x480, &x498); + { uint8_t x500 = (x499 + x448); + { uint32_t x502; uint8_t x503 = _subborrow_u32(0x0, x486, 0xffffffe5, &x502); + { uint32_t x505; uint8_t x506 = _subborrow_u32(x503, x489, 0xffffffff, &x505); + { uint32_t x508; uint8_t x509 = _subborrow_u32(x506, x492, 0xffffffff, &x508); + { uint32_t x511; uint8_t x512 = _subborrow_u32(x509, x495, 0xffffffff, &x511); + { uint32_t x514; uint8_t x515 = _subborrow_u32(x512, x498, 0xfff, &x514); + { uint32_t _; uint8_t x518 = _subborrow_u32(x515, x500, 0x0, &_); + { uint32_t x519 = cmovznz32(x518, x514, x498); + { uint32_t x520 = cmovznz32(x518, x511, x495); + { uint32_t x521 = cmovznz32(x518, x508, x492); + { uint32_t x522 = cmovznz32(x518, x505, x489); + { uint32_t x523 = cmovznz32(x518, x502, x486); + out[0] = x523; + out[1] = x522; + out[2] = x521; + out[3] = x520; + out[4] = x519; + }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} +} diff --git a/src/Specific/montgomery32_2e140m27_5limbs/femulDisplay.log b/src/Specific/montgomery32_2e140m27_5limbs/femulDisplay.log new file mode 100644 index 000000000..5dfdbcff6 --- /dev/null +++ b/src/Specific/montgomery32_2e140m27_5limbs/femulDisplay.log @@ -0,0 +1,181 @@ +λ x x0 : word32 * word32 * word32 * word32 * word32, +Interp-η +(λ var : Syntax.base_type → Type, + λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, + uint32_t x21, uint32_t x22 = mulx_u32(x5, x13); + uint32_t x24, uint32_t x25 = mulx_u32(x5, x15); + uint32_t x27, uint32_t x28 = mulx_u32(x5, x17); + uint32_t x30, uint32_t x31 = mulx_u32(x5, x19); + uint32_t x33, uint32_t x34 = mulx_u32(x5, x18); + uint32_t x36, uint8_t x37 = addcarryx_u32(0x0, x22, x24); + uint32_t x39, uint8_t x40 = addcarryx_u32(x37, x25, x27); + uint32_t x42, uint8_t x43 = addcarryx_u32(x40, x28, x30); + uint32_t x45, uint8_t x46 = addcarryx_u32(x43, x31, x33); + uint32_t x48, uint8_t _ = addcarryx_u32(0x0, x46, x34); + uint32_t x51, uint32_t _ = mulx_u32(x21, 0x684bda13); + uint32_t x54, uint32_t x55 = mulx_u32(x51, 0xffffffe5); + uint32_t x57, uint32_t x58 = mulx_u32(x51, 0xffffffff); + uint32_t x60, uint32_t x61 = mulx_u32(x51, 0xffffffff); + uint32_t x63, uint32_t x64 = mulx_u32(x51, 0xffffffff); + uint32_t x66, uint32_t x67 = mulx_u32(x51, 0xfff); + uint32_t x69, uint8_t x70 = addcarryx_u32(0x0, x55, x57); + uint32_t x72, uint8_t x73 = addcarryx_u32(x70, x58, x60); + uint32_t x75, uint8_t x76 = addcarryx_u32(x73, x61, x63); + uint32_t x78, uint8_t x79 = addcarryx_u32(x76, x64, x66); + uint32_t x81, uint8_t _ = addcarryx_u32(0x0, x79, x67); + uint32_t _, uint8_t x85 = addcarryx_u32(0x0, x21, x54); + uint32_t x87, uint8_t x88 = addcarryx_u32(x85, x36, x69); + uint32_t x90, uint8_t x91 = addcarryx_u32(x88, x39, x72); + uint32_t x93, uint8_t x94 = addcarryx_u32(x91, x42, x75); + uint32_t x96, uint8_t x97 = addcarryx_u32(x94, x45, x78); + uint32_t x99, uint8_t x100 = addcarryx_u32(x97, x48, x81); + uint32_t x102, uint32_t x103 = mulx_u32(x7, x13); + uint32_t x105, uint32_t x106 = mulx_u32(x7, x15); + uint32_t x108, uint32_t x109 = mulx_u32(x7, x17); + uint32_t x111, uint32_t x112 = mulx_u32(x7, x19); + uint32_t x114, uint32_t x115 = mulx_u32(x7, x18); + uint32_t x117, uint8_t x118 = addcarryx_u32(0x0, x103, x105); + uint32_t x120, uint8_t x121 = addcarryx_u32(x118, x106, x108); + uint32_t x123, uint8_t x124 = addcarryx_u32(x121, x109, x111); + uint32_t x126, uint8_t x127 = addcarryx_u32(x124, x112, x114); + uint32_t x129, uint8_t _ = addcarryx_u32(0x0, x127, x115); + uint32_t x132, uint8_t x133 = addcarryx_u32(0x0, x87, x102); + uint32_t x135, uint8_t x136 = addcarryx_u32(x133, x90, x117); + uint32_t x138, uint8_t x139 = addcarryx_u32(x136, x93, x120); + uint32_t x141, uint8_t x142 = addcarryx_u32(x139, x96, x123); + uint32_t x144, uint8_t x145 = addcarryx_u32(x142, x99, x126); + uint32_t x147, uint8_t x148 = addcarryx_u32(x145, x100, x129); + uint32_t x150, uint32_t _ = mulx_u32(x132, 0x684bda13); + uint32_t x153, uint32_t x154 = mulx_u32(x150, 0xffffffe5); + uint32_t x156, uint32_t x157 = mulx_u32(x150, 0xffffffff); + uint32_t x159, uint32_t x160 = mulx_u32(x150, 0xffffffff); + uint32_t x162, uint32_t x163 = mulx_u32(x150, 0xffffffff); + uint32_t x165, uint32_t x166 = mulx_u32(x150, 0xfff); + uint32_t x168, uint8_t x169 = addcarryx_u32(0x0, x154, x156); + uint32_t x171, uint8_t x172 = addcarryx_u32(x169, x157, x159); + uint32_t x174, uint8_t x175 = addcarryx_u32(x172, x160, x162); + uint32_t x177, uint8_t x178 = addcarryx_u32(x175, x163, x165); + uint32_t x180, uint8_t _ = addcarryx_u32(0x0, x178, x166); + uint32_t _, uint8_t x184 = addcarryx_u32(0x0, x132, x153); + uint32_t x186, uint8_t x187 = addcarryx_u32(x184, x135, x168); + uint32_t x189, uint8_t x190 = addcarryx_u32(x187, x138, x171); + uint32_t x192, uint8_t x193 = addcarryx_u32(x190, x141, x174); + uint32_t x195, uint8_t x196 = addcarryx_u32(x193, x144, x177); + uint32_t x198, uint8_t x199 = addcarryx_u32(x196, x147, x180); + uint8_t x200 = (x199 + x148); + uint32_t x202, uint32_t x203 = mulx_u32(x9, x13); + uint32_t x205, uint32_t x206 = mulx_u32(x9, x15); + uint32_t x208, uint32_t x209 = mulx_u32(x9, x17); + uint32_t x211, uint32_t x212 = mulx_u32(x9, x19); + uint32_t x214, uint32_t x215 = mulx_u32(x9, x18); + uint32_t x217, uint8_t x218 = addcarryx_u32(0x0, x203, x205); + uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x206, x208); + uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x209, x211); + uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x212, x214); + uint32_t x229, uint8_t _ = addcarryx_u32(0x0, x227, x215); + uint32_t x232, uint8_t x233 = addcarryx_u32(0x0, x186, x202); + uint32_t x235, uint8_t x236 = addcarryx_u32(x233, x189, x217); + uint32_t x238, uint8_t x239 = addcarryx_u32(x236, x192, x220); + uint32_t x241, uint8_t x242 = addcarryx_u32(x239, x195, x223); + uint32_t x244, uint8_t x245 = addcarryx_u32(x242, x198, x226); + uint32_t x247, uint8_t x248 = addcarryx_u32(x245, x200, x229); + uint32_t x250, uint32_t _ = mulx_u32(x232, 0x684bda13); + uint32_t x253, uint32_t x254 = mulx_u32(x250, 0xffffffe5); + uint32_t x256, uint32_t x257 = mulx_u32(x250, 0xffffffff); + uint32_t x259, uint32_t x260 = mulx_u32(x250, 0xffffffff); + uint32_t x262, uint32_t x263 = mulx_u32(x250, 0xffffffff); + uint32_t x265, uint32_t x266 = mulx_u32(x250, 0xfff); + uint32_t x268, uint8_t x269 = addcarryx_u32(0x0, x254, x256); + uint32_t x271, uint8_t x272 = addcarryx_u32(x269, x257, x259); + uint32_t x274, uint8_t x275 = addcarryx_u32(x272, x260, x262); + uint32_t x277, uint8_t x278 = addcarryx_u32(x275, x263, x265); + uint32_t x280, uint8_t _ = addcarryx_u32(0x0, x278, x266); + uint32_t _, uint8_t x284 = addcarryx_u32(0x0, x232, x253); + uint32_t x286, uint8_t x287 = addcarryx_u32(x284, x235, x268); + uint32_t x289, uint8_t x290 = addcarryx_u32(x287, x238, x271); + uint32_t x292, uint8_t x293 = addcarryx_u32(x290, x241, x274); + uint32_t x295, uint8_t x296 = addcarryx_u32(x293, x244, x277); + uint32_t x298, uint8_t x299 = addcarryx_u32(x296, x247, x280); + uint8_t x300 = (x299 + x248); + uint32_t x302, uint32_t x303 = mulx_u32(x11, x13); + uint32_t x305, uint32_t x306 = mulx_u32(x11, x15); + uint32_t x308, uint32_t x309 = mulx_u32(x11, x17); + uint32_t x311, uint32_t x312 = mulx_u32(x11, x19); + uint32_t x314, uint32_t x315 = mulx_u32(x11, x18); + uint32_t x317, uint8_t x318 = addcarryx_u32(0x0, x303, x305); + uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x306, x308); + uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x309, x311); + uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x312, x314); + uint32_t x329, uint8_t _ = addcarryx_u32(0x0, x327, x315); + uint32_t x332, uint8_t x333 = addcarryx_u32(0x0, x286, x302); + uint32_t x335, uint8_t x336 = addcarryx_u32(x333, x289, x317); + uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x292, x320); + uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x295, x323); + uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x298, x326); + uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x300, x329); + uint32_t x350, uint32_t _ = mulx_u32(x332, 0x684bda13); + uint32_t x353, uint32_t x354 = mulx_u32(x350, 0xffffffe5); + uint32_t x356, uint32_t x357 = mulx_u32(x350, 0xffffffff); + uint32_t x359, uint32_t x360 = mulx_u32(x350, 0xffffffff); + uint32_t x362, uint32_t x363 = mulx_u32(x350, 0xffffffff); + uint32_t x365, uint32_t x366 = mulx_u32(x350, 0xfff); + uint32_t x368, uint8_t x369 = addcarryx_u32(0x0, x354, x356); + uint32_t x371, uint8_t x372 = addcarryx_u32(x369, x357, x359); + uint32_t x374, uint8_t x375 = addcarryx_u32(x372, x360, x362); + uint32_t x377, uint8_t x378 = addcarryx_u32(x375, x363, x365); + uint32_t x380, uint8_t _ = addcarryx_u32(0x0, x378, x366); + uint32_t _, uint8_t x384 = addcarryx_u32(0x0, x332, x353); + uint32_t x386, uint8_t x387 = addcarryx_u32(x384, x335, x368); + uint32_t x389, uint8_t x390 = addcarryx_u32(x387, x338, x371); + uint32_t x392, uint8_t x393 = addcarryx_u32(x390, x341, x374); + uint32_t x395, uint8_t x396 = addcarryx_u32(x393, x344, x377); + uint32_t x398, uint8_t x399 = addcarryx_u32(x396, x347, x380); + uint8_t x400 = (x399 + x348); + uint32_t x402, uint32_t x403 = mulx_u32(x10, x13); + uint32_t x405, uint32_t x406 = mulx_u32(x10, x15); + uint32_t x408, uint32_t x409 = mulx_u32(x10, x17); + uint32_t x411, uint32_t x412 = mulx_u32(x10, x19); + uint32_t x414, uint32_t x415 = mulx_u32(x10, x18); + uint32_t x417, uint8_t x418 = addcarryx_u32(0x0, x403, x405); + uint32_t x420, uint8_t x421 = addcarryx_u32(x418, x406, x408); + uint32_t x423, uint8_t x424 = addcarryx_u32(x421, x409, x411); + uint32_t x426, uint8_t x427 = addcarryx_u32(x424, x412, x414); + uint32_t x429, uint8_t _ = addcarryx_u32(0x0, x427, x415); + uint32_t x432, uint8_t x433 = addcarryx_u32(0x0, x386, x402); + uint32_t x435, uint8_t x436 = addcarryx_u32(x433, x389, x417); + uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x392, x420); + uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x395, x423); + uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x398, x426); + uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x400, x429); + uint32_t x450, uint32_t _ = mulx_u32(x432, 0x684bda13); + uint32_t x453, uint32_t x454 = mulx_u32(x450, 0xffffffe5); + uint32_t x456, uint32_t x457 = mulx_u32(x450, 0xffffffff); + uint32_t x459, uint32_t x460 = mulx_u32(x450, 0xffffffff); + uint32_t x462, uint32_t x463 = mulx_u32(x450, 0xffffffff); + uint32_t x465, uint32_t x466 = mulx_u32(x450, 0xfff); + uint32_t x468, uint8_t x469 = addcarryx_u32(0x0, x454, x456); + uint32_t x471, uint8_t x472 = addcarryx_u32(x469, x457, x459); + uint32_t x474, uint8_t x475 = addcarryx_u32(x472, x460, x462); + uint32_t x477, uint8_t x478 = addcarryx_u32(x475, x463, x465); + uint32_t x480, uint8_t _ = addcarryx_u32(0x0, x478, x466); + uint32_t _, uint8_t x484 = addcarryx_u32(0x0, x432, x453); + uint32_t x486, uint8_t x487 = addcarryx_u32(x484, x435, x468); + uint32_t x489, uint8_t x490 = addcarryx_u32(x487, x438, x471); + uint32_t x492, uint8_t x493 = addcarryx_u32(x490, x441, x474); + uint32_t x495, uint8_t x496 = addcarryx_u32(x493, x444, x477); + uint32_t x498, uint8_t x499 = addcarryx_u32(x496, x447, x480); + uint8_t x500 = (x499 + x448); + uint32_t x502, uint8_t x503 = subborrow_u32(0x0, x486, 0xffffffe5); + uint32_t x505, uint8_t x506 = subborrow_u32(x503, x489, 0xffffffff); + uint32_t x508, uint8_t x509 = subborrow_u32(x506, x492, 0xffffffff); + uint32_t x511, uint8_t x512 = subborrow_u32(x509, x495, 0xffffffff); + uint32_t x514, uint8_t x515 = subborrow_u32(x512, x498, 0xfff); + uint32_t _, uint8_t x518 = subborrow_u32(x515, x500, 0x0); + uint32_t x519 = cmovznz32(x518, x514, x498); + uint32_t x520 = cmovznz32(x518, x511, x495); + uint32_t x521 = cmovznz32(x518, x508, x492); + uint32_t x522 = cmovznz32(x518, x505, x489); + uint32_t x523 = cmovznz32(x518, x502, x486); + return (x519, x520, x521, x522, x523)) +(x, x0)%core + : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t) diff --git a/src/Specific/montgomery32_2e140m27_5limbs/fenz.c b/src/Specific/montgomery32_2e140m27_5limbs/fenz.c new file mode 100644 index 000000000..5601e8c15 --- /dev/null +++ b/src/Specific/montgomery32_2e140m27_5limbs/fenz.c @@ -0,0 +1,13 @@ +static void fenz(ReturnType uint32_t out[1], const uint32_t in1[5]) { + { const uint32_t x7 = in1[4]; + { const uint32_t x8 = in1[3]; + { const uint32_t x6 = in1[2]; + { const uint32_t x4 = in1[1]; + { const uint32_t x2 = in1[0]; + { uint32_t x9 = (x8 | x7); + { uint32_t x10 = (x6 | x9); + { uint32_t x11 = (x4 | x10); + { uint32_t x12 = (x2 | x11); + out[0] = x12; + }}}}}}}}} +} diff --git a/src/Specific/montgomery32_2e140m27_5limbs/fenzDisplay.log b/src/Specific/montgomery32_2e140m27_5limbs/fenzDisplay.log new file mode 100644 index 000000000..723d13164 --- /dev/null +++ b/src/Specific/montgomery32_2e140m27_5limbs/fenzDisplay.log @@ -0,0 +1,11 @@ +λ x : word32 * word32 * word32 * word32 * word32, +Interp-η +(λ var : Syntax.base_type → Type, + λ '(x7, x8, x6, x4, x2)%core, + uint32_t x9 = (x8 | x7); + uint32_t x10 = (x6 | x9); + uint32_t x11 = (x4 | x10); + uint32_t x12 = (x2 | x11); + return x12) +x + : word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t diff --git a/src/Specific/montgomery32_2e140m27_5limbs/feopp.c b/src/Specific/montgomery32_2e140m27_5limbs/feopp.c new file mode 100644 index 000000000..5b9a3606e --- /dev/null +++ b/src/Specific/montgomery32_2e140m27_5limbs/feopp.c @@ -0,0 +1,29 @@ +static void feopp(uint32_t out[5], const uint32_t in1[5]) { + { const uint32_t x7 = in1[4]; + { const uint32_t x8 = in1[3]; + { const uint32_t x6 = in1[2]; + { const uint32_t x4 = in1[1]; + { const uint32_t x2 = in1[0]; + { uint32_t x10; uint8_t x11 = _subborrow_u32(0x0, 0x0, x2, &x10); + { uint32_t x13; uint8_t x14 = _subborrow_u32(x11, 0x0, x4, &x13); + { uint32_t x16; uint8_t x17 = _subborrow_u32(x14, 0x0, x6, &x16); + { uint32_t x19; uint8_t x20 = _subborrow_u32(x17, 0x0, x8, &x19); + { uint32_t x22; uint8_t x23 = _subborrow_u32(x20, 0x0, x7, &x22); + { uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff); + { uint32_t x25 = (x24 & 0xffffffe5); + { uint32_t x27; uint8_t x28 = _addcarryx_u32(0x0, x10, x25, &x27); + { uint32_t x29 = (x24 & 0xffffffff); + { uint32_t x31; uint8_t x32 = _addcarryx_u32(x28, x13, x29, &x31); + { uint32_t x33 = (x24 & 0xffffffff); + { uint32_t x35; uint8_t x36 = _addcarryx_u32(x32, x16, x33, &x35); + { uint32_t x37 = (x24 & 0xffffffff); + { uint32_t x39; uint8_t x40 = _addcarryx_u32(x36, x19, x37, &x39); + { uint32_t x41 = (x24 & 0xfff); + { uint32_t x43; uint8_t _ = _addcarryx_u32(x40, x22, x41, &x43); + out[0] = x27; + out[1] = x31; + out[2] = x35; + out[3] = x39; + out[4] = x43; + }}}}}}}}}}}}}}}}}}}}} +} diff --git a/src/Specific/montgomery32_2e140m27_5limbs/feoppDisplay.log b/src/Specific/montgomery32_2e140m27_5limbs/feoppDisplay.log new file mode 100644 index 000000000..4b3132870 --- /dev/null +++ b/src/Specific/montgomery32_2e140m27_5limbs/feoppDisplay.log @@ -0,0 +1,23 @@ +λ x : word32 * word32 * word32 * word32 * word32, +Interp-η +(λ var : Syntax.base_type → Type, + λ '(x7, x8, x6, x4, x2)%core, + uint32_t x10, uint8_t x11 = subborrow_u32(0x0, 0x0, x2); + uint32_t x13, uint8_t x14 = subborrow_u32(x11, 0x0, x4); + uint32_t x16, uint8_t x17 = subborrow_u32(x14, 0x0, x6); + uint32_t x19, uint8_t x20 = subborrow_u32(x17, 0x0, x8); + uint32_t x22, uint8_t x23 = subborrow_u32(x20, 0x0, x7); + uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff); + uint32_t x25 = (x24 & 0xffffffe5); + uint32_t x27, uint8_t x28 = addcarryx_u32(0x0, x10, x25); + uint32_t x29 = (x24 & 0xffffffff); + uint32_t x31, uint8_t x32 = addcarryx_u32(x28, x13, x29); + uint32_t x33 = (x24 & 0xffffffff); + uint32_t x35, uint8_t x36 = addcarryx_u32(x32, x16, x33); + uint32_t x37 = (x24 & 0xffffffff); + uint32_t x39, uint8_t x40 = addcarryx_u32(x36, x19, x37); + uint32_t x41 = (x24 & 0xfff); + uint32_t x43, uint8_t _ = addcarryx_u32(x40, x22, x41); + (Return x43, Return x39, Return x35, Return x31, Return x27)) +x + : word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t) diff --git a/src/Specific/montgomery32_2e140m27_5limbs/fesub.c b/src/Specific/montgomery32_2e140m27_5limbs/fesub.c new file mode 100644 index 000000000..66c4f3cc0 --- /dev/null +++ b/src/Specific/montgomery32_2e140m27_5limbs/fesub.c @@ -0,0 +1,34 @@ +static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) { + { const uint32_t x10 = in1[4]; + { const uint32_t x11 = in1[3]; + { const uint32_t x9 = in1[2]; + { const uint32_t x7 = in1[1]; + { const uint32_t x5 = in1[0]; + { const uint32_t x18 = in2[4]; + { const uint32_t x19 = in2[3]; + { const uint32_t x17 = in2[2]; + { const uint32_t x15 = in2[1]; + { const uint32_t x13 = in2[0]; + { uint32_t x21; uint8_t x22 = _subborrow_u32(0x0, x5, x13, &x21); + { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, x7, x15, &x24); + { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, x9, x17, &x27); + { uint32_t x30; uint8_t x31 = _subborrow_u32(x28, x11, x19, &x30); + { uint32_t x33; uint8_t x34 = _subborrow_u32(x31, x10, x18, &x33); + { uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff); + { uint32_t x36 = (x35 & 0xffffffe5); + { uint32_t x38; uint8_t x39 = _addcarryx_u32(0x0, x21, x36, &x38); + { uint32_t x40 = (x35 & 0xffffffff); + { uint32_t x42; uint8_t x43 = _addcarryx_u32(x39, x24, x40, &x42); + { uint32_t x44 = (x35 & 0xffffffff); + { uint32_t x46; uint8_t x47 = _addcarryx_u32(x43, x27, x44, &x46); + { uint32_t x48 = (x35 & 0xffffffff); + { uint32_t x50; uint8_t x51 = _addcarryx_u32(x47, x30, x48, &x50); + { uint32_t x52 = (x35 & 0xfff); + { uint32_t x54; uint8_t _ = _addcarryx_u32(x51, x33, x52, &x54); + out[0] = x38; + out[1] = x42; + out[2] = x46; + out[3] = x50; + out[4] = x54; + }}}}}}}}}}}}}}}}}}}}}}}}}} +} diff --git a/src/Specific/montgomery32_2e140m27_5limbs/fesubDisplay.log b/src/Specific/montgomery32_2e140m27_5limbs/fesubDisplay.log new file mode 100644 index 000000000..f4896928b --- /dev/null +++ b/src/Specific/montgomery32_2e140m27_5limbs/fesubDisplay.log @@ -0,0 +1,23 @@ +λ x x0 : word32 * word32 * word32 * word32 * word32, +Interp-η +(λ var : Syntax.base_type → Type, + λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core, + uint32_t x21, uint8_t x22 = subborrow_u32(0x0, x5, x13); + uint32_t x24, uint8_t x25 = subborrow_u32(x22, x7, x15); + uint32_t x27, uint8_t x28 = subborrow_u32(x25, x9, x17); + uint32_t x30, uint8_t x31 = subborrow_u32(x28, x11, x19); + uint32_t x33, uint8_t x34 = subborrow_u32(x31, x10, x18); + uint32_t x35 = cmovznz32(x34, 0x0, 0xffffffff); + uint32_t x36 = (x35 & 0xffffffe5); + uint32_t x38, uint8_t x39 = addcarryx_u32(0x0, x21, x36); + uint32_t x40 = (x35 & 0xffffffff); + uint32_t x42, uint8_t x43 = addcarryx_u32(x39, x24, x40); + uint32_t x44 = (x35 & 0xffffffff); + uint32_t x46, uint8_t x47 = addcarryx_u32(x43, x27, x44); + uint32_t x48 = (x35 & 0xffffffff); + uint32_t x50, uint8_t x51 = addcarryx_u32(x47, x30, x48); + uint32_t x52 = (x35 & 0xfff); + uint32_t x54, uint8_t _ = addcarryx_u32(x51, x33, x52); + (Return x54, Return x50, Return x46, Return x42, Return x38)) +(x, x0)%core + : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t) |