1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <stdio.h> 3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned long long int ULong; 5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownULong data; 7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownULong xtra; 8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownULong amt; 9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownULong flags_in; 10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownULong result; 11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff BrownULong flags_out; 12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define AMD64G_CC_SHIFT_O 11 14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define AMD64G_CC_SHIFT_S 7 15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define AMD64G_CC_SHIFT_Z 6 16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define AMD64G_CC_SHIFT_A 4 17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define AMD64G_CC_SHIFT_C 0 18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define AMD64G_CC_SHIFT_P 2 19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define AMD64G_CC_MASK_O (1 << AMD64G_CC_SHIFT_O) 21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define AMD64G_CC_MASK_S (1 << AMD64G_CC_SHIFT_S) 22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define AMD64G_CC_MASK_Z (1 << AMD64G_CC_SHIFT_Z) 23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define AMD64G_CC_MASK_A (1 << AMD64G_CC_SHIFT_A) 24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define AMD64G_CC_MASK_C (1 << AMD64G_CC_SHIFT_C) 25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define AMD64G_CC_MASK_P (1 << AMD64G_CC_SHIFT_P) 26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define MASK_OSZACP \ 28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown (AMD64G_CC_MASK_O | AMD64G_CC_MASK_S | AMD64G_CC_MASK_Z \ 29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown | AMD64G_CC_MASK_A | AMD64G_CC_MASK_C | AMD64G_CC_MASK_P) 30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern void shld64 ( void ); 32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownasm("\n" 33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"shld64:\n" 34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %rsi\n" 35ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %r11\n" 36ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %rcx\n" 37ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq data, %rsi\n" 38ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq xtra, %r11\n" 39ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq amt, %rcx\n" 40ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq flags_in\n" 41ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopfq\n" 42ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tshldq %cl, %r11, %rsi\n" 43ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq %rsi, result\n" 44ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushfq\n" 45ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq flags_out\n" 46ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %rcx\n" 47ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %r11\n" 48ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %rsi\n" 49ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tret\n" 50ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown); 51ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 52ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern void shld32 ( void ); 53ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownasm("\n" 54ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"shld32:\n" 55ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %rsi\n" 56ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %r11\n" 57ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %rcx\n" 58ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq data, %rsi\n" 59ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq xtra, %r11\n" 60ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq amt, %rcx\n" 61ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq flags_in\n" 62ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopfq\n" 63ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tshldl %cl, %r11d, %esi\n" 64ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq %rsi, result\n" 65ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushfq\n" 66ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq flags_out\n" 67ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %rcx\n" 68ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %r11\n" 69ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %rsi\n" 70ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tret\n" 71ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown); 72ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 73ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern void shld16 ( void ); 74ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownasm("\n" 75ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"shld16:\n" 76ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %rsi\n" 77ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %r11\n" 78ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %rcx\n" 79ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq data, %rsi\n" 80ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq xtra, %r11\n" 81ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq amt, %rcx\n" 82ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq flags_in\n" 83ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopfq\n" 84ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tshldw %cl, %r11w, %si\n" 85ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq %rsi, result\n" 86ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushfq\n" 87ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq flags_out\n" 88ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %rcx\n" 89ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %r11\n" 90ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %rsi\n" 91ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tret\n" 92ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown); 93ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 94ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 95ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern void shrd64 ( void ); 96ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownasm("\n" 97ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"shrd64:\n" 98ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %rsi\n" 99ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %r11\n" 100ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %rcx\n" 101ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq data, %rsi\n" 102ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq xtra, %r11\n" 103ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq amt, %rcx\n" 104ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq flags_in\n" 105ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopfq\n" 106ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tshrdq %cl, %r11, %rsi\n" 107ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq %rsi, result\n" 108ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushfq\n" 109ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq flags_out\n" 110ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %rcx\n" 111ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %r11\n" 112ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %rsi\n" 113ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tret\n" 114ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown); 115ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 116ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern void shrd32 ( void ); 117ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownasm("\n" 118ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"shrd32:\n" 119ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %rsi\n" 120ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %r11\n" 121ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %rcx\n" 122ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq data, %rsi\n" 123ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq xtra, %r11\n" 124ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq amt, %rcx\n" 125ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq flags_in\n" 126ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopfq\n" 127ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tshrdl %cl, %r11d, %esi\n" 128ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq %rsi, result\n" 129ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushfq\n" 130ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq flags_out\n" 131ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %rcx\n" 132ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %r11\n" 133ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %rsi\n" 134ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tret\n" 135ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown); 136ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 137ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownextern void shrd16 ( void ); 138ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownasm("\n" 139ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"shrd16:\n" 140ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %rsi\n" 141ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %r11\n" 142ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq %rcx\n" 143ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq data, %rsi\n" 144ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq xtra, %r11\n" 145ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq amt, %rcx\n" 146ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushq flags_in\n" 147ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopfq\n" 148ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tshrdw %cl, %r11w, %si\n" 149ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tmovq %rsi, result\n" 150ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpushfq\n" 151ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq flags_out\n" 152ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %rcx\n" 153ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %r11\n" 154ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tpopq %rsi\n" 155ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown"\tret\n" 156ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown); 157ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 158ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 159ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownint main ( void ) 160ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 161ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown int i; 162ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ULong mask; 163ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 164ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("\nleft 64\n"); 165ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown for (i = 0; i < 260; i++) { 166ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown mask = MASK_OSZACP; 167ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown if (i > 1) mask &= ~AMD64G_CC_MASK_O; 168ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown if (i > 0) mask &= ~AMD64G_CC_MASK_A; 169ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown data = 0x1122334455667788ULL; 170ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown xtra = 0x3141592727182818ULL; 171ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown flags_in = 0ULL; 172ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown amt = (ULong)i; 173ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown shld64(); 174ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("%3d 0x%016llx 0x%llx\n", i, result, flags_out & mask); 175ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown } 176ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 177ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("\nleft 32\n"); 178ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown for (i = 0; i < 260; i++) { 179ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown mask = MASK_OSZACP; 180ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown if (i > 1) mask &= ~AMD64G_CC_MASK_O; 181ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown if (i > 0) mask &= ~AMD64G_CC_MASK_A; 182ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown data = 0x1122334455667788ULL; 183ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown xtra = 0x3141592727182818ULL; 184ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown flags_in = 0ULL; 185ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown amt = (ULong)i; 186ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown shld32(); 187ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("%3d 0x%016llx 0x%llx\n", i, result, flags_out & mask); 188ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown } 189ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("\n"); 190ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 191ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("\nleft 16\n"); 192ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown for (i = 0; i < 260; i++) { 193ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown mask = MASK_OSZACP; 194ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown if (i > 1) mask &= ~AMD64G_CC_MASK_O; 195ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown if (i > 0) mask &= ~AMD64G_CC_MASK_A; 196ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown data = 0x1122334455667788ULL; 197ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown xtra = 0x987654321987abcdULL; 198ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown flags_in = 0ULL; 199ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown amt = (ULong)i; 200ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown shld16(); 201ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("%3d 0x%016llx 0x%llx\n", i, result, flags_out & mask); 202ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown } 203ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("\n"); 204ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 205ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("\nright 64\n"); 206ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown for (i = 0; i < 260; i++) { 207ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown mask = MASK_OSZACP; 208ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown if (i > 1) mask &= ~AMD64G_CC_MASK_O; 209ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown if (i > 0) mask &= ~AMD64G_CC_MASK_A; 210ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown data = 0x1122334455667788ULL; 211ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown xtra = 0x3141592727182818ULL; 212ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown flags_in = 0ULL; 213ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown amt = (ULong)i; 214ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown shrd64(); 215ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("%3d 0x%016llx 0x%llx\n", i, result, flags_out & mask); 216ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown } 217ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 218ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("\nright 32\n"); 219ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown for (i = 0; i < 260; i++) { 220ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown mask = MASK_OSZACP; 221ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown if (i > 1) mask &= ~AMD64G_CC_MASK_O; 222ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown if (i > 0) mask &= ~AMD64G_CC_MASK_A; 223ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown data = 0x1122334455667788ULL; 224ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown xtra = 0x3141592727182818ULL; 225ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown flags_in = 0ULL; 226ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown amt = (ULong)i; 227ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown shrd32(); 228ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("%3d 0x%016llx 0x%llx\n", i, result, flags_out & mask); 229ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown } 230ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("\n"); 231ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 232ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("\nright 16\n"); 233ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown for (i = 0; i < 260; i++) { 234ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown mask = MASK_OSZACP; 235ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown if (i > 1) mask &= ~AMD64G_CC_MASK_O; 236ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown if (i > 0) mask &= ~AMD64G_CC_MASK_A; 237ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown data = 0x1122334455667788ULL; 238ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown xtra = 0x987654321987abcdULL; 239ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown flags_in = 0ULL; 240ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown amt = (ULong)i; 241ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown shrd16(); 242ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("%3d 0x%016llx 0x%llx\n", i, result, flags_out & mask); 243ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown } 244ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("\n"); 245ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 246ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown return 0; 247ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 248