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 } 103