📄 main.c
字号:
float_result_array = (float*)calc_result_array; TEST_ENTRY for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++) { sp_placebo(float_a_array++, float_b_array++, float_result_array++); } TEST_EXIT(sp_placebo) printf("\n Single Precision Addition Test...\n\n"); float_a_array = (float*)my_single_test_array; float_b_array = (float*)negated_single_array; float_result_array = (float*)calc_result_array; TEST_ENTRY for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++) { spfp_sw_addition(float_a_array++, float_b_array++, float_result_array++); } TEST_EXIT(sp_sw_add) float_a_array = (float*)my_single_test_array; float_b_array = (float*)negated_single_array; float_result_array = (float*)cusp_result_array; TEST_ENTRY for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++) { spfp_hw_addition(float_a_array++, float_b_array++, float_result_array++); } TEST_EXIT(sp_hw_add) printf("\n Single Precision Subtraction Test...\n\n"); float_a_array = (float*)my_single_test_array; float_b_array = (float*)negated_single_array; float_result_array = (float*)calc_result_array; TEST_ENTRY for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++) { spfp_sw_subtraction(float_a_array++, float_b_array++, float_result_array++); } TEST_EXIT(sp_sw_sub) float_a_array = (float*)my_single_test_array; float_b_array = (float*)negated_single_array; float_result_array = (float*)cusp_result_array; TEST_ENTRY for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++) { spfp_hw_subtraction(float_a_array++, float_b_array++, float_result_array++); } TEST_EXIT(sp_hw_sub) printf("\n Single Precision Multiplication Test...\n\n"); float_a_array = (float*)my_single_test_array; float_b_array = (float*)negated_single_array; float_result_array = (float*)calc_result_array; TEST_ENTRY for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++) { spfp_sw_multiplication(float_a_array++, float_b_array++, float_result_array++); } TEST_EXIT(sp_sw_mul) float_a_array = (float*)my_single_test_array; float_b_array = (float*)negated_single_array; float_result_array = (float*)cusp_result_array; TEST_ENTRY for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++) { spfp_hw_multiplication(float_a_array++, float_b_array++, float_result_array++); } TEST_EXIT(sp_hw_mul) printf("\n Single Precision Division Test...\n\n"); float_a_array = (float*)my_single_test_array; float_b_array = (float*)negated_single_array; float_result_array = (float*)calc_result_array; TEST_ENTRY for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++) { spfp_sw_division(float_a_array++, float_b_array++, float_result_array++); } TEST_EXIT(sp_sw_div) float_a_array = (float*)my_single_test_array; float_b_array = (float*)negated_single_array; float_result_array = (float*)cusp_result_array; TEST_ENTRY for( j = 0 ; j < SINGLE_TEST_ARRAY_SIZE_IN_FLOATS ; j++) { spfp_hw_division(float_a_array++, float_b_array++, float_result_array++); } TEST_EXIT(sp_hw_div) printf("\n Double Precision Compare Test...\n\n"); TEST_ENTRY for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++) { dpfp_sw_compare(M_E, M_PI); } TEST_EXIT(dp_sw_compare) TEST_ENTRY for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++) { dpfp_hw_compare(M_E, M_PI); } TEST_EXIT(dp_hw_compare) printf("\n Double to Float Test...\n\n"); double myDouble = 100 * M_PI; float myFloat; TEST_ENTRY for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++) { myFloat = dpfp_sw_double_to_float(myDouble); } TEST_EXIT(dpfp_sw_double_to_float) TEST_ENTRY for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++) { myFloat = dpfp_hw_double_to_float(myDouble); } TEST_EXIT(dpfp_hw_double_to_float) printf("\n Float to Double Test...\n\n"); TEST_ENTRY for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++) { myDouble = dpfp_sw_float_to_double(myFloat); } TEST_EXIT(dpfp_sw_float_to_double) TEST_ENTRY for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++) { myDouble = dpfp_hw_float_to_double(myFloat); } TEST_EXIT(dpfp_hw_float_to_double) printf("\n int to Double Test...\n\n"); int myInt = 0xE943987A; int myUint = 0xE943987A; TEST_ENTRY for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++) { myDouble = dpfp_sw_int_to_double(myInt); } TEST_EXIT(dpfp_sw_int_to_double) TEST_ENTRY for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++) { myDouble = dpfp_hw_int_to_double(myInt); } TEST_EXIT(dpfp_hw_int_to_double) printf("\n Double to int Test...\n\n"); TEST_ENTRY for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++) { myInt = dpfp_sw_double_to_int(myDouble); } TEST_EXIT(dpfp_sw_double_to_int) TEST_ENTRY for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++) { myInt = dpfp_hw_double_to_int(myDouble); } TEST_EXIT(dpfp_hw_double_to_int) printf("\n uint to Double Test...\n\n"); TEST_ENTRY for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++) { myDouble = dpfp_sw_uint_to_double(myUint); } TEST_EXIT(dpfp_sw_uint_to_double) TEST_ENTRY for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++) { myDouble = dpfp_hw_uint_to_double(myUint); } TEST_EXIT(dpfp_hw_uint_to_double) printf("\n Double to uint Test...\n\n"); TEST_ENTRY for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++) { myUint = dpfp_sw_double_to_uint(myDouble); } TEST_EXIT(dpfp_sw_double_to_uint) TEST_ENTRY for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++) { myUint = dpfp_hw_double_to_uint(myDouble); } TEST_EXIT(dpfp_hw_double_to_uint) printf("\n Non Arithmetic Placebo Test...\n\n"); TEST_ENTRY for( j = 0 ; j < DOUBLE_TEST_ARRAY_SIZE_IN_DOUBLES ; j++) { myInt = non_arith_placebo(j); } TEST_EXIT(non_arith_placebo) printf("Finished...\n"); printf("\n\dp_placebo_time = %lu\n\dp_sw_add_time = %lu -- %lu\n\dp_hw_add_time = %lu -- %lu -- %.3f\n\dp_sw_sub_time = %lu -- %lu\n\dp_hw_sub_time = %lu -- %lu -- %.3f\n\dp_sw_mul_time = %lu -- %lu\n\dp_hw_mul_time = %lu -- %lu -- %.3f\n\dp_sw_div_time = %lu -- %lu\n\dp_hw_div_time = %lu -- %lu -- %.3f\n\\n\sp_placebo_time = %lu\n\sp_sw_add_time = %lu -- %lu\n\sp_hw_add_time = %lu -- %lu -- %.3f\n\sp_sw_sub_time = %lu -- %lu\n\sp_hw_sub_time = %lu -- %lu -- %.3f\n\sp_sw_mul_time = %lu -- %lu\n\sp_hw_mul_time = %lu -- %lu -- %.3f\n\sp_sw_div_time = %lu -- %lu\n\sp_hw_div_time = %lu -- %lu -- %.3f\n\", dp_placebo_time, dp_sw_add_time, dp_sw_add_time - dp_placebo_time, dp_hw_add_time, dp_hw_add_time - dp_placebo_time, (float)(dp_sw_add_time - dp_placebo_time)/(float)(dp_hw_add_time - dp_placebo_time), dp_sw_sub_time, dp_sw_sub_time - dp_placebo_time, dp_hw_sub_time, dp_hw_sub_time - dp_placebo_time, (float)(dp_sw_sub_time - dp_placebo_time)/(float)(dp_hw_sub_time - dp_placebo_time), dp_sw_mul_time, dp_sw_mul_time - dp_placebo_time, dp_hw_mul_time, dp_hw_mul_time - dp_placebo_time, (float)(dp_sw_mul_time - dp_placebo_time)/(float)(dp_hw_mul_time - dp_placebo_time), dp_sw_div_time, dp_sw_div_time - dp_placebo_time, dp_hw_div_time, dp_hw_div_time - dp_placebo_time, (float)(dp_sw_div_time - dp_placebo_time)/(float)(dp_hw_div_time - dp_placebo_time), sp_placebo_time, sp_sw_add_time, sp_sw_add_time - sp_placebo_time, sp_hw_add_time, sp_hw_add_time - sp_placebo_time, (float)(sp_sw_add_time - sp_placebo_time)/(float)(sp_hw_add_time - sp_placebo_time), sp_sw_sub_time, sp_sw_sub_time - sp_placebo_time, sp_hw_sub_time, sp_hw_sub_time - sp_placebo_time, (float)(sp_sw_sub_time - sp_placebo_time)/(float)(sp_hw_sub_time - sp_placebo_time), sp_sw_mul_time, sp_sw_mul_time - sp_placebo_time, sp_hw_mul_time, sp_hw_mul_time - sp_placebo_time, (float)(sp_sw_mul_time - sp_placebo_time)/(float)(sp_hw_mul_time - sp_placebo_time), sp_sw_div_time, sp_sw_div_time - sp_placebo_time, sp_hw_div_time, sp_hw_div_time - sp_placebo_time, (float)(sp_sw_div_time - sp_placebo_time)/(float)(sp_hw_div_time - sp_placebo_time) ); printf("\nnon_arith_placebo_time = %lu\n", non_arith_placebo_time ); printf("dp_sw_compare_time = %lu\ndp_hw_compare_time = %lu -- %.3f\n", dp_sw_compare_time, dp_hw_compare_time, (float)(dp_sw_compare_time - non_arith_placebo_time)/(float)(dp_hw_compare_time - non_arith_placebo_time) ); printf("dpfp_sw_float_to_double_time = %lu\ndpfp_hw_float_to_double_time = %lu -- %.3f\n", dpfp_sw_float_to_double_time, dpfp_hw_float_to_double_time, (float)(dpfp_sw_float_to_double_time - non_arith_placebo_time)/(float)(dpfp_hw_float_to_double_time - non_arith_placebo_time) ); printf("dpfp_sw_double_to_float_time = %lu\ndpfp_hw_double_to_float_time = %lu -- %.3f\n", dpfp_sw_double_to_float_time, dpfp_hw_double_to_float_time, (float)(dpfp_sw_double_to_float_time - non_arith_placebo_time)/(float)(dpfp_hw_double_to_float_time - non_arith_placebo_time) ); printf("dpfp_sw_int_to_double_time = %lu\ndpfp_hw_int_to_double_time = %lu -- %.3f\n", dpfp_sw_int_to_double_time, dpfp_hw_int_to_double_time, (float)(dpfp_sw_int_to_double_time - non_arith_placebo_time)/(float)(dpfp_hw_int_to_double_time - non_arith_placebo_time) ); printf("dpfp_sw_uint_to_double_time = %lu\ndpfp_hw_uint_to_double_time = %lu -- %.3f\n", dpfp_sw_uint_to_double_time, dpfp_hw_uint_to_double_time, (float)(dpfp_sw_uint_to_double_time - non_arith_placebo_time)/(float)(dpfp_hw_uint_to_double_time - non_arith_placebo_time) ); printf("dpfp_sw_double_to_uint_time = %lu\ndpfp_hw_double_to_uint_time = %lu -- %.3f\n", dpfp_sw_double_to_uint_time, dpfp_hw_double_to_uint_time, (float)(dpfp_sw_double_to_uint_time - non_arith_placebo_time)/(float)(dpfp_hw_double_to_uint_time - non_arith_placebo_time) ); printf("dpfp_sw_double_to_int_time = %lu\ndpfp_hw_double_to_int_time = %lu -- %.3f\n", dpfp_sw_double_to_int_time, dpfp_hw_double_to_int_time, (float)(dpfp_sw_double_to_int_time - non_arith_placebo_time)/(float)(dpfp_hw_double_to_int_time - non_arith_placebo_time) ); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -