aboutsummaryrefslogtreecommitdiff
path: root/src/Specific/montgomery64_2e127m1_2limbs/femul.c
blob: c6f5ef6fb48a75d282cc2b24aed629087e76aa70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
static void femul(uint64_t out[2], const uint64_t in1[2], const uint64_t in2[2]) {
  { const uint64_t x4 = in1[1];
  { const uint64_t x5 = in1[0];
  { const uint64_t x6 = in2[1];
  { const uint64_t x7 = in2[0];
  { uint64_t x10;  uint64_t x9 = _mulx_u64(x5, x7, &x10);
  { uint64_t x13;  uint64_t x12 = _mulx_u64(x5, x6, &x13);
  { uint64_t x15; uint8_t x16 = _addcarryx_u64(0x0, x10, x12, &x15);
  { uint64_t x18; uint8_t _ = _addcarryx_u64(0x0, x16, x13, &x18);
  { uint64_t x22;  uint64_t x21 = _mulx_u64(x9, 0xffffffffffffffffL, &x22);
  { uint64_t x25;  uint64_t x24 = _mulx_u64(x9, 0x7fffffffffffffffL, &x25);
  { uint64_t x27; uint8_t x28 = _addcarryx_u64(0x0, x22, x24, &x27);
  { uint64_t x30; uint8_t _ = _addcarryx_u64(0x0, x28, x25, &x30);
  { uint64_t _; uint8_t x34 = _addcarryx_u64(0x0, x9, x21, &_);
  { uint64_t x36; uint8_t x37 = _addcarryx_u64(x34, x15, x27, &x36);
  { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x18, x30, &x39);
  { uint64_t x43;  uint64_t x42 = _mulx_u64(x4, x7, &x43);
  { uint64_t x46;  uint64_t x45 = _mulx_u64(x4, x6, &x46);
  { uint64_t x48; uint8_t x49 = _addcarryx_u64(0x0, x43, x45, &x48);
  { uint64_t x51; uint8_t _ = _addcarryx_u64(0x0, x49, x46, &x51);
  { uint64_t x54; uint8_t x55 = _addcarryx_u64(0x0, x36, x42, &x54);
  { uint64_t x57; uint8_t x58 = _addcarryx_u64(x55, x39, x48, &x57);
  { uint64_t x60; uint8_t x61 = _addcarryx_u64(x58, x40, x51, &x60);
  { uint64_t x64;  uint64_t x63 = _mulx_u64(x54, 0xffffffffffffffffL, &x64);
  { uint64_t x67;  uint64_t x66 = _mulx_u64(x54, 0x7fffffffffffffffL, &x67);
  { uint64_t x69; uint8_t x70 = _addcarryx_u64(0x0, x64, x66, &x69);
  { uint64_t x72; uint8_t _ = _addcarryx_u64(0x0, x70, x67, &x72);
  { uint64_t _; uint8_t x76 = _addcarryx_u64(0x0, x54, x63, &_);
  { uint64_t x78; uint8_t x79 = _addcarryx_u64(x76, x57, x69, &x78);
  { uint64_t x81; uint8_t x82 = _addcarryx_u64(x79, x60, x72, &x81);
  { uint8_t x83 = (x82 + x61);
  { uint64_t x85; uint8_t x86 = _subborrow_u64(0x0, x78, 0xffffffffffffffffL, &x85);
  { uint64_t x88; uint8_t x89 = _subborrow_u64(x86, x81, 0x7fffffffffffffffL, &x88);
  { uint64_t _; uint8_t x92 = _subborrow_u64(x89, x83, 0x0, &_);
  { uint64_t x93 = cmovznz64(x92, x88, x81);
  { uint64_t x94 = cmovznz64(x92, x85, x78);
  out[0] = x94;
  out[1] = x93;
  }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
}