xref: /openbmc/qemu/tests/tcg/s390x/div.c (revision 29b8de00)
1 #include <assert.h>
2 #include <stdint.h>
3 
4 static void test_dr(void)
5 {
6     register int32_t r0 asm("r0") = -1;
7     register int32_t r1 asm("r1") = -4241;
8     int32_t b = 101, q, r;
9 
10     asm("dr %[r0],%[b]"
11         : [r0] "+r" (r0), [r1] "+r" (r1)
12         : [b] "r" (b)
13         : "cc");
14     q = r1;
15     r = r0;
16     assert(q == -41);
17     assert(r == -100);
18 }
19 
20 static void test_dlr(void)
21 {
22     register uint32_t r0 asm("r0") = 0;
23     register uint32_t r1 asm("r1") = 4243;
24     uint32_t b = 101, q, r;
25 
26     asm("dlr %[r0],%[b]"
27         : [r0] "+r" (r0), [r1] "+r" (r1)
28         : [b] "r" (b)
29         : "cc");
30     q = r1;
31     r = r0;
32     assert(q == 42);
33     assert(r == 1);
34 }
35 
36 int main(void)
37 {
38     test_dr();
39     test_dlr();
40 }
41