3 /* Test various BFP ops:
14 __asm__
volatile("sqebr %[out],%[in]" : [out
]"=f"(out
) : [in
]"f"(in
));
15 printf("sqebr %f -> %f\n", in
, out
);
22 __asm__
volatile("sqdbr %[out],%[in]" : [out
]"=f"(out
) : [in
]"f"(in
));
23 printf("sqdbr %f -> %f\n", in
, out
);
30 __asm__
volatile("lnebr %[out],%[in]" : [out
]"=f"(out
) : [in
]"f"(in
) : "cc");
31 printf("lnebr %f -> %f\n", in
, out
);
38 __asm__
volatile("lndbr %[out],%[in]" : [out
]"=f"(out
) : [in
]"f"(in
) : "cc");
39 printf("lndbr %f -> %f\n", in
, out
);
46 __asm__
volatile("lpebr %[out],%[in]" : [out
]"=f"(out
) : [in
]"f"(in
) : "cc");
47 printf("lpebr %f -> %f\n", in
, out
);
54 __asm__
volatile("lpdbr %[out],%[in]" : [out
]"=f"(out
) : [in
]"f"(in
) : "cc");
55 printf("lpdbr %f -> %f\n", in
, out
);
62 __asm__
volatile("lcebr %[out],%[in]" : [out
]"=f"(out
) : [in
]"f"(in
) : "cc");
63 printf("lcebr %f -> %f\n", in
, out
);
70 __asm__
volatile("lcdbr %[out],%[in]" : [out
]"=f"(out
) : [in
]"f"(in
) : "cc");
71 printf("lcdbr %f -> %f\n", in
, out
);
74 void lder(double prev
, float in
)
78 __asm__
volatile("lder %[prev],%[in]\n\t"
79 "std %[prev],%[out]" :
80 [out
]"=R"(out
) : [prev
]"f"(prev
), [in
]"f"(in
));
81 printf("lder %f -> %lx\n", in
, out
);
84 void lde(double prev
, float in
)
88 __asm__
volatile("lde %[prev],%[in]\n\t"
89 "std %[prev],%[out]" :
90 [out
]"=R"(out
) : [prev
]"f"(prev
), [in
]"R"(in
));
91 printf("lde %f -> %lx\n", in
, out
);
97 sqebr(121.0f
); // 4 byte values
98 sqdbr(144.0); // 8 bytes values
101 lnebr(-2.5f
); // 4 byte values
102 lnebr(12.5f
); // 4 byte values
104 lndbr(-0.5); // 8 byte values
105 lndbr(42.5); // 8 byte values
108 lpebr(-2.5f
); // 4 byte values
109 lpebr(12.5f
); // 4 byte values
111 lpdbr(-0.5); // 8 byte values
112 lpdbr(42.5); // 8 byte values
115 lcebr(-23.5f
); // 4 byte values
116 lcebr(123.5f
); // 4 byte values
118 lcdbr(-17.5); // 8 byte values
119 lcdbr(234.5); // 8 byte values
123 lder(0.9, -8388607.f
);