⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 software_routines.c

📁 nios中自定义指令集实现三角函数的软件部分。
💻 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 + -