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