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