Merge tag 'v9.1.0'
[qemu/ar7.git] / tests / tcg / s390x / chrl.c
blobb1c3a1c56173b747c6347d8e8f9f0e86ad80a4dc
1 #include <stdlib.h>
2 #include <assert.h>
3 #include <stdint.h>
5 static void test_chrl(void)
7 uint32_t program_mask, cc;
9 asm volatile (
10 ".pushsection .rodata\n"
11 "0:\n\t"
12 ".short 1, 0x8000\n\t"
13 ".popsection\n\t"
15 "chrl %[r], 0b\n\t"
16 "ipm %[program_mask]\n"
17 : [program_mask] "=r" (program_mask)
18 : [r] "r" (1)
21 cc = program_mask >> 28;
22 assert(!cc);
24 asm volatile (
25 ".pushsection .rodata\n"
26 "0:\n\t"
27 ".short -1, 0x8000\n\t"
28 ".popsection\n\t"
30 "chrl %[r], 0b\n\t"
31 "ipm %[program_mask]\n"
32 : [program_mask] "=r" (program_mask)
33 : [r] "r" (-1)
36 cc = program_mask >> 28;
37 assert(!cc);
40 static void test_cghrl(void)
42 uint32_t program_mask, cc;
44 asm volatile (
45 ".pushsection .rodata\n"
46 "0:\n\t"
47 ".short 1, 0x8000, 0, 0\n\t"
48 ".popsection\n\t"
50 "cghrl %[r], 0b\n\t"
51 "ipm %[program_mask]\n"
52 : [program_mask] "=r" (program_mask)
53 : [r] "r" (1L)
56 cc = program_mask >> 28;
57 assert(!cc);
59 asm volatile (
60 ".pushsection .rodata\n"
61 "0:\n\t"
62 ".short -1, 0x8000, 0, 0\n\t"
63 ".popsection\n\t"
65 "cghrl %[r], 0b\n\t"
66 "ipm %[program_mask]\n"
67 : [program_mask] "=r" (program_mask)
68 : [r] "r" (-1L)
71 cc = program_mask >> 28;
72 assert(!cc);
75 int main(void)
77 test_chrl();
78 test_cghrl();
79 return EXIT_SUCCESS;