#include <assert.h> #define TEST_COMP(N) \ void test_##N(float fj, float fk) \ { \ int rd = 0; \ \ asm volatile("fcmp."#N".s $fcc6,%1,%2\n" \ "movcf2gr %0, $fcc6\n" \ : "=r"(rd) \ : "f"(fj), "f"(fk) \ : ); \ assert(rd == 1); \ } TEST_COMP(ceq) TEST_COMP(clt) TEST_COMP(cle) TEST_COMP(cne) TEST_COMP(seq) TEST_COMP(slt) TEST_COMP(sle) TEST_COMP(sne) int main() { test_ceq(0xff700102, 0xff700102); test_clt(0x00730007, 0xff730007); test_cle(0xff70130a, 0xff70130b); test_cne(0x1238acde, 0xff71111f); test_seq(0xff766618, 0xff766619); test_slt(0xff78881c, 0xff78901d); test_sle(0xff780b22, 0xff790b22); test_sne(0xff7bcd25, 0xff7a26cf); return 0; }