mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-11 09:56:29 +00:00
103 lines
2.0 KiB
C
103 lines
2.0 KiB
C
#include <stdio.h>
|
|
|
|
/* Test various BFP ops:
|
|
- square root
|
|
- load negative
|
|
- load positive
|
|
- load complement
|
|
*/
|
|
|
|
void sqebr(float in)
|
|
{
|
|
float out;
|
|
|
|
__asm__ volatile("sqebr %[out],%[in]" : [out]"=f"(out) : [in]"f"(in));
|
|
printf("sqebr %f -> %f\n", in, out);
|
|
}
|
|
|
|
void sqdbr(double in)
|
|
{
|
|
double out;
|
|
|
|
__asm__ volatile("sqdbr %[out],%[in]" : [out]"=f"(out) : [in]"f"(in));
|
|
printf("sqdbr %f -> %f\n", in, out);
|
|
}
|
|
|
|
void lnebr(float in)
|
|
{
|
|
float out;
|
|
|
|
__asm__ volatile("lnebr %[out],%[in]" : [out]"=f"(out) : [in]"f"(in));
|
|
printf("lnebr %f -> %f\n", in, out);
|
|
}
|
|
|
|
void lndbr(double in)
|
|
{
|
|
double out;
|
|
|
|
__asm__ volatile("lndbr %[out],%[in]" : [out]"=f"(out) : [in]"f"(in));
|
|
printf("lndbr %f -> %f\n", in, out);
|
|
}
|
|
|
|
void lpebr(float in)
|
|
{
|
|
float out;
|
|
|
|
__asm__ volatile("lpebr %[out],%[in]" : [out]"=f"(out) : [in]"f"(in));
|
|
printf("lpebr %f -> %f\n", in, out);
|
|
}
|
|
|
|
void lpdbr(double in)
|
|
{
|
|
double out;
|
|
|
|
__asm__ volatile("lpdbr %[out],%[in]" : [out]"=f"(out) : [in]"f"(in));
|
|
printf("lpdbr %f -> %f\n", in, out);
|
|
}
|
|
|
|
void lcebr(float in)
|
|
{
|
|
float out;
|
|
|
|
__asm__ volatile("lcebr %[out],%[in]" : [out]"=f"(out) : [in]"f"(in));
|
|
printf("lcebr %f -> %f\n", in, out);
|
|
}
|
|
|
|
void lcdbr(double in)
|
|
{
|
|
double out;
|
|
|
|
__asm__ volatile("lcdbr %[out],%[in]" : [out]"=f"(out) : [in]"f"(in));
|
|
printf("lcdbr %f -> %f\n", in, out);
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
// square root
|
|
sqebr(121.0f); // 4 byte values
|
|
sqdbr(144.0); // 8 bytes values
|
|
|
|
// load negative
|
|
lnebr(-2.5f); // 4 byte values
|
|
lnebr(12.5f); // 4 byte values
|
|
|
|
lndbr(-0.5); // 8 byte values
|
|
lndbr(42.5); // 8 byte values
|
|
|
|
// load positive
|
|
lpebr(-2.5f); // 4 byte values
|
|
lpebr(12.5f); // 4 byte values
|
|
|
|
lpdbr(-0.5); // 8 byte values
|
|
lpdbr(42.5); // 8 byte values
|
|
|
|
// load complement
|
|
lcebr(-23.5f); // 4 byte values
|
|
lcebr(123.5f); // 4 byte values
|
|
|
|
lcdbr(-17.5); // 8 byte values
|
|
lcdbr(234.5); // 8 byte values
|
|
|
|
return 0;
|
|
}
|