17559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 27559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj#include <stdio.h> 37559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 47559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjtypedef unsigned long long int ULong; 57559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 67559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjULong data; 77559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjULong xtra; 87559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjULong amt; 97559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjULong flags_in; 107559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjULong result; 117559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjULong flags_out; 127559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 137559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj#define AMD64G_CC_SHIFT_O 11 147559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj#define AMD64G_CC_SHIFT_S 7 157559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj#define AMD64G_CC_SHIFT_Z 6 167559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj#define AMD64G_CC_SHIFT_A 4 177559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj#define AMD64G_CC_SHIFT_C 0 187559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj#define AMD64G_CC_SHIFT_P 2 197559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 207559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj#define AMD64G_CC_MASK_O (1 << AMD64G_CC_SHIFT_O) 217559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj#define AMD64G_CC_MASK_S (1 << AMD64G_CC_SHIFT_S) 227559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj#define AMD64G_CC_MASK_Z (1 << AMD64G_CC_SHIFT_Z) 237559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj#define AMD64G_CC_MASK_A (1 << AMD64G_CC_SHIFT_A) 247559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj#define AMD64G_CC_MASK_C (1 << AMD64G_CC_SHIFT_C) 257559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj#define AMD64G_CC_MASK_P (1 << AMD64G_CC_SHIFT_P) 267559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 277559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj#define MASK_OSZACP \ 287559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj (AMD64G_CC_MASK_O | AMD64G_CC_MASK_S | AMD64G_CC_MASK_Z \ 297559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj | AMD64G_CC_MASK_A | AMD64G_CC_MASK_C | AMD64G_CC_MASK_P) 307559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 317559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjextern void shld64 ( void ); 327559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjasm("\n" 337559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"shld64:\n" 347559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %rsi\n" 357559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %r11\n" 367559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %rcx\n" 377559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq data, %rsi\n" 387559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq xtra, %r11\n" 397559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq amt, %rcx\n" 407559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq flags_in\n" 417559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopfq\n" 427559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tshldq %cl, %r11, %rsi\n" 437559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq %rsi, result\n" 447559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushfq\n" 457559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq flags_out\n" 467559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %rcx\n" 477559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %r11\n" 487559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %rsi\n" 497559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tret\n" 507559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj); 517559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 527559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjextern void shld32 ( void ); 537559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjasm("\n" 547559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"shld32:\n" 557559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %rsi\n" 567559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %r11\n" 577559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %rcx\n" 587559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq data, %rsi\n" 597559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq xtra, %r11\n" 607559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq amt, %rcx\n" 617559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq flags_in\n" 627559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopfq\n" 637559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tshldl %cl, %r11d, %esi\n" 647559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq %rsi, result\n" 657559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushfq\n" 667559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq flags_out\n" 677559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %rcx\n" 687559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %r11\n" 697559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %rsi\n" 707559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tret\n" 717559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj); 727559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 737559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjextern void shld16 ( void ); 747559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjasm("\n" 757559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"shld16:\n" 767559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %rsi\n" 777559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %r11\n" 787559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %rcx\n" 797559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq data, %rsi\n" 807559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq xtra, %r11\n" 817559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq amt, %rcx\n" 827559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq flags_in\n" 837559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopfq\n" 847559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tshldw %cl, %r11w, %si\n" 857559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq %rsi, result\n" 867559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushfq\n" 877559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq flags_out\n" 887559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %rcx\n" 897559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %r11\n" 907559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %rsi\n" 917559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tret\n" 927559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj); 937559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 947559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 957559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjextern void shrd64 ( void ); 967559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjasm("\n" 977559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"shrd64:\n" 987559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %rsi\n" 997559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %r11\n" 1007559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %rcx\n" 1017559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq data, %rsi\n" 1027559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq xtra, %r11\n" 1037559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq amt, %rcx\n" 1047559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq flags_in\n" 1057559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopfq\n" 1067559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tshrdq %cl, %r11, %rsi\n" 1077559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq %rsi, result\n" 1087559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushfq\n" 1097559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq flags_out\n" 1107559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %rcx\n" 1117559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %r11\n" 1127559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %rsi\n" 1137559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tret\n" 1147559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj); 1157559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 1167559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjextern void shrd32 ( void ); 1177559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjasm("\n" 1187559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"shrd32:\n" 1197559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %rsi\n" 1207559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %r11\n" 1217559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %rcx\n" 1227559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq data, %rsi\n" 1237559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq xtra, %r11\n" 1247559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq amt, %rcx\n" 1257559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq flags_in\n" 1267559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopfq\n" 1277559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tshrdl %cl, %r11d, %esi\n" 1287559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq %rsi, result\n" 1297559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushfq\n" 1307559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq flags_out\n" 1317559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %rcx\n" 1327559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %r11\n" 1337559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %rsi\n" 1347559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tret\n" 1357559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj); 1367559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 1377559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjextern void shrd16 ( void ); 1387559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjasm("\n" 1397559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"shrd16:\n" 1407559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %rsi\n" 1417559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %r11\n" 1427559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq %rcx\n" 1437559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq data, %rsi\n" 1447559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq xtra, %r11\n" 1457559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq amt, %rcx\n" 1467559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushq flags_in\n" 1477559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopfq\n" 1487559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tshrdw %cl, %r11w, %si\n" 1497559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tmovq %rsi, result\n" 1507559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpushfq\n" 1517559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq flags_out\n" 1527559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %rcx\n" 1537559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %r11\n" 1547559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tpopq %rsi\n" 1557559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj"\tret\n" 1567559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj); 1577559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 1587559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 1597559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardjint main ( void ) 1607559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj{ 1617559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj int i; 1627559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj ULong mask; 1637559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 1647559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj printf("\nleft 64\n"); 1657559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj for (i = 0; i < 260; i++) { 1667559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj mask = MASK_OSZACP; 1677559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj if (i > 1) mask &= ~AMD64G_CC_MASK_O; 1687559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj if (i > 0) mask &= ~AMD64G_CC_MASK_A; 1697559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj data = 0x1122334455667788ULL; 1707559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj xtra = 0x3141592727182818ULL; 1717559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj flags_in = 0ULL; 1727559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj amt = (ULong)i; 1737559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj shld64(); 1747559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj printf("%3d 0x%016llx 0x%llx\n", i, result, flags_out & mask); 1757559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj } 1767559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 1777559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj printf("\nleft 32\n"); 1787559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj for (i = 0; i < 260; i++) { 1797559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj mask = MASK_OSZACP; 1807559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj if (i > 1) mask &= ~AMD64G_CC_MASK_O; 1817559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj if (i > 0) mask &= ~AMD64G_CC_MASK_A; 1827559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj data = 0x1122334455667788ULL; 1837559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj xtra = 0x3141592727182818ULL; 1847559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj flags_in = 0ULL; 1857559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj amt = (ULong)i; 1867559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj shld32(); 1877559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj printf("%3d 0x%016llx 0x%llx\n", i, result, flags_out & mask); 1887559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj } 1897559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj printf("\n"); 1907559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 1917559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj printf("\nleft 16\n"); 1927559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj for (i = 0; i < 260; i++) { 1937559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj mask = MASK_OSZACP; 1947559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj if (i > 1) mask &= ~AMD64G_CC_MASK_O; 1957559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj if (i > 0) mask &= ~AMD64G_CC_MASK_A; 1967559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj data = 0x1122334455667788ULL; 1977559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj xtra = 0x987654321987abcdULL; 1987559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj flags_in = 0ULL; 1997559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj amt = (ULong)i; 2007559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj shld16(); 2017559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj printf("%3d 0x%016llx 0x%llx\n", i, result, flags_out & mask); 2027559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj } 2037559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj printf("\n"); 2047559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 2057559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj printf("\nright 64\n"); 2067559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj for (i = 0; i < 260; i++) { 2077559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj mask = MASK_OSZACP; 2087559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj if (i > 1) mask &= ~AMD64G_CC_MASK_O; 2097559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj if (i > 0) mask &= ~AMD64G_CC_MASK_A; 2107559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj data = 0x1122334455667788ULL; 2117559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj xtra = 0x3141592727182818ULL; 2127559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj flags_in = 0ULL; 2137559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj amt = (ULong)i; 2147559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj shrd64(); 2157559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj printf("%3d 0x%016llx 0x%llx\n", i, result, flags_out & mask); 2167559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj } 2177559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 2187559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj printf("\nright 32\n"); 2197559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj for (i = 0; i < 260; i++) { 2207559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj mask = MASK_OSZACP; 2217559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj if (i > 1) mask &= ~AMD64G_CC_MASK_O; 2227559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj if (i > 0) mask &= ~AMD64G_CC_MASK_A; 2237559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj data = 0x1122334455667788ULL; 2247559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj xtra = 0x3141592727182818ULL; 2257559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj flags_in = 0ULL; 2267559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj amt = (ULong)i; 2277559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj shrd32(); 2287559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj printf("%3d 0x%016llx 0x%llx\n", i, result, flags_out & mask); 2297559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj } 2307559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj printf("\n"); 2317559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 2327559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj printf("\nright 16\n"); 2337559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj for (i = 0; i < 260; i++) { 2347559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj mask = MASK_OSZACP; 2357559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj if (i > 1) mask &= ~AMD64G_CC_MASK_O; 2367559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj if (i > 0) mask &= ~AMD64G_CC_MASK_A; 2377559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj data = 0x1122334455667788ULL; 2387559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj xtra = 0x987654321987abcdULL; 2397559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj flags_in = 0ULL; 2407559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj amt = (ULong)i; 2417559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj shrd16(); 2427559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj printf("%3d 0x%016llx 0x%llx\n", i, result, flags_out & mask); 2437559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj } 2447559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj printf("\n"); 2457559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj 2467559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj return 0; 2477559dbcc5d5a1e498f5c52dac91cf5ebb7396e04sewardj} 248