1 /* Executable testcase for 'output flags.' */
3 /* { dg-skip-if "" { arm_thumb1 } } */
5 int test_bits (long nzcv
)
9 __asm__ ("msr APSR_nzcvq, %[in]"
10 : "=@ccmi"(n
), "=@cceq"(z
), "=@cccs"(c
), "=@ccvs"(v
)
11 : [in
] "r"(nzcv
<< 28));
13 return n
* 8 + z
* 4 + c
* 2 + v
== nzcv
;
16 int test_cmps (long x
, long y
)
20 __asm__ ("cmp %[x], %[y]"
21 : "=@ccgt"(gt
), "=@cclt"(lt
), "=@ccge"(ge
), "=@ccle"(le
)
22 : [x
] "r"(x
), [y
] "r"(y
));
30 int test_cmpu (unsigned long x
, unsigned long y
)
34 __asm__ ("cmp %[x], %[y]"
35 : "=@cchi"(gt
), "=@cclo"(lt
), "=@cchs"(ge
), "=@ccls"(le
)
36 : [x
] "r"(x
), [y
] "r"(y
));
48 for (i
= 0; i
< 16; ++i
)
52 for (i
= -1; i
<= 1; ++i
)
53 for (j
= -1; j
<= 1; ++j
)
54 if (!test_cmps (i
, j
))
57 for (i
= 0; i
<= 2; ++i
)
58 for (j
= 0; j
<= 2; ++j
)
59 if (!test_cmpu (i
, j
))