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