1 #include <assert.h>
2 
3 #define TEST_COMP(N)                              \
4 void test_##N(float fj, float fk)                 \
5 {                                                 \
6     int rd = 0;                                   \
7                                                   \
8     asm volatile("fcmp."#N".s $fcc6,%1,%2\n"      \
9                  "movcf2gr %0, $fcc6\n"           \
10                  : "=r"(rd)                       \
11                  : "f"(fj), "f"(fk)               \
12                  : );                             \
13     assert(rd == 1);                              \
14 }
15 
16 TEST_COMP(ceq)
17 TEST_COMP(clt)
18 TEST_COMP(cle)
19 TEST_COMP(cne)
20 TEST_COMP(seq)
21 TEST_COMP(slt)
22 TEST_COMP(sle)
23 TEST_COMP(sne)
24 
25 int main()
26 {
27     test_ceq(0xff700102, 0xff700102);
28     test_clt(0x00730007, 0xff730007);
29     test_cle(0xff70130a, 0xff70130b);
30     test_cne(0x1238acde, 0xff71111f);
31     test_seq(0xff766618, 0xff766619);
32     test_slt(0xff78881c, 0xff78901d);
33     test_sle(0xff780b22, 0xff790b22);
34     test_sne(0xff7bcd25, 0xff7a26cf);
35 
36     return 0;
37 }
38