1b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj#include <stdio.h> 2b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj 3d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj/* Dummy variable. Needed to work around GCC code generation bugs */ 4d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardjvolatile long v; 5d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj 6b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj#define ADD_REG_MEM(insn, s1, s2, CARRY) \ 7b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj({ \ 8b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj unsigned long tmp = s1; \ 9b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj int cc; \ 10b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj asm volatile( "lghi 0," #CARRY "\n" \ 11b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj "aghi 0, 0\n" \ 12b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj #insn " %0, %3\n" \ 13b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj "ipm %1\n" \ 14b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj "srl %1,28\n" \ 15b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj : "+d" (tmp), "=d" (cc) \ 16b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj : "d" (tmp), "Q" (s2) \ 17b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj : "0", "cc"); \ 18b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj printf(#insn " " #CARRY " + %16.16lX + %16.16lX = %16.16lX (cc=%d)\n", s1, s2, tmp, cc); \ 19b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj}) 20b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj 21b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj#define ADD_REG_REG(insn, s1, s2, CARRY) \ 22b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj({ \ 23b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj unsigned long tmp = s1; \ 24b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj int cc; \ 25b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj asm volatile( "lghi 0," #CARRY "\n" \ 26b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj "aghi 0, 0\n" \ 27b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj #insn " %0, %3\n" \ 28b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj "ipm %1\n" \ 29b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj "srl %1,28\n" \ 30b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj : "+d" (tmp), "=d" (cc) \ 31b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj : "d" (tmp), "d" (s2) \ 32b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj : "0", "cc"); \ 33b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj printf(#insn " " #CARRY " + %16.16lX + %16.16lX = %16.16lX (cc=%d)\n", s1, s2, tmp, cc); \ 34b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj}) 35b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj 36b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj#define ADD_REG_IMM(insn, s1, s2, CARRY) \ 37b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj({ \ 38b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj unsigned long tmp = s1; \ 39b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj int cc; \ 40b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj asm volatile( "lghi 0," #CARRY "\n" \ 41b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj "aghi 0, 0\n" \ 42b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj #insn " %0," #s2 "\n" \ 43b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj "ipm %1\n" \ 44b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj "srl %1,28\n" \ 45b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj : "+d" (tmp), "=d" (cc) \ 46b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj : "d" (tmp) \ 47b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj : "0", "cc"); \ 48b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj printf(#insn " " #CARRY " + %16.16lX + %16.16lX = %16.16lX (cc=%d)\n", s1, (unsigned long) s2, tmp, cc); \ 49b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj}) 50b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj 51b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj#define ADD_MEM_IMM(insn, s1, s2, CARRY) \ 52b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj({ \ 53d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj unsigned long tmp = s1, v2; \ 54d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj register unsigned long *addr asm("5") = &tmp; \ 55b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj int cc; \ 56b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj asm volatile( "lghi 0," #CARRY "\n" \ 57b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj "aghi 0, 0\n" \ 58d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj insn(s2,5,000,00) \ 59b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj "ipm %1\n" \ 60b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj "srl %1,28\n" \ 61b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj : "+Q" (tmp), "=d" (cc) \ 62d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj : "Q" (tmp), "d" (addr) \ 63b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj : "0", "cc"); \ 64d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj v2 = (((signed long)((unsigned long)0x##s2 << 56)) >> 56); \ 65d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj printf(#insn " " #CARRY " + %16.16lX + %16.16lX = %16.16lX (cc=%d)\n", s1, v2, tmp, cc); \ 66b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj}) 67b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj 68b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj 69b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj#define memsweep(i, s2, carryset) \ 70b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj({ \ 71b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_MEM(i, 0ul, s2, carryset); \ 72b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_MEM(i, 1ul, s2, carryset); \ 73b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_MEM(i, 0xfffful, s2, carryset); \ 74b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_MEM(i, 0x7ffful, s2, carryset); \ 75b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_MEM(i, 0x8000ul, s2, carryset); \ 76b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_MEM(i, 0xfffffffful, s2, carryset); \ 77b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_MEM(i, 0x80000000ul, s2, carryset); \ 78b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_MEM(i, 0x7ffffffful, s2, carryset); \ 79b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_MEM(i, 0xfffffffffffffffful, s2, carryset); \ 80b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_MEM(i, 0x8000000000000000ul, s2, carryset); \ 81b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_MEM(i, 0x7ffffffffffffffful, s2, carryset); \ 82b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj}) 83b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj 84b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj#define regsweep(i, s2, carryset) \ 85b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj({ \ 86b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_REG(i, 0ul, s2, carryset); \ 87b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_REG(i, 1ul, s2, carryset); \ 88b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_REG(i, 0xfffful, s2, carryset); \ 89b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_REG(i, 0x7ffful, s2, carryset); \ 90b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_REG(i, 0x8000ul, s2, carryset); \ 91b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_REG(i, 0xfffffffful, s2, carryset); \ 92b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_REG(i, 0x80000000ul, s2, carryset); \ 93b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_REG(i, 0x7ffffffful, s2, carryset); \ 94b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_REG(i, 0xfffffffffffffffful, s2, carryset); \ 95b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_REG(i, 0x8000000000000000ul, s2, carryset); \ 96b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_REG(i, 0x7ffffffffffffffful, s2, carryset); \ 97b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj}) 98b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj 99b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj#define immsweep(i, s2, carryset) \ 100b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj({ \ 101b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_IMM(i, 0ul, s2, carryset); \ 102b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_IMM(i, 1ul, s2, carryset); \ 103b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_IMM(i, 0xfffful, s2, carryset); \ 104b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_IMM(i, 0x7ffful, s2, carryset); \ 105b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_IMM(i, 0x8000ul, s2, carryset); \ 106b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_IMM(i, 0xfffffffful, s2, carryset); \ 107b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_IMM(i, 0x80000000ul, s2, carryset); \ 108b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_IMM(i, 0x7ffffffful, s2, carryset); \ 109b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_IMM(i, 0xfffffffffffffffful, s2, carryset); \ 110b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_IMM(i, 0x8000000000000000ul, s2, carryset); \ 111b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_REG_IMM(i, 0x7ffffffffffffffful, s2, carryset); \ 112b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj}) 113b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj 114b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj#define memimmsweep(i, s2, carryset) \ 115b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj({ \ 116b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_MEM_IMM(i, 0ul, s2, carryset); \ 117b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_MEM_IMM(i, 1ul, s2, carryset); \ 118b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_MEM_IMM(i, 0xfffful, s2, carryset); \ 119b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_MEM_IMM(i, 0x7ffful, s2, carryset); \ 120b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_MEM_IMM(i, 0x8000ul, s2, carryset); \ 121b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_MEM_IMM(i, 0xfffffffful, s2, carryset); \ 122b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_MEM_IMM(i, 0x80000000ul, s2, carryset); \ 123b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_MEM_IMM(i, 0x7ffffffful, s2, carryset); \ 124b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_MEM_IMM(i, 0xfffffffffffffffful, s2, carryset); \ 125b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_MEM_IMM(i, 0x8000000000000000ul, s2, carryset); \ 126b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj ADD_MEM_IMM(i, 0x7ffffffffffffffful, s2, carryset); \ 127b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj}) 128b5b87408c0c99f9f6938d8cd921e2a5f420577c4sewardj 129d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj#define ahysweep(i, s2, carryset) \ 130d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj({ \ 131d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_MEM(i, 0ul, s2, carryset); \ 132d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_MEM(i, 1ul, s2, carryset); \ 133d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_MEM(i, 0xfffful, s2, carryset); \ 134d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_MEM(i, 0x7ffful, s2, carryset); \ 135d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_MEM(i, 0x8000ul, s2, carryset); \ 136d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_MEM(i, 0xfffffffful, s2, carryset); \ 137d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_MEM(i, 0x80000000ul, s2, carryset); \ 138d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_MEM(i, 0x7ffffffful, s2, carryset); \ 139d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_MEM(i, 0xfffffffffffffffful, s2, carryset); \ 140d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_MEM(i, 0x8000000000000000ul, s2, carryset); \ 141d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_MEM(i, 0x7ffffffffffffffful, s2, carryset); \ 142d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj}) 143d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj 144d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj#define ADD_REG_LDISP(insn, s1, s2, CARRY) \ 145d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj({ \ 146d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj register unsigned long tmp asm("2") = s1; \ 147d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj register unsigned long *addr asm("5") = &s2; \ 148d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj int cc; \ 149d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj asm volatile( "lghi 0," #CARRY "\n" \ 150d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj "aghi 0, 0\n" \ 151d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj insn(2,0,5,000,00) \ 152d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj "ipm %1\n" \ 153d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj "srl %1,28\n" \ 154d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj : "+d" (tmp), "=d" (cc) \ 155d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj : "d" (tmp), "Q" (s2), "d"(addr) \ 156d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj : "cc"); \ 157d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj v = tmp; /* work around GCC code gen bug */ \ 158d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj printf(#insn " " #CARRY " + %16.16lX + %16.16lX = %16.16lX (cc=%d)\n", s1, s2, v, cc); \ 159d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj}) 160d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj 161d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj#define ldispsweep(i, s2, carryset) \ 162d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj({ \ 163d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_LDISP(i, 0ul, s2, carryset); \ 164d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_LDISP(i, 1ul, s2, carryset); \ 165d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_LDISP(i, 0xfffful, s2, carryset); \ 166d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_LDISP(i, 0x7ffful, s2, carryset); \ 167d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_LDISP(i, 0x8000ul, s2, carryset); \ 168d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_LDISP(i, 0xfffffffful, s2, carryset); \ 169d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_LDISP(i, 0x80000000ul, s2, carryset); \ 170d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_LDISP(i, 0x7ffffffful, s2, carryset); \ 171d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_LDISP(i, 0xfffffffffffffffful, s2, carryset); \ 172d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_LDISP(i, 0x8000000000000000ul, s2, carryset); \ 173d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_LDISP(i, 0x7ffffffffffffffful, s2, carryset); \ 174d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj}) 175d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj 176d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj#define ADD_REG_XIMM(insn, s1, us2,s2, CARRY) \ 177d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj({ \ 178d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj register unsigned long tmp asm("2") = s1; \ 179d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj int cc; \ 180d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj asm volatile( "lghi 0," #CARRY "\n" \ 181d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj "aghi 0, 0\n" \ 182d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj insn(2,s2) \ 183d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj "ipm %1\n" \ 184d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj "srl %1,28\n" \ 185d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj : "+d" (tmp), "=d" (cc) \ 186d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj : "d" (tmp) \ 187d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj : "0", "cc"); \ 188d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj v = tmp; /* work around GCC code gen bug */ \ 189d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj printf(#insn " " #CARRY " + %16.16lX + %16.16lX = %16.16lX (cc=%d)\n", s1, (unsigned long) 0x##us2##s2, v, cc); \ 190d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj}) 191d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj 192d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj#define ximmsweep(i, us2, s2, carryset) \ 193d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj({ \ 194d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_XIMM(i, 0ul, us2, s2, carryset); \ 195d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_XIMM(i, 1ul, us2, s2, carryset); \ 196d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_XIMM(i, 0xfffful, us2, s2, carryset); \ 197d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_XIMM(i, 0x7ffful, us2, s2, carryset); \ 198d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_XIMM(i, 0x8000ul, us2, s2, carryset); \ 199d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_XIMM(i, 0xfffffffful, us2, s2, carryset); \ 200d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_XIMM(i, 0x80000000ul, us2, s2, carryset); \ 201d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_XIMM(i, 0x7ffffffful, us2, s2, carryset); \ 202d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_XIMM(i, 0xfffffffffffffffful, us2, s2, carryset); \ 203d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_XIMM(i, 0x8000000000000000ul, us2, s2, carryset); \ 204d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj ADD_REG_XIMM(i, 0x7ffffffffffffffful, us2, s2, carryset); \ 205d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj}) 206d50650d6cb0e3577ba28b470a4e5f5df8368afaasewardj 207