Zig 0.17.0-dev (Split by item)

This is an example of documentation generated by ZigDoc, an alternative to Zig's built-in Auto Doc feature. See also examples in other modes/formats. The project being documented here (as the example) is the Zig library itself.

toMontgomery

The function toMontgomery translates a field element into the Montgomery domain.

Preconditions: 0 ≤ eval arg1 < m Postconditions: eval (from_montgomery out1) mod m = eval arg1 mod m 0 ≤ eval out1 < m

p256_scalar_64.toMontgomery
pub fn toMontgomery(out1: *MontgomeryDomainFieldElement, arg1: NonMontgomeryDomainFieldElement) void

File

lib/std/crypto/pcurves/p256/p256_scalar_64.zig:1180

Code

pub fn toMontgomery(out1: *MontgomeryDomainFieldElement, arg1: NonMontgomeryDomainFieldElement) void {
    @setRuntimeSafety(mode == .debug);

    const x1 = (arg1[1]);
    const x2 = (arg1[2]);
    const x3 = (arg1[3]);
    const x4 = (arg1[0]);
    var x5: u64 = undefined;
    var x6: u64 = undefined;
    mulxU64(&x5, &x6, x4, 0x66e12d94f3d95620);
    var x7: u64 = undefined;
    var x8: u64 = undefined;
    mulxU64(&x7, &x8, x4, 0x2845b2392b6bec59);
    var x9: u64 = undefined;
    var x10: u64 = undefined;
    mulxU64(&x9, &x10, x4, 0x4699799c49bd6fa6);
    var x11: u64 = undefined;
    var x12: u64 = undefined;
    mulxU64(&x11, &x12, x4, 0x83244c95be79eea2);
    var x13: u64 = undefined;
    var x14: u1 = undefined;
    addcarryxU64(&x13, &x14, 0x0, x12, x9);
    var x15: u64 = undefined;
    var x16: u1 = undefined;
    addcarryxU64(&x15, &x16, x14, x10, x7);
    var x17: u64 = undefined;
    var x18: u1 = undefined;
    addcarryxU64(&x17, &x18, x16, x8, x5);
    var x19: u64 = undefined;
    var x20: u64 = undefined;
    mulxU64(&x19, &x20, x11, 0xccd1c8aaee00bc4f);
    var x21: u64 = undefined;
    var x22: u64 = undefined;
    mulxU64(&x21, &x22, x19, 0xffffffff00000000);
    var x23: u64 = undefined;
    var x24: u64 = undefined;
    mulxU64(&x23, &x24, x19, 0xffffffffffffffff);
    var x25: u64 = undefined;
    var x26: u64 = undefined;
    mulxU64(&x25, &x26, x19, 0xbce6faada7179e84);
    var x27: u64 = undefined;
    var x28: u64 = undefined;
    mulxU64(&x27, &x28, x19, 0xf3b9cac2fc632551);
    var x29: u64 = undefined;
    var x30: u1 = undefined;
    addcarryxU64(&x29, &x30, 0x0, x28, x25);
    var x31: u64 = undefined;
    var x32: u1 = undefined;
    addcarryxU64(&x31, &x32, x30, x26, x23);
    var x33: u64 = undefined;
    var x34: u1 = undefined;
    addcarryxU64(&x33, &x34, x32, x24, x21);
    var x35: u64 = undefined;
    var x36: u1 = undefined;
    addcarryxU64(&x35, &x36, 0x0, x11, x27);
    var x37: u64 = undefined;
    var x38: u1 = undefined;
    addcarryxU64(&x37, &x38, x36, x13, x29);
    var x39: u64 = undefined;
    var x40: u1 = undefined;
    addcarryxU64(&x39, &x40, x38, x15, x31);
    var x41: u64 = undefined;
    var x42: u1 = undefined;
    addcarryxU64(&x41, &x42, x40, x17, x33);
    var x43: u64 = undefined;
    var x44: u1 = undefined;
    addcarryxU64(&x43, &x44, x42, (@as(u64, x18) + x6), (@as(u64, x34) + x22));
    var x45: u64 = undefined;
    var x46: u64 = undefined;
    mulxU64(&x45, &x46, x1, 0x66e12d94f3d95620);
    var x47: u64 = undefined;
    var x48: u64 = undefined;
    mulxU64(&x47, &x48, x1, 0x2845b2392b6bec59);
    var x49: u64 = undefined;
    var x50: u64 = undefined;
    mulxU64(&x49, &x50, x1, 0x4699799c49bd6fa6);
    var x51: u64 = undefined;
    var x52: u64 = undefined;
    mulxU64(&x51, &x52, x1, 0x83244c95be79eea2);
    var x53: u64 = undefined;
    var x54: u1 = undefined;
    addcarryxU64(&x53, &x54, 0x0, x52, x49);
    var x55: u64 = undefined;
    var x56: u1 = undefined;
    addcarryxU64(&x55, &x56, x54, x50, x47);
    var x57: u64 = undefined;
    var x58: u1 = undefined;
    addcarryxU64(&x57, &x58, x56, x48, x45);
    var x59: u64 = undefined;
    var x60: u1 = undefined;
    addcarryxU64(&x59, &x60, 0x0, x37, x51);
    var x61: u64 = undefined;
    var x62: u1 = undefined;
    addcarryxU64(&x61, &x62, x60, x39, x53);
    var x63: u64 = undefined;
    var x64: u1 = undefined;
    addcarryxU64(&x63, &x64, x62, x41, x55);
    var x65: u64 = undefined;
    var x66: u1 = undefined;
    addcarryxU64(&x65, &x66, x64, x43, x57);
    var x67: u64 = undefined;
    var x68: u64 = undefined;
    mulxU64(&x67, &x68, x59, 0xccd1c8aaee00bc4f);
    var x69: u64 = undefined;
    var x70: u64 = undefined;
    mulxU64(&x69, &x70, x67, 0xffffffff00000000);
    var x71: u64 = undefined;
    var x72: u64 = undefined;
    mulxU64(&x71, &x72, x67, 0xffffffffffffffff);
    var x73: u64 = undefined;
    var x74: u64 = undefined;
    mulxU64(&x73, &x74, x67, 0xbce6faada7179e84);
    var x75: u64 = undefined;
    var x76: u64 = undefined;
    mulxU64(&x75, &x76, x67, 0xf3b9cac2fc632551);
    var x77: u64 = undefined;
    var x78: u1 = undefined;
    addcarryxU64(&x77, &x78, 0x0, x76, x73);
    var x79: u64 = undefined;
    var x80: u1 = undefined;
    addcarryxU64(&x79, &x80, x78, x74, x71);
    var x81: u64 = undefined;
    var x82: u1 = undefined;
    addcarryxU64(&x81, &x82, x80, x72, x69);
    var x83: u64 = undefined;
    var x84: u1 = undefined;
    addcarryxU64(&x83, &x84, 0x0, x59, x75);
    var x85: u64 = undefined;
    var x86: u1 = undefined;
    addcarryxU64(&x85, &x86, x84, x61, x77);
    var x87: u64 = undefined;
    var x88: u1 = undefined;
    addcarryxU64(&x87, &x88, x86, x63, x79);
    var x89: u64 = undefined;
    var x90: u1 = undefined;
    addcarryxU64(&x89, &x90, x88, x65, x81);
    var x91: u64 = undefined;
    var x92: u1 = undefined;
    addcarryxU64(&x91, &x92, x90, ((@as(u64, x66) + @as(u64, x44)) + (@as(u64, x58) + x46)), (@as(u64, x82) + x70));
    var x93: u64 = undefined;
    var x94: u64 = undefined;
    mulxU64(&x93, &x94, x2, 0x66e12d94f3d95620);
    var x95: u64 = undefined;
    var x96: u64 = undefined;
    mulxU64(&x95, &x96, x2, 0x2845b2392b6bec59);
    var x97: u64 = undefined;
    var x98: u64 = undefined;
    mulxU64(&x97, &x98, x2, 0x4699799c49bd6fa6);
    var x99: u64 = undefined;
    var x100: u64 = undefined;
    mulxU64(&x99, &x100, x2, 0x83244c95be79eea2);
    var x101: u64 = undefined;
    var x102: u1 = undefined;
    addcarryxU64(&x101, &x102, 0x0, x100, x97);
    var x103: u64 = undefined;
    var x104: u1 = undefined;
    addcarryxU64(&x103, &x104, x102, x98, x95);
    var x105: u64 = undefined;
    var x106: u1 = undefined;
    addcarryxU64(&x105, &x106, x104, x96, x93);
    var x107: u64 = undefined;
    var x108: u1 = undefined;
    addcarryxU64(&x107, &x108, 0x0, x85, x99);
    var x109: u64 = undefined;
    var x110: u1 = undefined;
    addcarryxU64(&x109, &x110, x108, x87, x101);
    var x111: u64 = undefined;
    var x112: u1 = undefined;
    addcarryxU64(&x111, &x112, x110, x89, x103);
    var x113: u64 = undefined;
    var x114: u1 = undefined;
    addcarryxU64(&x113, &x114, x112, x91, x105);
    var x115: u64 = undefined;
    var x116: u64 = undefined;
    mulxU64(&x115, &x116, x107, 0xccd1c8aaee00bc4f);
    var x117: u64 = undefined;
    var x118: u64 = undefined;
    mulxU64(&x117, &x118, x115, 0xffffffff00000000);
    var x119: u64 = undefined;
    var x120: u64 = undefined;
    mulxU64(&x119, &x120, x115, 0xffffffffffffffff);
    var x121: u64 = undefined;
    var x122: u64 = undefined;
    mulxU64(&x121, &x122, x115, 0xbce6faada7179e84);
    var x123: u64 = undefined;
    var x124: u64 = undefined;
    mulxU64(&x123, &x124, x115, 0xf3b9cac2fc632551);
    var x125: u64 = undefined;
    var x126: u1 = undefined;
    addcarryxU64(&x125, &x126, 0x0, x124, x121);
    var x127: u64 = undefined;
    var x128: u1 = undefined;
    addcarryxU64(&x127, &x128, x126, x122, x119);
    var x129: u64 = undefined;
    var x130: u1 = undefined;
    addcarryxU64(&x129, &x130, x128, x120, x117);
    var x131: u64 = undefined;
    var x132: u1 = undefined;
    addcarryxU64(&x131, &x132, 0x0, x107, x123);
    var x133: u64 = undefined;
    var x134: u1 = undefined;
    addcarryxU64(&x133, &x134, x132, x109, x125);
    var x135: u64 = undefined;
    var x136: u1 = undefined;
    addcarryxU64(&x135, &x136, x134, x111, x127);
    var x137: u64 = undefined;
    var x138: u1 = undefined;
    addcarryxU64(&x137, &x138, x136, x113, x129);
    var x139: u64 = undefined;
    var x140: u1 = undefined;
    addcarryxU64(&x139, &x140, x138, ((@as(u64, x114) + @as(u64, x92)) + (@as(u64, x106) + x94)), (@as(u64, x130) + x118));
    var x141: u64 = undefined;
    var x142: u64 = undefined;
    mulxU64(&x141, &x142, x3, 0x66e12d94f3d95620);
    var x143: u64 = undefined;
    var x144: u64 = undefined;
    mulxU64(&x143, &x144, x3, 0x2845b2392b6bec59);
    var x145: u64 = undefined;
    var x146: u64 = undefined;
    mulxU64(&x145, &x146, x3, 0x4699799c49bd6fa6);
    var x147: u64 = undefined;
    var x148: u64 = undefined;
    mulxU64(&x147, &x148, x3, 0x83244c95be79eea2);
    var x149: u64 = undefined;
    var x150: u1 = undefined;
    addcarryxU64(&x149, &x150, 0x0, x148, x145);
    var x151: u64 = undefined;
    var x152: u1 = undefined;
    addcarryxU64(&x151, &x152, x150, x146, x143);
    var x153: u64 = undefined;
    var x154: u1 = undefined;
    addcarryxU64(&x153, &x154, x152, x144, x141);
    var x155: u64 = undefined;
    var x156: u1 = undefined;
    addcarryxU64(&x155, &x156, 0x0, x133, x147);
    var x157: u64 = undefined;
    var x158: u1 = undefined;
    addcarryxU64(&x157, &x158, x156, x135, x149);
    var x159: u64 = undefined;
    var x160: u1 = undefined;
    addcarryxU64(&x159, &x160, x158, x137, x151);
    var x161: u64 = undefined;
    var x162: u1 = undefined;
    addcarryxU64(&x161, &x162, x160, x139, x153);
    var x163: u64 = undefined;
    var x164: u64 = undefined;
    mulxU64(&x163, &x164, x155, 0xccd1c8aaee00bc4f);
    var x165: u64 = undefined;
    var x166: u64 = undefined;
    mulxU64(&x165, &x166, x163, 0xffffffff00000000);
    var x167: u64 = undefined;
    var x168: u64 = undefined;
    mulxU64(&x167, &x168, x163, 0xffffffffffffffff);
    var x169: u64 = undefined;
    var x170: u64 = undefined;
    mulxU64(&x169, &x170, x163, 0xbce6faada7179e84);
    var x171: u64 = undefined;
    var x172: u64 = undefined;
    mulxU64(&x171, &x172, x163, 0xf3b9cac2fc632551);
    var x173: u64 = undefined;
    var x174: u1 = undefined;
    addcarryxU64(&x173, &x174, 0x0, x172, x169);
    var x175: u64 = undefined;
    var x176: u1 = undefined;
    addcarryxU64(&x175, &x176, x174, x170, x167);
    var x177: u64 = undefined;
    var x178: u1 = undefined;
    addcarryxU64(&x177, &x178, x176, x168, x165);
    var x179: u64 = undefined;
    var x180: u1 = undefined;
    addcarryxU64(&x179, &x180, 0x0, x155, x171);
    var x181: u64 = undefined;
    var x182: u1 = undefined;
    addcarryxU64(&x181, &x182, x180, x157, x173);
    var x183: u64 = undefined;
    var x184: u1 = undefined;
    addcarryxU64(&x183, &x184, x182, x159, x175);
    var x185: u64 = undefined;
    var x186: u1 = undefined;
    addcarryxU64(&x185, &x186, x184, x161, x177);
    var x187: u64 = undefined;
    var x188: u1 = undefined;
    addcarryxU64(&x187, &x188, x186, ((@as(u64, x162) + @as(u64, x140)) + (@as(u64, x154) + x142)), (@as(u64, x178) + x166));
    var x189: u64 = undefined;
    var x190: u1 = undefined;
    subborrowxU64(&x189, &x190, 0x0, x181, 0xf3b9cac2fc632551);
    var x191: u64 = undefined;
    var x192: u1 = undefined;
    subborrowxU64(&x191, &x192, x190, x183, 0xbce6faada7179e84);
    var x193: u64 = undefined;
    var x194: u1 = undefined;
    subborrowxU64(&x193, &x194, x192, x185, 0xffffffffffffffff);
    var x195: u64 = undefined;
    var x196: u1 = undefined;
    subborrowxU64(&x195, &x196, x194, x187, 0xffffffff00000000);
    var x197: u64 = undefined;
    var x198: u1 = undefined;
    subborrowxU64(&x197, &x198, x196, @as(u64, x188), @as(u64, 0x0));
    var x199: u64 = undefined;
    cmovznzU64(&x199, x198, x189, x181);
    var x200: u64 = undefined;
    cmovznzU64(&x200, x198, x191, x183);
    var x201: u64 = undefined;
    cmovznzU64(&x201, x198, x193, x185);
    var x202: u64 = undefined;
    cmovznzU64(&x202, x198, x195, x187);
    out1[0] = x199;
    out1[1] = x200;
    out1[2] = x201;
    out1[3] = x202;
}