27 "\n\tadd.u64.cc t0, %0, %0;"
28 "\n\taddc.u64.cc t1, %1, %1;"
29 "\n\taddc.u64.cc t2, %2, %2;"
30 "\n\taddc.u64.cc t3, %3, %3;"
31 "\n\taddc.u32 t4, 0, 0;"
35 "\n\tsetp.ge.u32 cp, t4, 1;"
36 "\n@cp\tsub.u64.cc %0, %0, 0xFFFFFFFE00000002U;"
37 "\n@cp\tsubc.u64.cc %1, %1, 0xA77B4805FFFCB7FDU;"
38 "\n@cp\tsubc.u64.cc %2, %2, 0x6673B0101343B00AU;"
39 "\n@cp\tsubc.u64.cc %3, %3, 0xE7DB4EA6533AFA90U;"
40 "\n@cp\tsubc.u32 t4, t4, 0;"
44 "\n\tadd.u64.cc %0, %0, t0;"
45 "\n\taddc.u64.cc %1, %1, t1;"
46 "\n\taddc.u64.cc %2, %2, t2;"
47 "\n\taddc.u64.cc %3, %3, t3;"
48 "\n\taddc.u32 t4, 0, t4;"
52 "\n\tsetp.ge.u32 cp, t4, 1;"
53 "\n@cp\tsub.u64.cc %0, %0, 0xFFFFFFFE00000002U;"
54 "\n@cp\tsubc.u64.cc %1, %1, 0xA77B4805FFFCB7FDU;"
55 "\n@cp\tsubc.u64.cc %2, %2, 0x6673B0101343B00AU;"
56 "\n@cp\tsubc.u64.cc %3, %3, 0xE7DB4EA6533AFA90U;"
57 "\n@cp\tsubc.u32 t4, t4, 0;"
61 "\n\tsetp.ge.u32 cp, t4, 1;"
62 "\n@cp\tsub.u64.cc %0, %0, 0xFFFFFFFE00000002U;"
63 "\n@cp\tsubc.u64.cc %1, %1, 0xA77B4805FFFCB7FDU;"
64 "\n@cp\tsubc.u64.cc %2, %2, 0x6673B0101343B00AU;"
65 "\n@cp\tsubc.u64 %3, %3, 0xE7DB4EA6533AFA90U;"
69 "+l"(z0),
"+l"(z1),
"+l"(z2),
"+l"(z3));
71 z[0] = z0, z[1] = z1, z[2] = z2, z[3] = z3;
uint64_t fr_t[4]
Subgroup element stored as a 256-bit array (a 4-element little-endian array of uint64_t)....
__device__ void fr_x3(fr_t &z)
Multiply z by 3, and stores in z, with weak reduction.