also looking at this
Track latest Zig 0.17-dev OptimizeMode API
#8
11 files
+51
-51
| @@ -110,7 +110,7 @@ fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void { | ||
| 110 | 110 | /// out1: [0x0 ~> 0xffffffffffffffff] |
| 111 | 111 | /// out2: [0x0 ~> 0xffffffffffffffff] |
| 112 | 112 | fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void { |
| 113 | @setRuntimeSafety(mode == .Debug); | |
| 113 | @setRuntimeSafety(mode == .debug); | |
| 114 | 114 | |
| 115 | 115 | const x = @as(u128, arg1) * @as(u128, arg2); |
| 116 | 116 | out1.* = @as(u64, @truncate(x)); |
| @@ -129,7 +129,7 @@ fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void { | ||
| 129 | 129 | /// Output Bounds: |
| 130 | 130 | /// out1: [0x0 ~> 0xffffffffffffffff] |
| 131 | 131 | fn cmovznzU64(out1: *u64, arg1: u1, arg2: u64, arg3: u64) void { |
| 132 | @setRuntimeSafety(mode == .Debug); | |
| 132 | @setRuntimeSafety(mode == .debug); | |
| 133 | 133 | |
| 134 | 134 | const mask = 0 -% @as(u64, arg1); |
| 135 | 135 | out1.* = (mask & arg3) | ((~mask) & arg2); |
| @@ -145,7 +145,7 @@ fn cmovznzU64(out1: *u64, arg1: u1, arg2: u64, arg3: u64) void { | ||
| 145 | 145 | /// 0 ≤ eval out1 < m |
| 146 | 146 | /// |
| 147 | 147 | pub fn mul(out1: *MontgomeryDomainFieldElement, arg1: MontgomeryDomainFieldElement, arg2: MontgomeryDomainFieldElement) void { |
| 148 | @setRuntimeSafety(mode == .Debug); | |
| 148 | @setRuntimeSafety(mode == .debug); | |
| 149 | 149 | |
| 150 | 150 | const x1 = (arg1[1]); |
| 151 | 151 | const x2 = (arg1[2]); |
| @@ -437,7 +437,7 @@ pub fn mul(out1: *MontgomeryDomainFieldElement, arg1: MontgomeryDomainFieldEleme | ||
| 437 | 437 | /// 0 ≤ eval out1 < m |
| 438 | 438 | /// |
| 439 | 439 | pub fn square(out1: *MontgomeryDomainFieldElement, arg1: MontgomeryDomainFieldElement) void { |
| 440 | @setRuntimeSafety(mode == .Debug); | |
| 440 | @setRuntimeSafety(mode == .debug); | |
| 441 | 441 | |
| 442 | 442 | const x1 = (arg1[1]); |
| 443 | 443 | const x2 = (arg1[2]); |
| @@ -730,7 +730,7 @@ pub fn square(out1: *MontgomeryDomainFieldElement, arg1: MontgomeryDomainFieldEl | ||
| 730 | 730 | /// 0 ≤ eval out1 < m |
| 731 | 731 | /// |
| 732 | 732 | pub fn add(out1: *MontgomeryDomainFieldElement, arg1: MontgomeryDomainFieldElement, arg2: MontgomeryDomainFieldElement) void { |
| 733 | @setRuntimeSafety(mode == .Debug); | |
| 733 | @setRuntimeSafety(mode == .debug); | |
| 734 | 734 | |
| 735 | 735 | var x1: u64 = undefined; |
| 736 | 736 | var x2: u1 = undefined; |
| @@ -783,7 +783,7 @@ pub fn add(out1: *MontgomeryDomainFieldElement, arg1: MontgomeryDomainFieldEleme | ||
| 783 | 783 | /// 0 ≤ eval out1 < m |
| 784 | 784 | /// |
| 785 | 785 | pub fn sub(out1: *MontgomeryDomainFieldElement, arg1: MontgomeryDomainFieldElement, arg2: MontgomeryDomainFieldElement) void { |
| 786 | @setRuntimeSafety(mode == .Debug); | |
| 786 | @setRuntimeSafety(mode == .debug); | |
| 787 | 787 | |
| 788 | 788 | var x1: u64 = undefined; |
| 789 | 789 | var x2: u1 = undefined; |
| @@ -826,7 +826,7 @@ pub fn sub(out1: *MontgomeryDomainFieldElement, arg1: MontgomeryDomainFieldEleme | ||
| 826 | 826 | /// 0 ≤ eval out1 < m |
| 827 | 827 | /// |
| 828 | 828 | pub fn opp(out1: *MontgomeryDomainFieldElement, arg1: MontgomeryDomainFieldElement) void { |
| 829 | @setRuntimeSafety(mode == .Debug); | |
| 829 | @setRuntimeSafety(mode == .debug); | |
| 830 | 830 | |
| 831 | 831 | var x1: u64 = undefined; |
| 832 | 832 | var x2: u1 = undefined; |
| @@ -869,7 +869,7 @@ pub fn opp(out1: *MontgomeryDomainFieldElement, arg1: MontgomeryDomainFieldEleme | ||
| 869 | 869 | /// 0 ≤ eval out1 < m |
| 870 | 870 | /// |
| 871 | 871 | pub fn fromMontgomery(out1: *NonMontgomeryDomainFieldElement, arg1: MontgomeryDomainFieldElement) void { |
| 872 | @setRuntimeSafety(mode == .Debug); | |
| 872 | @setRuntimeSafety(mode == .debug); | |
| 873 | 873 | |
| 874 | 874 | const x1 = (arg1[0]); |
| 875 | 875 | var x2: u64 = undefined; |
| @@ -1022,7 +1022,7 @@ pub fn fromMontgomery(out1: *NonMontgomeryDomainFieldElement, arg1: MontgomeryDo | ||
| 1022 | 1022 | /// 0 ≤ eval out1 < m |
| 1023 | 1023 | /// |
| 1024 | 1024 | pub fn toMontgomery(out1: *MontgomeryDomainFieldElement, arg1: NonMontgomeryDomainFieldElement) void { |
| 1025 | @setRuntimeSafety(mode == .Debug); | |
| 1025 | @setRuntimeSafety(mode == .debug); | |
| 1026 | 1026 | |
| 1027 | 1027 | const x1 = (arg1[1]); |
| 1028 | 1028 | const x2 = (arg1[2]); |
| @@ -1297,7 +1297,7 @@ pub fn toMontgomery(out1: *MontgomeryDomainFieldElement, arg1: NonMontgomeryDoma | ||
| 1297 | 1297 | /// Output Bounds: |
| 1298 | 1298 | /// out1: [0x0 ~> 0xffffffffffffffff] |
| 1299 | 1299 | pub fn nonzero(out1: *u64, arg1: [4]u64) void { |
| 1300 | @setRuntimeSafety(mode == .Debug); | |
| 1300 | @setRuntimeSafety(mode == .debug); | |
| 1301 | 1301 | |
| 1302 | 1302 | const x1 = ((arg1[0]) | ((arg1[1]) | ((arg1[2]) | (arg1[3])))); |
| 1303 | 1303 | out1.* = x1; |
| @@ -1315,7 +1315,7 @@ pub fn nonzero(out1: *u64, arg1: [4]u64) void { | ||
| 1315 | 1315 | /// Output Bounds: |
| 1316 | 1316 | /// out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] |
| 1317 | 1317 | pub fn selectznz(out1: *[4]u64, arg1: u1, arg2: [4]u64, arg3: [4]u64) void { |
| 1318 | @setRuntimeSafety(mode == .Debug); | |
| 1318 | @setRuntimeSafety(mode == .debug); | |
| 1319 | 1319 | |
| 1320 | 1320 | var x1: u64 = undefined; |
| 1321 | 1321 | cmovznzU64(&x1, arg1, (arg2[0]), (arg3[0])); |
| @@ -1343,7 +1343,7 @@ pub fn selectznz(out1: *[4]u64, arg1: u1, arg2: [4]u64, arg3: [4]u64) void { | ||
| 1343 | 1343 | /// Output Bounds: |
| 1344 | 1344 | /// out1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff]] |
| 1345 | 1345 | pub fn toBytes(out1: *[32]u8, arg1: [4]u64) void { |
| 1346 | @setRuntimeSafety(mode == .Debug); | |
| 1346 | @setRuntimeSafety(mode == .debug); | |
| 1347 | 1347 | |
| 1348 | 1348 | const x1 = (arg1[3]); |
| 1349 | 1349 | const x2 = (arg1[2]); |
| @@ -1452,7 +1452,7 @@ pub fn toBytes(out1: *[32]u8, arg1: [4]u64) void { | ||
| 1452 | 1452 | /// Output Bounds: |
| 1453 | 1453 | /// out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] |
| 1454 | 1454 | pub fn fromBytes(out1: *[4]u64, arg1: [32]u8) void { |
| 1455 | @setRuntimeSafety(mode == .Debug); | |
| 1455 | @setRuntimeSafety(mode == .debug); | |
| 1456 | 1456 | |
| 1457 | 1457 | const x1 = (@as(u64, (arg1[31])) << 56); |
| 1458 | 1458 | const x2 = (@as(u64, (arg1[30])) << 48); |
| @@ -1527,7 +1527,7 @@ pub fn fromBytes(out1: *[4]u64, arg1: [32]u8) void { | ||
| 1527 | 1527 | /// 0 ≤ eval out1 < m |
| 1528 | 1528 | /// |
| 1529 | 1529 | pub fn setOne(out1: *MontgomeryDomainFieldElement) void { |
| 1530 | @setRuntimeSafety(mode == .Debug); | |
| 1530 | @setRuntimeSafety(mode == .debug); | |
| 1531 | 1531 | |
| 1532 | 1532 | out1[0] = @as(u64, 0x1); |
| 1533 | 1533 | out1[1] = 0xffffffff00000000; |
| @@ -1544,7 +1544,7 @@ pub fn setOne(out1: *MontgomeryDomainFieldElement) void { | ||
| 1544 | 1544 | /// Output Bounds: |
| 1545 | 1545 | /// out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] |
| 1546 | 1546 | pub fn msat(out1: *[5]u64) void { |
| 1547 | @setRuntimeSafety(mode == .Debug); | |
| 1547 | @setRuntimeSafety(mode == .debug); | |
| 1548 | 1548 | |
| 1549 | 1549 | out1[0] = 0xffffffffffffffff; |
| 1550 | 1550 | out1[1] = 0xffffffff; |
| @@ -1582,7 +1582,7 @@ pub fn msat(out1: *[5]u64) void { | ||
| 1582 | 1582 | /// out4: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] |
| 1583 | 1583 | /// out5: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] |
| 1584 | 1584 | pub fn divstep(out1: *u64, out2: *[5]u64, out3: *[5]u64, out4: *[4]u64, out5: *[4]u64, arg1: u64, arg2: [5]u64, arg3: [5]u64, arg4: [4]u64, arg5: [4]u64) void { |
| 1585 | @setRuntimeSafety(mode == .Debug); | |
| 1585 | @setRuntimeSafety(mode == .debug); | |
| 1586 | 1586 | |
| 1587 | 1587 | var x1: u64 = undefined; |
| 1588 | 1588 | var x2: u1 = undefined; |
| @@ -1816,7 +1816,7 @@ pub fn divstep(out1: *u64, out2: *[5]u64, out3: *[5]u64, out4: *[4]u64, out5: *[ | ||
| 1816 | 1816 | /// Output Bounds: |
| 1817 | 1817 | /// out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] |
| 1818 | 1818 | pub fn divstepPrecomp(out1: *[4]u64) void { |
| 1819 | @setRuntimeSafety(mode == .Debug); | |
| 1819 | @setRuntimeSafety(mode == .debug); | |
| 1820 | 1820 | |
| 1821 | 1821 | out1[0] = 0x67ffffffb8000000; |
| 1822 | 1822 | out1[1] = 0xc000000038000000; |