00001 00002 void glue(glue(test_, OP), b)(long op0, long op1) 00003 { 00004 long res, s1, s0, flags; 00005 s0 = op0; 00006 s1 = op1; 00007 res = s0; 00008 flags = 0; 00009 asm ("push %4\n\t" 00010 "popf\n\t" 00011 stringify(OP)"b %b2\n\t" 00012 "pushf\n\t" 00013 "pop %1\n\t" 00014 : "=a" (res), "=g" (flags) 00015 : "q" (s1), "0" (res), "1" (flags)); 00016 printf("%-10s A=" FMTLX " B=" FMTLX " R=" FMTLX " CC=%04lx\n", 00017 stringify(OP) "b", s0, s1, res, flags & CC_MASK); 00018 } 00019 00020 void glue(glue(test_, OP), w)(long op0h, long op0, long op1) 00021 { 00022 long res, s1, flags, resh; 00023 s1 = op1; 00024 resh = op0h; 00025 res = op0; 00026 flags = 0; 00027 asm ("push %5\n\t" 00028 "popf\n\t" 00029 stringify(OP) "w %w3\n\t" 00030 "pushf\n\t" 00031 "pop %1\n\t" 00032 : "=a" (res), "=g" (flags), "=d" (resh) 00033 : "q" (s1), "0" (res), "1" (flags), "2" (resh)); 00034 printf("%-10s AH=" FMTLX " AL=" FMTLX " B=" FMTLX " RH=" FMTLX " RL=" FMTLX " CC=%04lx\n", 00035 stringify(OP) "w", op0h, op0, s1, resh, res, flags & CC_MASK); 00036 } 00037 00038 void glue(glue(test_, OP), l)(long op0h, long op0, long op1) 00039 { 00040 long res, s1, flags, resh; 00041 s1 = op1; 00042 resh = op0h; 00043 res = op0; 00044 flags = 0; 00045 asm ("push %5\n\t" 00046 "popf\n\t" 00047 stringify(OP) "l %k3\n\t" 00048 "pushf\n\t" 00049 "pop %1\n\t" 00050 : "=a" (res), "=g" (flags), "=d" (resh) 00051 : "q" (s1), "0" (res), "1" (flags), "2" (resh)); 00052 printf("%-10s AH=" FMTLX " AL=" FMTLX " B=" FMTLX " RH=" FMTLX " RL=" FMTLX " CC=%04lx\n", 00053 stringify(OP) "l", op0h, op0, s1, resh, res, flags & CC_MASK); 00054 } 00055 00056 #if defined(__x86_64__) 00057 void glue(glue(test_, OP), q)(long op0h, long op0, long op1) 00058 { 00059 long res, s1, flags, resh; 00060 s1 = op1; 00061 resh = op0h; 00062 res = op0; 00063 flags = 0; 00064 asm ("push %5\n\t" 00065 "popf\n\t" 00066 stringify(OP) "q %3\n\t" 00067 "pushf\n\t" 00068 "pop %1\n\t" 00069 : "=a" (res), "=g" (flags), "=d" (resh) 00070 : "q" (s1), "0" (res), "1" (flags), "2" (resh)); 00071 printf("%-10s AH=" FMTLX " AL=" FMTLX " B=" FMTLX " RH=" FMTLX " RL=" FMTLX " CC=%04lx\n", 00072 stringify(OP) "q", op0h, op0, s1, resh, res, flags & CC_MASK); 00073 } 00074 #endif 00075 00076 #undef OP