Previously, we used a little bit of generation to drive a lot of Rust macros. This works, but it's a little confusing to read and write. In addition, we used a lot of implementations with variable timings based on their input, which isn't great for crypto. This is the start of an attempt to just generate all of the relevant Rust code directly, and to use timing-channel resistant implementations for most of the routines.
741 lines
30 KiB
Rust
741 lines
30 KiB
Rust
moddiv_impls!(I192, I384);
|
|
signed_impls!(I192, U192);
|
|
subtraction_impls!(I192, I256, U256);
|
|
mul_impls!(I192, I384);
|
|
div_impls!(I192, U192);
|
|
smodinv_impls!(I192, I256);
|
|
scale_impls!(I192, I256);
|
|
conversion_impls!(I192, U192, I256, U256);
|
|
conversion_impls!(I192, U192, I384, U384);
|
|
conversion_impls!(I192, U192, I448, U448);
|
|
egcd_impls!(I256, U192, I192, I512);
|
|
modinv_impls!(U192, I256, U256);
|
|
moddiv_impls!(I256, I512);
|
|
add_impls!(I256, I320, U320);
|
|
signed_impls!(I256, U256);
|
|
cmp_impls!(I256);
|
|
shift_impls!(I256, U256);
|
|
subtraction_impls!(I256, I320, U320);
|
|
mul_impls!(I256, I512);
|
|
div_impls!(I256, U256);
|
|
smodinv_impls!(I256, I320);
|
|
scale_impls!(I256, I320);
|
|
conversion_impls!(I256, U256, I320, U320);
|
|
conversion_impls!(I256, U256, I512, U512);
|
|
conversion_impls!(I256, U256, I576, U576);
|
|
egcd_impls!(I320, U256, I256, I640);
|
|
modinv_impls!(U256, I320, U320);
|
|
add_impls!(I320, I384, U384);
|
|
signed_impls!(I320, U320);
|
|
cmp_impls!(I320);
|
|
shift_impls!(I320, U320);
|
|
subtraction_impls!(I320, I384, U384);
|
|
mul_impls!(I320, I640);
|
|
div_impls!(I320, U320);
|
|
scale_impls!(I320, I384);
|
|
conversion_impls!(I320, U320, I384, U384);
|
|
conversion_impls!(I320, U320, I640, U640);
|
|
conversion_impls!(I320, U320, I704, U704);
|
|
moddiv_impls!(I384, I768);
|
|
signed_impls!(I384, U384);
|
|
shift_impls!(I384, U384);
|
|
subtraction_impls!(I384, I448, U448);
|
|
mul_impls!(I384, I768);
|
|
div_impls!(I384, U384);
|
|
smodinv_impls!(I384, I448);
|
|
scale_impls!(I384, I448);
|
|
conversion_impls!(I384, U384, I448, U448);
|
|
conversion_impls!(I384, U384, I768, U768);
|
|
conversion_impls!(I384, U384, I832, U832);
|
|
egcd_impls!(I448, U384, I384, I896);
|
|
modinv_impls!(U384, I448, U448);
|
|
moddiv_impls!(I448, I896);
|
|
add_impls!(I448, I512, U512);
|
|
signed_impls!(I448, U448);
|
|
cmp_impls!(I448);
|
|
shift_impls!(I448, U448);
|
|
subtraction_impls!(I448, I512, U512);
|
|
mul_impls!(I448, I896);
|
|
div_impls!(I448, U448);
|
|
smodinv_impls!(I448, I512);
|
|
scale_impls!(I448, I512);
|
|
conversion_impls!(I448, U448, I512, U512);
|
|
conversion_impls!(I448, U448, I896, U896);
|
|
conversion_impls!(I448, U448, I960, U960);
|
|
egcd_impls!(I512, U448, I448, I1024);
|
|
modinv_impls!(U448, I512, U512);
|
|
add_impls!(I512, I576, U576);
|
|
signed_impls!(I512, U512);
|
|
cmp_impls!(I512);
|
|
shift_impls!(I512, U512);
|
|
subtraction_impls!(I512, I576, U576);
|
|
mul_impls!(I512, I1024);
|
|
div_impls!(I512, U512);
|
|
scale_impls!(I512, I576);
|
|
conversion_impls!(I512, U512, I576, U576);
|
|
conversion_impls!(I512, U512, I1024, U1024);
|
|
conversion_impls!(I512, U512, I1088, U1088);
|
|
egcd_impls!(I576, U512, I512, I1152);
|
|
modinv_impls!(U512, I576, U576);
|
|
moddiv_impls!(I576, I1152);
|
|
add_impls!(I576, I640, U640);
|
|
signed_impls!(I576, U576);
|
|
cmp_impls!(I576);
|
|
shift_impls!(I576, U576);
|
|
subtraction_impls!(I576, I640, U640);
|
|
mul_impls!(I576, I1152);
|
|
div_impls!(I576, U576);
|
|
smodinv_impls!(I576, I640);
|
|
scale_impls!(I576, I640);
|
|
conversion_impls!(I576, U576, I640, U640);
|
|
conversion_impls!(I576, U576, I1152, U1152);
|
|
conversion_impls!(I576, U576, I1216, U1216);
|
|
egcd_impls!(I640, U576, I576, I1280);
|
|
modinv_impls!(U576, I640, U640);
|
|
add_impls!(I640, I704, U704);
|
|
signed_impls!(I640, U640);
|
|
cmp_impls!(I640);
|
|
shift_impls!(I640, U640);
|
|
subtraction_impls!(I640, I704, U704);
|
|
mul_impls!(I640, I1280);
|
|
div_impls!(I640, U640);
|
|
scale_impls!(I640, I704);
|
|
conversion_impls!(I640, U640, I704, U704);
|
|
conversion_impls!(I640, U640, I1280, U1280);
|
|
conversion_impls!(I640, U640, I1344, U1344);
|
|
signed_impls!(I704, U704);
|
|
signed_impls!(I768, U768);
|
|
shift_impls!(I768, U768);
|
|
subtraction_impls!(I768, I832, U832);
|
|
mul_impls!(I768, I1536);
|
|
div_impls!(I768, U768);
|
|
scale_impls!(I768, I832);
|
|
conversion_impls!(I768, U768, I832, U832);
|
|
conversion_impls!(I768, U768, I1536, U1536);
|
|
moddiv_impls!(I832, I1664);
|
|
add_impls!(I832, I896, U896);
|
|
signed_impls!(I832, U832);
|
|
shift_impls!(I832, U832);
|
|
mul_impls!(I832, I1664);
|
|
div_impls!(I832, U832);
|
|
smodinv_impls!(I832, I896);
|
|
scale_impls!(I832, I896);
|
|
conversion_impls!(I832, U832, I896, U896);
|
|
conversion_impls!(I832, U832, I1664, U1664);
|
|
egcd_impls!(I896, U832, I832, I1792);
|
|
modinv_impls!(U832, I896, U896);
|
|
add_impls!(I896, I960, U960);
|
|
signed_impls!(I896, U896);
|
|
cmp_impls!(I896);
|
|
shift_impls!(I896, U896);
|
|
subtraction_impls!(I896, I960, U960);
|
|
mul_impls!(I896, I1792);
|
|
div_impls!(I896, U896);
|
|
scale_impls!(I896, I960);
|
|
conversion_impls!(I896, U896, I960, U960);
|
|
conversion_impls!(I896, U896, I1792, U1792);
|
|
conversion_impls!(I896, U896, I1856, U1856);
|
|
signed_impls!(I960, U960);
|
|
signed_impls!(I1024, U1024);
|
|
subtraction_impls!(I1024, I1088, U1088);
|
|
conversion_impls!(I1024, U1024, I1088, U1088);
|
|
egcd_impls!(I1088, U1024, I1024, I2176);
|
|
modinv_impls!(U1024, I1088, U1088);
|
|
add_impls!(I1088, I1152, U1152);
|
|
signed_impls!(I1088, U1088);
|
|
cmp_impls!(I1088);
|
|
shift_impls!(I1088, U1088);
|
|
subtraction_impls!(I1088, I1152, U1152);
|
|
mul_impls!(I1088, I2176);
|
|
div_impls!(I1088, U1088);
|
|
scale_impls!(I1088, I1152);
|
|
conversion_impls!(I1088, U1088, I1152, U1152);
|
|
conversion_impls!(I1088, U1088, I2176, U2176);
|
|
conversion_impls!(I1088, U1088, I2240, U2240);
|
|
signed_impls!(I1152, U1152);
|
|
shift_impls!(I1152, U1152);
|
|
subtraction_impls!(I1152, I1216, U1216);
|
|
mul_impls!(I1152, I2304);
|
|
div_impls!(I1152, U1152);
|
|
scale_impls!(I1152, I1216);
|
|
conversion_impls!(I1152, U1152, I1216, U1216);
|
|
conversion_impls!(I1152, U1152, I2304, U2304);
|
|
moddiv_impls!(I1216, I2432);
|
|
add_impls!(I1216, I1280, U1280);
|
|
signed_impls!(I1216, U1216);
|
|
shift_impls!(I1216, U1216);
|
|
mul_impls!(I1216, I2432);
|
|
div_impls!(I1216, U1216);
|
|
smodinv_impls!(I1216, I1280);
|
|
scale_impls!(I1216, I1280);
|
|
conversion_impls!(I1216, U1216, I1280, U1280);
|
|
conversion_impls!(I1216, U1216, I2432, U2432);
|
|
egcd_impls!(I1280, U1216, I1216, I2560);
|
|
modinv_impls!(U1216, I1280, U1280);
|
|
add_impls!(I1280, I1344, U1344);
|
|
signed_impls!(I1280, U1280);
|
|
cmp_impls!(I1280);
|
|
shift_impls!(I1280, U1280);
|
|
subtraction_impls!(I1280, I1344, U1344);
|
|
mul_impls!(I1280, I2560);
|
|
div_impls!(I1280, U1280);
|
|
scale_impls!(I1280, I1344);
|
|
conversion_impls!(I1280, U1280, I1344, U1344);
|
|
conversion_impls!(I1280, U1280, I2560, U2560);
|
|
conversion_impls!(I1280, U1280, I2624, U2624);
|
|
signed_impls!(I1344, U1344);
|
|
signed_impls!(I1536, U1536);
|
|
conversion_impls!(I1536, U1536, I1600, U1600);
|
|
egcd_impls!(I1600, U1536, I1536, I3200);
|
|
add_impls!(I1600, I1664, U1664);
|
|
signed_impls!(I1600, U1600);
|
|
cmp_impls!(I1600);
|
|
shift_impls!(I1600, U1600);
|
|
subtraction_impls!(I1600, I1664, U1664);
|
|
mul_impls!(I1600, I3200);
|
|
div_impls!(I1600, U1600);
|
|
scale_impls!(I1600, I1664);
|
|
conversion_impls!(I1600, U1600, I1664, U1664);
|
|
conversion_impls!(I1600, U1600, I3200, U3200);
|
|
conversion_impls!(I1600, U1600, I3264, U3264);
|
|
signed_impls!(I1664, U1664);
|
|
div_impls!(I1664, U1664);
|
|
signed_impls!(I1792, U1792);
|
|
subtraction_impls!(I1792, I1856, U1856);
|
|
conversion_impls!(I1792, U1792, I1856, U1856);
|
|
signed_impls!(I1856, U1856);
|
|
signed_impls!(I2048, U2048);
|
|
conversion_impls!(I2048, U2048, I2112, U2112);
|
|
egcd_impls!(I2112, U2048, I2048, I4224);
|
|
modinv_impls!(U2048, I2112, U2112);
|
|
add_impls!(I2112, I2176, U2176);
|
|
signed_impls!(I2112, U2112);
|
|
cmp_impls!(I2112);
|
|
shift_impls!(I2112, U2112);
|
|
subtraction_impls!(I2112, I2176, U2176);
|
|
mul_impls!(I2112, I4224);
|
|
div_impls!(I2112, U2112);
|
|
scale_impls!(I2112, I2176);
|
|
conversion_impls!(I2112, U2112, I2176, U2176);
|
|
conversion_impls!(I2112, U2112, I4224, U4224);
|
|
conversion_impls!(I2112, U2112, I4288, U4288);
|
|
signed_impls!(I2176, U2176);
|
|
subtraction_impls!(I2176, I2240, U2240);
|
|
conversion_impls!(I2176, U2176, I2240, U2240);
|
|
signed_impls!(I2240, U2240);
|
|
signed_impls!(I2304, U2304);
|
|
signed_impls!(I2432, U2432);
|
|
div_impls!(I2432, U2432);
|
|
signed_impls!(I2560, U2560);
|
|
subtraction_impls!(I2560, I2624, U2624);
|
|
conversion_impls!(I2560, U2560, I2624, U2624);
|
|
signed_impls!(I2624, U2624);
|
|
signed_impls!(I3072, U3072);
|
|
conversion_impls!(I3072, U3072, I3136, U3136);
|
|
egcd_impls!(I3136, U3072, I3072, I6272);
|
|
modinv_impls!(U3072, I3136, U3136);
|
|
add_impls!(I3136, I3200, U3200);
|
|
signed_impls!(I3136, U3136);
|
|
cmp_impls!(I3136);
|
|
shift_impls!(I3136, U3136);
|
|
subtraction_impls!(I3136, I3200, U3200);
|
|
mul_impls!(I3136, I6272);
|
|
div_impls!(I3136, U3136);
|
|
scale_impls!(I3136, I3200);
|
|
conversion_impls!(I3136, U3136, I3200, U3200);
|
|
conversion_impls!(I3136, U3136, I6272, U6272);
|
|
conversion_impls!(I3136, U3136, I6336, U6336);
|
|
signed_impls!(I3200, U3200);
|
|
subtraction_impls!(I3200, I3264, U3264);
|
|
conversion_impls!(I3200, U3200, I3264, U3264);
|
|
signed_impls!(I3264, U3264);
|
|
signed_impls!(I4096, U4096);
|
|
conversion_impls!(I4096, U4096, I4160, U4160);
|
|
egcd_impls!(I4160, U4096, I4096, I8320);
|
|
modinv_impls!(U4096, I4160, U4160);
|
|
add_impls!(I4160, I4224, U4224);
|
|
signed_impls!(I4160, U4160);
|
|
cmp_impls!(I4160);
|
|
shift_impls!(I4160, U4160);
|
|
subtraction_impls!(I4160, I4224, U4224);
|
|
mul_impls!(I4160, I8320);
|
|
div_impls!(I4160, U4160);
|
|
scale_impls!(I4160, I4224);
|
|
conversion_impls!(I4160, U4160, I4224, U4224);
|
|
conversion_impls!(I4160, U4160, I8320, U8320);
|
|
conversion_impls!(I4160, U4160, I8384, U8384);
|
|
signed_impls!(I4224, U4224);
|
|
subtraction_impls!(I4224, I4288, U4288);
|
|
conversion_impls!(I4224, U4224, I4288, U4288);
|
|
signed_impls!(I4288, U4288);
|
|
signed_impls!(I6272, U6272);
|
|
subtraction_impls!(I6272, I6336, U6336);
|
|
conversion_impls!(I6272, U6272, I6336, U6336);
|
|
signed_impls!(I6336, U6336);
|
|
signed_impls!(I7680, U7680);
|
|
conversion_impls!(I7680, U7680, I7744, U7744);
|
|
egcd_impls!(I7744, U7680, I7680, I15488);
|
|
add_impls!(I7744, I7808, U7808);
|
|
signed_impls!(I7744, U7744);
|
|
cmp_impls!(I7744);
|
|
shift_impls!(I7744, U7744);
|
|
subtraction_impls!(I7744, I7808, U7808);
|
|
mul_impls!(I7744, I15488);
|
|
div_impls!(I7744, U7744);
|
|
scale_impls!(I7744, I7808);
|
|
conversion_impls!(I7744, U7744, I7808, U7808);
|
|
conversion_impls!(I7744, U7744, I15488, U15488);
|
|
conversion_impls!(I7744, U7744, I15552, U15552);
|
|
signed_impls!(I7808, U7808);
|
|
signed_impls!(I8192, U8192);
|
|
conversion_impls!(I8192, U8192, I8256, U8256);
|
|
egcd_impls!(I8256, U8192, I8192, I16512);
|
|
modinv_impls!(U8192, I8256, U8256);
|
|
add_impls!(I8256, I8320, U8320);
|
|
signed_impls!(I8256, U8256);
|
|
cmp_impls!(I8256);
|
|
shift_impls!(I8256, U8256);
|
|
subtraction_impls!(I8256, I8320, U8320);
|
|
mul_impls!(I8256, I16512);
|
|
div_impls!(I8256, U8256);
|
|
scale_impls!(I8256, I8320);
|
|
conversion_impls!(I8256, U8256, I8320, U8320);
|
|
conversion_impls!(I8256, U8256, I16512, U16512);
|
|
conversion_impls!(I8256, U8256, I16576, U16576);
|
|
signed_impls!(I8320, U8320);
|
|
subtraction_impls!(I8320, I8384, U8384);
|
|
conversion_impls!(I8320, U8320, I8384, U8384);
|
|
signed_impls!(I8384, U8384);
|
|
signed_impls!(I15360, U15360);
|
|
conversion_impls!(I15360, U15360, I15424, U15424);
|
|
egcd_impls!(I15424, U15360, I15360, I30848);
|
|
modinv_impls!(U15360, I15424, U15424);
|
|
add_impls!(I15424, I15488, U15488);
|
|
signed_impls!(I15424, U15424);
|
|
cmp_impls!(I15424);
|
|
shift_impls!(I15424, U15424);
|
|
subtraction_impls!(I15424, I15488, U15488);
|
|
mul_impls!(I15424, I30848);
|
|
div_impls!(I15424, U15424);
|
|
scale_impls!(I15424, I15488);
|
|
conversion_impls!(I15424, U15424, I15488, U15488);
|
|
conversion_impls!(I15424, U15424, I30848, U30848);
|
|
conversion_impls!(I15424, U15424, I30912, U30912);
|
|
signed_impls!(I15488, U15488);
|
|
subtraction_impls!(I15488, I15552, U15552);
|
|
conversion_impls!(I15488, U15488, I15552, U15552);
|
|
signed_impls!(I15552, U15552);
|
|
signed_impls!(I16512, U16512);
|
|
subtraction_impls!(I16512, I16576, U16576);
|
|
conversion_impls!(I16512, U16512, I16576, U16576);
|
|
signed_impls!(I16576, U16576);
|
|
signed_impls!(I30848, U30848);
|
|
subtraction_impls!(I30848, I30912, U30912);
|
|
conversion_impls!(I30848, U30848, I30912, U30912);
|
|
signed_impls!(I30912, U30912);
|
|
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
mod sigadd {
|
|
use super::super::*;
|
|
use testing::{build_test_path,run_test};
|
|
|
|
generate_sigadd_tests!(I256, U256, i256, I320, U320);
|
|
generate_sigadd_tests!(I320, U320, i320, I384, U384);
|
|
generate_sigadd_tests!(I448, U448, i448, I512, U512);
|
|
generate_sigadd_tests!(I512, U512, i512, I576, U576);
|
|
generate_sigadd_tests!(I576, U576, i576, I640, U640);
|
|
generate_sigadd_tests!(I640, U640, i640, I704, U704);
|
|
generate_sigadd_tests!(I832, U832, i832, I896, U896);
|
|
generate_sigadd_tests!(I896, U896, i896, I960, U960);
|
|
generate_sigadd_tests!(I1088, U1088, i1088, I1152, U1152);
|
|
generate_sigadd_tests!(I1216, U1216, i1216, I1280, U1280);
|
|
generate_sigadd_tests!(I1280, U1280, i1280, I1344, U1344);
|
|
generate_sigadd_tests!(I1600, U1600, i1600, I1664, U1664);
|
|
generate_sigadd_tests!(I2112, U2112, i2112, I2176, U2176);
|
|
generate_sigadd_tests!(I3136, U3136, i3136, I3200, U3200);
|
|
generate_sigadd_tests!(I4160, U4160, i4160, I4224, U4224);
|
|
generate_sigadd_tests!(I7744, U7744, i7744, I7808, U7808);
|
|
generate_sigadd_tests!(I8256, U8256, i8256, I8320, U8320);
|
|
generate_sigadd_tests!(I15424, U15424, i15424, I15488, U15488);
|
|
}
|
|
mod sigsub {
|
|
use super::super::*;
|
|
use testing::{build_test_path,run_test};
|
|
|
|
generate_sigsub_tests!(I192, U192, i192, I256, U256);
|
|
generate_sigsub_tests!(I256, U256, i256, I320, U320);
|
|
generate_sigsub_tests!(I320, U320, i320, I384, U384);
|
|
generate_sigsub_tests!(I384, U384, i384, I448, U448);
|
|
generate_sigsub_tests!(I448, U448, i448, I512, U512);
|
|
generate_sigsub_tests!(I512, U512, i512, I576, U576);
|
|
generate_sigsub_tests!(I576, U576, i576, I640, U640);
|
|
generate_sigsub_tests!(I640, U640, i640, I704, U704);
|
|
generate_sigsub_tests!(I768, U768, i768, I832, U832);
|
|
generate_sigsub_tests!(I896, U896, i896, I960, U960);
|
|
generate_sigsub_tests!(I1024, U1024, i1024, I1088, U1088);
|
|
generate_sigsub_tests!(I1088, U1088, i1088, I1152, U1152);
|
|
generate_sigsub_tests!(I1152, U1152, i1152, I1216, U1216);
|
|
generate_sigsub_tests!(I1280, U1280, i1280, I1344, U1344);
|
|
generate_sigsub_tests!(I1600, U1600, i1600, I1664, U1664);
|
|
generate_sigsub_tests!(I1792, U1792, i1792, I1856, U1856);
|
|
generate_sigsub_tests!(I2112, U2112, i2112, I2176, U2176);
|
|
generate_sigsub_tests!(I2176, U2176, i2176, I2240, U2240);
|
|
generate_sigsub_tests!(I2560, U2560, i2560, I2624, U2624);
|
|
generate_sigsub_tests!(I3136, U3136, i3136, I3200, U3200);
|
|
generate_sigsub_tests!(I3200, U3200, i3200, I3264, U3264);
|
|
generate_sigsub_tests!(I4160, U4160, i4160, I4224, U4224);
|
|
generate_sigsub_tests!(I4224, U4224, i4224, I4288, U4288);
|
|
generate_sigsub_tests!(I6272, U6272, i6272, I6336, U6336);
|
|
generate_sigsub_tests!(I7744, U7744, i7744, I7808, U7808);
|
|
generate_sigsub_tests!(I8256, U8256, i8256, I8320, U8320);
|
|
generate_sigsub_tests!(I8320, U8320, i8320, I8384, U8384);
|
|
generate_sigsub_tests!(I15424, U15424, i15424, I15488, U15488);
|
|
generate_sigsub_tests!(I15488, U15488, i15488, I15552, U15552);
|
|
generate_sigsub_tests!(ignore I16512, U16512, i16512, I16576, U16576);
|
|
generate_sigsub_tests!(ignore I30848, U30848, i30848, I30912, U30912);
|
|
}
|
|
mod signed {
|
|
use super::super::*;
|
|
use testing::{build_test_path,run_test};
|
|
|
|
generate_signed_tests!(I192, U192, i192);
|
|
generate_signed_tests!(I256, U256, i256);
|
|
generate_signed_tests!(I320, U320, i320);
|
|
generate_signed_tests!(I384, U384, i384);
|
|
generate_signed_tests!(I448, U448, i448);
|
|
generate_signed_tests!(I512, U512, i512);
|
|
generate_signed_tests!(I576, U576, i576);
|
|
generate_signed_tests!(I640, U640, i640);
|
|
generate_signed_tests!(I704, U704, i704);
|
|
generate_signed_tests!(I768, U768, i768);
|
|
generate_signed_tests!(I832, U832, i832);
|
|
generate_signed_tests!(I896, U896, i896);
|
|
generate_signed_tests!(I960, U960, i960);
|
|
generate_signed_tests!(I1024, U1024, i1024);
|
|
generate_signed_tests!(I1088, U1088, i1088);
|
|
generate_signed_tests!(I1152, U1152, i1152);
|
|
generate_signed_tests!(I1216, U1216, i1216);
|
|
generate_signed_tests!(I1280, U1280, i1280);
|
|
generate_signed_tests!(I1344, U1344, i1344);
|
|
generate_signed_tests!(I1536, U1536, i1536);
|
|
generate_signed_tests!(I1600, U1600, i1600);
|
|
generate_signed_tests!(I1664, U1664, i1664);
|
|
generate_signed_tests!(I1792, U1792, i1792);
|
|
generate_signed_tests!(I1856, U1856, i1856);
|
|
generate_signed_tests!(I2048, U2048, i2048);
|
|
generate_signed_tests!(I2112, U2112, i2112);
|
|
generate_signed_tests!(I2176, U2176, i2176);
|
|
generate_signed_tests!(I2240, U2240, i2240);
|
|
generate_signed_tests!(I2304, U2304, i2304);
|
|
generate_signed_tests!(I2432, U2432, i2432);
|
|
generate_signed_tests!(I2560, U2560, i2560);
|
|
generate_signed_tests!(I2624, U2624, i2624);
|
|
generate_signed_tests!(I3072, U3072, i3072);
|
|
generate_signed_tests!(I3136, U3136, i3136);
|
|
generate_signed_tests!(I3200, U3200, i3200);
|
|
generate_signed_tests!(I3264, U3264, i3264);
|
|
generate_signed_tests!(I4096, U4096, i4096);
|
|
generate_signed_tests!(I4160, U4160, i4160);
|
|
generate_signed_tests!(I4224, U4224, i4224);
|
|
generate_signed_tests!(I4288, U4288, i4288);
|
|
generate_signed_tests!(I6272, U6272, i6272);
|
|
generate_signed_tests!(I6336, U6336, i6336);
|
|
generate_signed_tests!(I7680, U7680, i7680);
|
|
generate_signed_tests!(I7744, U7744, i7744);
|
|
generate_signed_tests!(I7808, U7808, i7808);
|
|
generate_signed_tests!(I8192, U8192, i8192);
|
|
generate_signed_tests!(I8256, U8256, i8256);
|
|
generate_signed_tests!(I8320, U8320, i8320);
|
|
generate_signed_tests!(I8384, U8384, i8384);
|
|
generate_signed_tests!(I15360, U15360, i15360);
|
|
generate_signed_tests!(I15424, U15424, i15424);
|
|
generate_signed_tests!(I15488, U15488, i15488);
|
|
generate_signed_tests!(I15552, U15552, i15552);
|
|
generate_signed_tests!(I16512, U16512, i16512);
|
|
generate_signed_tests!(I16576, U16576, i16576);
|
|
generate_signed_tests!(I30848, U30848, i30848);
|
|
generate_signed_tests!(I30912, U30912, i30912);
|
|
}
|
|
mod sigconversion {
|
|
generate_sigconversion_tests!(I192, U192, i192);
|
|
generate_sigconversion_tests!(I256, U256, i256);
|
|
generate_sigconversion_tests!(I320, U320, i320);
|
|
generate_sigconversion_tests!(I384, U384, i384);
|
|
generate_sigconversion_tests!(I448, U448, i448);
|
|
generate_sigconversion_tests!(I512, U512, i512);
|
|
generate_sigconversion_tests!(I576, U576, i576);
|
|
generate_sigconversion_tests!(I640, U640, i640);
|
|
generate_sigconversion_tests!(I704, U704, i704);
|
|
generate_sigconversion_tests!(I768, U768, i768);
|
|
generate_sigconversion_tests!(I832, U832, i832);
|
|
generate_sigconversion_tests!(I896, U896, i896);
|
|
generate_sigconversion_tests!(I960, U960, i960);
|
|
generate_sigconversion_tests!(I1024, U1024, i1024);
|
|
generate_sigconversion_tests!(I1088, U1088, i1088);
|
|
generate_sigconversion_tests!(I1152, U1152, i1152);
|
|
generate_sigconversion_tests!(I1216, U1216, i1216);
|
|
generate_sigconversion_tests!(I1280, U1280, i1280);
|
|
generate_sigconversion_tests!(I1344, U1344, i1344);
|
|
generate_sigconversion_tests!(I1536, U1536, i1536);
|
|
generate_sigconversion_tests!(I1600, U1600, i1600);
|
|
generate_sigconversion_tests!(I1664, U1664, i1664);
|
|
generate_sigconversion_tests!(I1792, U1792, i1792);
|
|
generate_sigconversion_tests!(I1856, U1856, i1856);
|
|
generate_sigconversion_tests!(I2048, U2048, i2048);
|
|
generate_sigconversion_tests!(I2112, U2112, i2112);
|
|
generate_sigconversion_tests!(I2176, U2176, i2176);
|
|
generate_sigconversion_tests!(I2240, U2240, i2240);
|
|
generate_sigconversion_tests!(I2304, U2304, i2304);
|
|
generate_sigconversion_tests!(I2432, U2432, i2432);
|
|
generate_sigconversion_tests!(I2560, U2560, i2560);
|
|
generate_sigconversion_tests!(I2624, U2624, i2624);
|
|
generate_sigconversion_tests!(I3072, U3072, i3072);
|
|
generate_sigconversion_tests!(I3136, U3136, i3136);
|
|
generate_sigconversion_tests!(I3200, U3200, i3200);
|
|
generate_sigconversion_tests!(I3264, U3264, i3264);
|
|
generate_sigconversion_tests!(I4096, U4096, i4096);
|
|
generate_sigconversion_tests!(I4160, U4160, i4160);
|
|
generate_sigconversion_tests!(I4224, U4224, i4224);
|
|
generate_sigconversion_tests!(I4288, U4288, i4288);
|
|
generate_sigconversion_tests!(I6272, U6272, i6272);
|
|
generate_sigconversion_tests!(I6336, U6336, i6336);
|
|
generate_sigconversion_tests!(I7680, U7680, i7680);
|
|
generate_sigconversion_tests!(I7744, U7744, i7744);
|
|
generate_sigconversion_tests!(I7808, U7808, i7808);
|
|
generate_sigconversion_tests!(I8192, U8192, i8192);
|
|
generate_sigconversion_tests!(I8256, U8256, i8256);
|
|
generate_sigconversion_tests!(I8320, U8320, i8320);
|
|
generate_sigconversion_tests!(I8384, U8384, i8384);
|
|
generate_sigconversion_tests!(I15360, U15360, i15360);
|
|
generate_sigconversion_tests!(I15424, U15424, i15424);
|
|
generate_sigconversion_tests!(I15488, U15488, i15488);
|
|
generate_sigconversion_tests!(I15552, U15552, i15552);
|
|
generate_sigconversion_tests!(I16512, U16512, i16512);
|
|
generate_sigconversion_tests!(I16576, U16576, i16576);
|
|
generate_sigconversion_tests!(I30848, U30848, i30848);
|
|
generate_sigconversion_tests!(I30912, U30912, i30912);
|
|
}
|
|
mod sigcmp {
|
|
use super::super::*;
|
|
use testing::{build_test_path,run_test};
|
|
|
|
generate_sigcmp_tests!(I256, U256, i256);
|
|
generate_sigcmp_tests!(I320, U320, i320);
|
|
generate_sigcmp_tests!(I448, U448, i448);
|
|
generate_sigcmp_tests!(I512, U512, i512);
|
|
generate_sigcmp_tests!(I576, U576, i576);
|
|
generate_sigcmp_tests!(I640, U640, i640);
|
|
generate_sigcmp_tests!(I896, U896, i896);
|
|
generate_sigcmp_tests!(I1088, U1088, i1088);
|
|
generate_sigcmp_tests!(I1280, U1280, i1280);
|
|
generate_sigcmp_tests!(I1600, U1600, i1600);
|
|
generate_sigcmp_tests!(I2112, U2112, i2112);
|
|
generate_sigcmp_tests!(I3136, U3136, i3136);
|
|
generate_sigcmp_tests!(I4160, U4160, i4160);
|
|
generate_sigcmp_tests!(I7744, U7744, i7744);
|
|
generate_sigcmp_tests!(I8256, U8256, i8256);
|
|
generate_sigcmp_tests!(I15424, U15424, i15424);
|
|
}
|
|
mod sigmul {
|
|
use super::super::*;
|
|
use testing::{build_test_path,run_test};
|
|
|
|
generate_sigmul_tests!(I192, U192, i192, I384, U384);
|
|
generate_sigmul_tests!(I256, U256, i256, I512, U512);
|
|
generate_sigmul_tests!(I320, U320, i320, I640, U640);
|
|
generate_sigmul_tests!(I384, U384, i384, I768, U768);
|
|
generate_sigmul_tests!(I448, U448, i448, I896, U896);
|
|
generate_sigmul_tests!(I512, U512, i512, I1024, U1024);
|
|
generate_sigmul_tests!(I576, U576, i576, I1152, U1152);
|
|
generate_sigmul_tests!(I640, U640, i640, I1280, U1280);
|
|
generate_sigmul_tests!(I768, U768, i768, I1536, U1536);
|
|
generate_sigmul_tests!(I832, U832, i832, I1664, U1664);
|
|
generate_sigmul_tests!(I896, U896, i896, I1792, U1792);
|
|
generate_sigmul_tests!(I1088, U1088, i1088, I2176, U2176);
|
|
generate_sigmul_tests!(I1152, U1152, i1152, I2304, U2304);
|
|
generate_sigmul_tests!(I1216, U1216, i1216, I2432, U2432);
|
|
generate_sigmul_tests!(I1280, U1280, i1280, I2560, U2560);
|
|
generate_sigmul_tests!(I1600, U1600, i1600, I3200, U3200);
|
|
generate_sigmul_tests!(I2112, U2112, i2112, I4224, U4224);
|
|
generate_sigmul_tests!(I3136, U3136, i3136, I6272, U6272);
|
|
generate_sigmul_tests!(I4160, U4160, i4160, I8320, U8320);
|
|
generate_sigmul_tests!(I7744, U7744, i7744, I15488, U15488);
|
|
generate_sigmul_tests!(I8256, U8256, i8256, I16512, U16512);
|
|
generate_sigmul_tests!(ignore I15424, U15424, i15424, I30848, U30848);
|
|
}
|
|
mod sigdiv {
|
|
use super::super::*;
|
|
use testing::{build_test_path,run_test};
|
|
|
|
generate_sigdiv_tests!(I192, U192, i192);
|
|
generate_sigdiv_tests!(I256, U256, i256);
|
|
generate_sigdiv_tests!(I320, U320, i320);
|
|
generate_sigdiv_tests!(I384, U384, i384);
|
|
generate_sigdiv_tests!(I448, U448, i448);
|
|
generate_sigdiv_tests!(I512, U512, i512);
|
|
generate_sigdiv_tests!(I576, U576, i576);
|
|
generate_sigdiv_tests!(I640, U640, i640);
|
|
generate_sigdiv_tests!(I768, U768, i768);
|
|
generate_sigdiv_tests!(I832, U832, i832);
|
|
generate_sigdiv_tests!(I896, U896, i896);
|
|
generate_sigdiv_tests!(I1088, U1088, i1088);
|
|
generate_sigdiv_tests!(I1152, U1152, i1152);
|
|
generate_sigdiv_tests!(I1216, U1216, i1216);
|
|
generate_sigdiv_tests!(I1280, U1280, i1280);
|
|
generate_sigdiv_tests!(I1600, U1600, i1600);
|
|
generate_sigdiv_tests!(I1664, U1664, i1664);
|
|
generate_sigdiv_tests!(ignore I2112, U2112, i2112);
|
|
generate_sigdiv_tests!(ignore I2432, U2432, i2432);
|
|
generate_sigdiv_tests!(ignore I3136, U3136, i3136);
|
|
generate_sigdiv_tests!(ignore I4160, U4160, i4160);
|
|
generate_sigdiv_tests!(ignore I7744, U7744, i7744);
|
|
generate_sigdiv_tests!(ignore I8256, U8256, i8256);
|
|
generate_sigdiv_tests!(ignore I15424, U15424, i15424);
|
|
}
|
|
mod sigshiftl {
|
|
use super::super::*;
|
|
use testing::{build_test_path,run_test};
|
|
|
|
generate_sigshiftl_tests!(I256, U256, i256);
|
|
generate_sigshiftl_tests!(I320, U320, i320);
|
|
generate_sigshiftl_tests!(I384, U384, i384);
|
|
generate_sigshiftl_tests!(I448, U448, i448);
|
|
generate_sigshiftl_tests!(I512, U512, i512);
|
|
generate_sigshiftl_tests!(I576, U576, i576);
|
|
generate_sigshiftl_tests!(I640, U640, i640);
|
|
generate_sigshiftl_tests!(I768, U768, i768);
|
|
generate_sigshiftl_tests!(I832, U832, i832);
|
|
generate_sigshiftl_tests!(I896, U896, i896);
|
|
generate_sigshiftl_tests!(I1088, U1088, i1088);
|
|
generate_sigshiftl_tests!(I1152, U1152, i1152);
|
|
generate_sigshiftl_tests!(I1216, U1216, i1216);
|
|
generate_sigshiftl_tests!(I1280, U1280, i1280);
|
|
generate_sigshiftl_tests!(I1600, U1600, i1600);
|
|
generate_sigshiftl_tests!(I2112, U2112, i2112);
|
|
generate_sigshiftl_tests!(I3136, U3136, i3136);
|
|
generate_sigshiftl_tests!(I4160, U4160, i4160);
|
|
generate_sigshiftl_tests!(I7744, U7744, i7744);
|
|
generate_sigshiftl_tests!(I8256, U8256, i8256);
|
|
generate_sigshiftl_tests!(I15424, U15424, i15424);
|
|
}
|
|
mod sigshiftr {
|
|
use super::super::*;
|
|
use testing::{build_test_path,run_test};
|
|
|
|
generate_sigshiftr_tests!(I256, U256, i256);
|
|
generate_sigshiftr_tests!(I320, U320, i320);
|
|
generate_sigshiftr_tests!(I384, U384, i384);
|
|
generate_sigshiftr_tests!(I448, U448, i448);
|
|
generate_sigshiftr_tests!(I512, U512, i512);
|
|
generate_sigshiftr_tests!(I576, U576, i576);
|
|
generate_sigshiftr_tests!(I640, U640, i640);
|
|
generate_sigshiftr_tests!(I768, U768, i768);
|
|
generate_sigshiftr_tests!(I832, U832, i832);
|
|
generate_sigshiftr_tests!(I896, U896, i896);
|
|
generate_sigshiftr_tests!(I1088, U1088, i1088);
|
|
generate_sigshiftr_tests!(I1152, U1152, i1152);
|
|
generate_sigshiftr_tests!(I1216, U1216, i1216);
|
|
generate_sigshiftr_tests!(I1280, U1280, i1280);
|
|
generate_sigshiftr_tests!(I1600, U1600, i1600);
|
|
generate_sigshiftr_tests!(I2112, U2112, i2112);
|
|
generate_sigshiftr_tests!(I3136, U3136, i3136);
|
|
generate_sigshiftr_tests!(I4160, U4160, i4160);
|
|
generate_sigshiftr_tests!(I7744, U7744, i7744);
|
|
generate_sigshiftr_tests!(I8256, U8256, i8256);
|
|
generate_sigshiftr_tests!(I15424, U15424, i15424);
|
|
}
|
|
mod sigscale {
|
|
use super::super::*;
|
|
use testing::{build_test_path,run_test};
|
|
|
|
generate_sigscale_tests!(I192, U192, i192, I256, U256);
|
|
generate_sigscale_tests!(I256, U256, i256, I320, U320);
|
|
generate_sigscale_tests!(I320, U320, i320, I384, U384);
|
|
generate_sigscale_tests!(I384, U384, i384, I448, U448);
|
|
generate_sigscale_tests!(I448, U448, i448, I512, U512);
|
|
generate_sigscale_tests!(I512, U512, i512, I576, U576);
|
|
generate_sigscale_tests!(I576, U576, i576, I640, U640);
|
|
generate_sigscale_tests!(I640, U640, i640, I704, U704);
|
|
generate_sigscale_tests!(I768, U768, i768, I832, U832);
|
|
generate_sigscale_tests!(I832, U832, i832, I896, U896);
|
|
generate_sigscale_tests!(I896, U896, i896, I960, U960);
|
|
generate_sigscale_tests!(I1088, U1088, i1088, I1152, U1152);
|
|
generate_sigscale_tests!(I1152, U1152, i1152, I1216, U1216);
|
|
generate_sigscale_tests!(I1216, U1216, i1216, I1280, U1280);
|
|
generate_sigscale_tests!(I1280, U1280, i1280, I1344, U1344);
|
|
generate_sigscale_tests!(I1600, U1600, i1600, I1664, U1664);
|
|
generate_sigscale_tests!(I2112, U2112, i2112, I2176, U2176);
|
|
generate_sigscale_tests!(I3136, U3136, i3136, I3200, U3200);
|
|
generate_sigscale_tests!(I4160, U4160, i4160, I4224, U4224);
|
|
generate_sigscale_tests!(I7744, U7744, i7744, I7808, U7808);
|
|
generate_sigscale_tests!(I8256, U8256, i8256, I8320, U8320);
|
|
generate_sigscale_tests!(I15424, U15424, i15424, I15488, U15488);
|
|
}
|
|
mod egcd {
|
|
use super::super::*;
|
|
use testing::{build_test_path,run_test};
|
|
|
|
generate_egcd_tests!(I192, U192, i192, I256, U256);
|
|
generate_egcd_tests!(I256, U256, i256, I320, U320);
|
|
generate_egcd_tests!(I384, U384, i384, I448, U448);
|
|
generate_egcd_tests!(I448, U448, i448, I512, U512);
|
|
generate_egcd_tests!(I512, U512, i512, I576, U576);
|
|
generate_egcd_tests!(I576, U576, i576, I640, U640);
|
|
generate_egcd_tests!(I832, U832, i832, I896, U896);
|
|
generate_egcd_tests!(ignore I1024, U1024, i1024, I1088, U1088);
|
|
generate_egcd_tests!(ignore I1216, U1216, i1216, I1280, U1280);
|
|
generate_egcd_tests!(ignore I1536, U1536, i1536, I1600, U1600);
|
|
generate_egcd_tests!(ignore I2048, U2048, i2048, I2112, U2112);
|
|
generate_egcd_tests!(ignore I3072, U3072, i3072, I3136, U3136);
|
|
generate_egcd_tests!(ignore I4096, U4096, i4096, I4160, U4160);
|
|
generate_egcd_tests!(ignore I7680, U7680, i7680, I7744, U7744);
|
|
generate_egcd_tests!(ignore I8192, U8192, i8192, I8256, U8256);
|
|
generate_egcd_tests!(ignore I15360, U15360, i15360, I15424, U15424);
|
|
}
|
|
mod moddiv {
|
|
use super::super::*;
|
|
use testing::{build_test_path,run_test};
|
|
|
|
generate_moddiv_tests!(I192, U192, i192);
|
|
generate_moddiv_tests!(I256, U256, i256);
|
|
generate_moddiv_tests!(I384, U384, i384);
|
|
generate_moddiv_tests!(I448, U448, i448);
|
|
generate_moddiv_tests!(I576, U576, i576);
|
|
generate_moddiv_tests!(I832, U832, i832);
|
|
generate_moddiv_tests!(I1216, U1216, i1216);
|
|
}
|
|
mod modinv {
|
|
use super::super::*;
|
|
use testing::{build_test_path,run_test};
|
|
|
|
generate_modinv_tests!(I192, U192, i192);
|
|
generate_modinv_tests!(I256, U256, i256);
|
|
generate_modinv_tests!(I384, U384, i384);
|
|
generate_modinv_tests!(I448, U448, i448);
|
|
generate_modinv_tests!(I512, U512, i512);
|
|
generate_modinv_tests!(I576, U576, i576);
|
|
generate_modinv_tests!(I832, U832, i832);
|
|
generate_modinv_tests!(I1024, U1024, i1024);
|
|
generate_modinv_tests!(I1216, U1216, i1216);
|
|
generate_modinv_tests!(ignore I2048, U2048, i2048);
|
|
generate_modinv_tests!(ignore I3072, U3072, i3072);
|
|
generate_modinv_tests!(ignore I4096, U4096, i4096);
|
|
generate_modinv_tests!(ignore I8192, U8192, i8192);
|
|
generate_modinv_tests!(ignore I15360, U15360, i15360);
|
|
}
|
|
mod smodinv {
|
|
use super::super::*;
|
|
use testing::{build_test_path,run_test};
|
|
|
|
generate_smodinv_tests!(I192, U192, i192);
|
|
generate_smodinv_tests!(I256, U256, i256);
|
|
generate_smodinv_tests!(I384, U384, i384);
|
|
generate_smodinv_tests!(I448, U448, i448);
|
|
generate_smodinv_tests!(I576, U576, i576);
|
|
generate_smodinv_tests!(I832, U832, i832);
|
|
generate_smodinv_tests!(I1216, U1216, i1216);
|
|
}
|
|
}
|