14 #define FR_ADD(Z, X, Y) \
17 "\n\tadd.u64.cc "#Z"0, "#X"0, "#Y"0;" \
18 "\n\taddc.u64.cc "#Z"1, "#X"1, "#Y"1;" \
19 "\n\taddc.u64.cc "#Z"2, "#X"2, "#Y"2;" \
20 "\n\taddc.u64.cc "#Z"3, "#X"3, "#Y"3;" \
21 "\n\taddc.u32 t4, 0, 0;" \
25 "\n\tsetp.ne.u32 nz, t4, 0;" \
26 "\n@nz\tsub.u64.cc "#Z"0, "#Z"0, 0xFFFFFFFE00000002U;" \
27 "\n@nz\tsubc.u64.cc "#Z"1, "#Z"1, 0xA77B4805FFFCB7FDU;" \
28 "\n@nz\tsubc.u64.cc "#Z"2, "#Z"2, 0x6673B0101343B00AU;" \
29 "\n@nz\tsubc.u64.cc "#Z"3, "#Z"3, 0xE7DB4EA6533AFA90U;" \
30 "\n@nz\tsubc.u32 t4, t4, 0;" \
34 "\n\tsetp.ne.u32 nz, t4, 0;" \
35 "\n@nz\tsub.u64.cc "#Z"0, "#Z"0, 0xFFFFFFFE00000002U;" \
36 "\n@nz\tsubc.u64.cc "#Z"1, "#Z"1, 0xA77B4805FFFCB7FDU;" \
37 "\n@nz\tsubc.u64.cc "#Z"2, "#Z"2, 0x6673B0101343B00AU;" \
38 "\n@nz\tsubc.u64.cc "#Z"3, "#Z"3, 0xE7DB4EA6533AFA90U;"