]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/valgrind/src/valgrind-3.6.0-svn/none/tests/s390x/xc.c
update
[l4.git] / l4 / pkg / valgrind / src / valgrind-3.6.0-svn / none / tests / s390x / xc.c
1 /* tests, xc,oc and nc */
2 #include <stdio.h>
3 #include "test.h"
4
5 void test_oc(void)
6 {
7         char buf1[20] = "UUUUU*UUU****U*\0\0\0\0\n";
8         char buf2[20] = "*U\0*\0\0UU*\0U*AUAA*UU\n";
9         char zero[2] = "\0\0";
10
11         printf("\nOC:\n");
12         asm volatile ("oc %O0(1,%R0),%0\n"::"Q" (*zero),
13                       "Q"(*zero):"memory");
14         printf("CC:%d\n", get_cc());
15         dump_field(zero, 2);
16
17         asm volatile ("oc %O0(19,%R0),%1\n"::"Q" (*buf1),
18                       "Q"(*buf2):"memory");
19         printf("CC:%d\n", get_cc());
20         dump_field(buf1, 20);
21 }
22
23 void test_nc(void)
24 {
25         char buf1[20] = "UUUUU*UUU****U*\0\0\0\0\n";
26         char buf2[20] = "*U\0*\0\0UU*\0U*AUAA*UU\n";
27         char zero[2] = "\0\0";
28
29         printf("\nNC:\n");
30         asm volatile ("nc %O0(1,%R0),%0\n"::"Q" (*zero),
31                       "Q"(*zero):"memory");
32         printf("CC:%d\n", get_cc());
33         dump_field(zero, 2);
34
35         asm volatile ("nc %O0(19,%R0),%1\n"::"Q" (*buf1),
36                       "Q"(*buf2):"memory");
37         printf("CC:%d\n", get_cc());
38         dump_field(buf1, 20);
39 }
40
41
42 void test_xc(void)
43 {
44         char buf1[20] = "UUUUU*UUU****U*\0\0\0\0\n";
45         char buf2[20] = "*U\0*\0\0UU*\0U*AUAA*UU\n";
46         char buf3[20] = "0123456789abcdefghij";
47         char zero[300] =
48             "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
49             "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
50             "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
51             "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
52             "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
53             "aaaaa";
54
55         printf("\nXC:\n");
56         asm volatile ("xc %O0(1,%R0),%0\n"::"Q" (*zero),
57                       "Q"(*zero):"memory");
58         printf("CC:%d\n", get_cc());
59         dump_field(zero, 4);
60
61         asm volatile ("xc %O0(10,%R0),%0\n"::"Q" (*zero),
62                       "Q"(*zero):"memory");
63         printf("CC:%d\n", get_cc());
64         dump_field(zero, 12);
65
66         asm volatile ("xc %O0(100,%R0),%0\n"::"Q" (*zero),
67                       "Q"(*zero):"memory");
68         printf("CC:%d\n", get_cc());
69         dump_field(zero, 102);
70
71         asm volatile ("xc %O0(256,%R0),%0\n"::"Q" (*zero),
72                       "Q"(*zero):"memory");
73         printf("CC:%d\n", get_cc());
74         dump_field(zero, 257);
75
76         asm volatile ("lghi 1,256 + 20\n"
77                       "larl 2,1f\n"
78                       "ex 1,0(2)\n"
79                       "j 2f\n"
80                       "1: xc 260(1,%0),260(%0)\n"
81                       "2:\n"::"a" (zero), "a"(zero):"memory", "1", "2");
82         printf("CC:%d\n", get_cc());
83         dump_field(zero + 260, 30);
84
85         asm volatile ("xc 0(19,%0),0(%1)\n"::"a" (buf1),
86                       "a"(buf2):"memory");
87         printf("CC:%d\n", get_cc());
88         dump_field(buf1, 20);
89         asm volatile ("xc 0(10,%0),0(%0)\n"::"a" (buf3):"memory");
90
91         printf("CC:%d\n", get_cc());
92         dump_field(buf3, 20);
93         return;
94 }
95
96 int main()
97 {
98         test_oc();
99         test_nc();
100         test_xc();
101         return 0;
102 }