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.

square

The function square squares a field element in the Montgomery domain.

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

p256_64.square
pub fn square(out1: *MontgomeryDomainFieldElement, arg1: MontgomeryDomainFieldElement) void

File

Code

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