📄 software_routines.c
字号:
#pragma no_custom_faddd
#pragma no_custom_fsubd
#pragma no_custom_fmuld
#pragma no_custom_fdivd
#pragma no_custom_fadds
#pragma no_custom_fsubs
#pragma no_custom_fmuls
#pragma no_custom_fdivs
#pragma no_custom_ftruncds
#pragma no_custom_fextsd
#pragma no_custom_fixdu
#pragma no_custom_fixdi
#pragma no_custom_floatud
#pragma no_custom_floatid
#pragma no_custom_fcmpned
#pragma no_custom_fcmpeqd
#pragma no_custom_fcmpged
#pragma no_custom_fcmpgtd
#pragma no_custom_fcmpled
#pragma no_custom_fcmpltd
#include "alt_types.h"
int non_arith_placebo(int a)
{
return(a);
}
int dpfp_sw_compare(double a, double b)
{
return((a > b) ? (1) : (0));
}
float dpfp_sw_double_to_float(double a)
{
return((float)(a));
}
double dpfp_sw_float_to_double(float a)
{
return((double)(a));
}
double dpfp_sw_int_to_double(int a)
{
return((double)(a));
}
int dpfp_sw_double_to_int(double a)
{
return((int)(a));
}
double dpfp_sw_uint_to_double(unsigned int a)
{
return((double)(a));
}
unsigned int dpfp_sw_double_to_uint(double a)
{
return((unsigned int)(a));
}
void dpfp_sw_addition(double *a, double *b, double *result)
{
*result = *a + *b;
}
void dpfp_sw_subtraction(double *a, double *b, double *result)
{
*result = *a - *b;
}
void dpfp_sw_multiplication(double *a, double *b, double *result)
{
*result = *a * *b;
}
void dpfp_sw_division(double *a, double *b, double *result)
{
*result = *a / *b;
}
void dp_placebo(double *a, double *b, double *result)
{
alt_u32 temp_a_lo;
alt_u32 temp_a_hi;
alt_u32 temp_b_lo;
alt_u32 temp_b_hi;
// load the a operand
temp_a_lo = *(alt_u32*)(a);
temp_a_hi = *((alt_u32*)(a) + 1);
// load the b operand
temp_b_lo = *(alt_u32*)(b);
temp_b_hi = *((alt_u32*)(b) + 1);
// store the result
*(alt_u32*)(result) = temp_a_lo + temp_b_lo;
*((alt_u32*)(result)+1) = temp_a_hi + temp_b_hi;
}
void spfp_sw_addition(float *a, float *b, float *result)
{
*result = *a + *b;
}
void spfp_sw_subtraction(float *a, float *b, float *result)
{
*result = *a - *b;
}
void spfp_sw_multiplication(float *a, float *b, float *result)
{
*result = *a * *b;
}
void spfp_sw_division(float *a, float *b, float *result)
{
*result = *a / *b;
}
void sp_placebo(float *a, float *b, float *result)
{
alt_u32 temp_a;
alt_u32 temp_b;
// load the a operand
temp_a = *(alt_u32*)(a);
// load the b operand
temp_b = *(alt_u32*)(b);
// store the result
*(alt_u32*)(result) = temp_a + temp_b;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -