Home | History | Annotate | Download | only in priv

Lines Matching defs:cc_dep2

962 #define S390_CC_FOR_BINARY(opcode,cc_dep1,cc_dep2) \
967 : [op2] "d"(cc_dep2) \
972 #define S390_CC_FOR_TERNARY_SUBB(opcode,cc_dep1,cc_dep2,cc_ndep) \
976 cc_dep2 = cc_dep2 ^ cc_ndep; \
982 : [op2] "d"(cc_dep2), [op3] "d"(cc_ndep) \
987 #define S390_CC_FOR_TERNARY_ADDC(opcode,cc_dep1,cc_dep2,cc_ndep) \
991 cc_dep2 = cc_dep2 ^ cc_ndep; \
997 : [op2] "d"(cc_dep2), [op3] "d"(cc_ndep) \
1035 #define S390_CC_FOR_BFP_CONVERT(opcode,cc_dep1,cc_dep2) \
1038 switch (decode_bfp_rounding_mode(cc_dep2)) { \
1067 #define S390_CC_FOR_BFP_UCONVERT(opcode,cc_dep1,cc_dep2) \
1070 switch (decode_bfp_rounding_mode(cc_dep2)) { \
1101 #define S390_CC_FOR_BFP128_CONVERT(opcode,cc_dep1,cc_dep2,cc_ndep) \
1106 cc_dep2 = cc_dep2 ^ cc_ndep; \
1109 cc = S390_CC_FOR_BFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,4); \
1112 cc = S390_CC_FOR_BFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,5); \
1115 cc = S390_CC_FOR_BFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,6); \
1118 cc = S390_CC_FOR_BFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,7); \
1138 #define S390_CC_FOR_BFP128_UCONVERT(opcode,cc_dep1,cc_dep2,cc_ndep) \
1143 cc_dep2 = cc_dep2 ^ cc_ndep; \
1146 cc = S390_CC_FOR_BFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,4); \
1149 cc = S390_CC_FOR_BFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,5); \
1152 cc = S390_CC_FOR_BFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,6); \
1155 cc = S390_CC_FOR_BFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,7); \
1163 #define S390_CC_FOR_BFP_TDC(opcode,cc_dep1,cc_dep2) \
1169 [class] "a"(cc_dep2) \
1174 #define S390_CC_FOR_BFP128_TDC(cc_dep1,cc_dep2,cc_ndep) \
1178 cc_dep2 = cc_dep2 ^ cc_ndep; \
1184 : [high] "f"(cc_dep1), [low] "f"(cc_dep2), \
1239 #define S390_CC_FOR_DFP_TD(opcode,cc_dep1,cc_dep2) \
1245 [class] "a"(cc_dep2) \
1250 #define S390_CC_FOR_DFP128_TD(opcode,cc_dep1,cc_dep2,cc_ndep) \
1254 cc_dep2 = cc_dep2 ^ cc_ndep; \
1260 : [high] "f"(cc_dep1), [low] "f"(cc_dep2), \
1276 #define S390_CC_FOR_DFP_CONVERT(opcode,cc_dep1,cc_dep2) \
1279 switch (decode_dfp_rounding_mode(cc_dep2)) { \
1326 #define S390_CC_FOR_DFP_UCONVERT(opcode,cc_dep1,cc_dep2) \
1329 switch (decode_dfp_rounding_mode(cc_dep2)) { \
1378 #define S390_CC_FOR_DFP128_CONVERT(opcode,cc_dep1,cc_dep2,cc_ndep) \
1383 cc_dep2 = cc_dep2 ^ cc_ndep; \
1387 cc = S390_CC_FOR_DFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,1); \
1391 cc = S390_CC_FOR_DFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,3); \
1395 cc = S390_CC_FOR_DFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,4); \
1399 cc = S390_CC_FOR_DFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,5); \
1403 cc = S390_CC_FOR_DFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,6); \
1407 cc = S390_CC_FOR_DFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,7); \
1410 cc = S390_CC_FOR_DFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,13); \
1413 cc = S390_CC_FOR_DFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,14); \
1433 #define S390_CC_FOR_DFP128_UCONVERT(opcode,cc_dep1,cc_dep2,cc_ndep) \
1438 cc_dep2 = cc_dep2 ^ cc_ndep; \
1442 cc = S390_CC_FOR_DFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,1); \
1446 cc = S390_CC_FOR_DFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,3); \
1450 cc = S390_CC_FOR_DFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,4); \
1454 cc = S390_CC_FOR_DFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,5); \
1458 cc = S390_CC_FOR_DFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,6); \
1462 cc = S390_CC_FOR_DFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,7); \
1465 cc = S390_CC_FOR_DFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,13); \
1468 cc = S390_CC_FOR_DFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,14); \
1481 s390_calculate_cc(ULong cc_op, ULong cc_dep1, ULong cc_dep2, ULong cc_ndep)
1492 return S390_CC_FOR_BINARY("cgr", cc_dep1, cc_dep2);
1495 return S390_CC_FOR_BINARY("clgr", cc_dep1, cc_dep2);
1498 return S390_CC_FOR_BINARY("agr", cc_dep1, cc_dep2);
1501 return S390_CC_FOR_BINARY("ar", cc_dep1, cc_dep2);
1504 return S390_CC_FOR_BINARY("sgr", cc_dep1, cc_dep2);
1507 return S390_CC_FOR_BINARY("sr", cc_dep1, cc_dep2);
1510 return S390_CC_FOR_BINARY("algr", cc_dep1, cc_dep2);
1513 return S390_CC_FOR_BINARY("alr", cc_dep1, cc_dep2);
1516 return S390_CC_FOR_TERNARY_ADDC("alcgr", cc_dep1, cc_dep2, cc_ndep);
1519 return S390_CC_FOR_TERNARY_ADDC("alcr", cc_dep1, cc_dep2, cc_ndep);
1522 return S390_CC_FOR_BINARY("slgr", cc_dep1, cc_dep2);
1525 return S390_CC_FOR_BINARY("slr", cc_dep1, cc_dep2);
1528 return S390_CC_FOR_TERNARY_SUBB("slbgr", cc_dep1, cc_dep2, cc_ndep);
1531 return S390_CC_FOR_TERNARY_SUBB("slbr", cc_dep1, cc_dep2, cc_ndep);
1555 UChar mask = cc_dep2;
1568 /* Create a TMLL insn with the mask as given by cc_dep2 */
1569 UInt insn = (0xA701u << 16) | cc_dep2;
1586 : [amount] "a"(cc_dep2)
1600 : [amount] "a"(cc_dep2)
1609 if (cc_dep2 & 1) {
1613 if (cc_dep2 & 2) {
1617 if (cc_dep2 & 4) {
1621 if (cc_dep2 & 8) {
1640 return S390_CC_FOR_BFP128_RESULT(cc_dep1, cc_dep2);
1643 return S390_CC_FOR_BFP_CONVERT("cfebr", cc_dep1, cc_dep2);
1646 return S390_CC_FOR_BFP_CONVERT("cfdbr", cc_dep1, cc_dep2);
1649 return S390_CC_FOR_BFP128_CONVERT("cfxbr", cc_dep1, cc_dep2, cc_ndep);
1652 return S390_CC_FOR_BFP_CONVERT("cgebr", cc_dep1, cc_dep2);
1655 return S390_CC_FOR_BFP_CONVERT("cgdbr", cc_dep1, cc_dep2);
1658 return S390_CC_FOR_BFP128_CONVERT("cgxbr", cc_dep1, cc_dep2, cc_ndep);
1661 return S390_CC_FOR_BFP_TDC("tceb", cc_dep1, cc_dep2);
1664 return S390_CC_FOR_BFP_TDC("tcdb", cc_dep1, cc_dep2);
1667 return S390_CC_FOR_BFP128_TDC(cc_dep1, cc_dep2, cc_ndep);
1673 return S390_CC_FOR_BFP_UCONVERT(".insn rrf,0xb39c0000", cc_dep1, cc_dep2);
1676 return S390_CC_FOR_BFP_UCONVERT(".insn rrf,0xb39d0000", cc_dep1, cc_dep2);
1680 cc_dep2, cc_ndep);
1683 return S390_CC_FOR_BFP_UCONVERT(".insn rrf,0xb3ac0000", cc_dep1, cc_dep2);
1686 return S390_CC_FOR_BFP_UCONVERT(".insn rrf,0xb3ad0000", cc_dep1, cc_dep2);
1690 cc_dep2, cc_ndep);
1696 return S390_CC_FOR_DFP128_RESULT(cc_dep1, cc_dep2);
1699 return S390_CC_FOR_DFP_TD(".insn rxe, 0xed0000000050", cc_dep1, cc_dep2);
1702 return S390_CC_FOR_DFP_TD(".insn rxe, 0xed0000000054", cc_dep1, cc_dep2);
1706 cc_dep2, cc_ndep);
1709 return S390_CC_FOR_DFP_TD(".insn rxe, 0xed0000000051", cc_dep1, cc_dep2);
1712 return S390_CC_FOR_DFP_TD(".insn rxe, 0xed0000000055", cc_dep1, cc_dep2);
1716 cc_dep2, cc_ndep);
1719 return S390_CC_FOR_DFP_CONVERT(".insn rrf,0xb9410000", cc_dep1, cc_dep2);
1723 cc_dep2, cc_ndep);
1726 return S390_CC_FOR_DFP_CONVERT(".insn rrf,0xb3e10000", cc_dep1, cc_dep2);
1730 cc_dep2, cc_ndep);
1733 return S390_CC_FOR_DFP_UCONVERT(".insn rrf,0xb9430000", cc_dep1, cc_dep2);
1737 cc_dep2, cc_ndep);
1740 return S390_CC_FOR_DFP_UCONVERT(".insn rrf,0xb9420000", cc_dep1, cc_dep2);
1744 cc_dep2, cc_ndep);
1749 "lr 0, %[cc_dep2]\n\t" /* 32 bit GR move */
1753 [cc_dep2] "d"(cc_dep2)
1761 "lr 0, %[cc_dep2]\n\t" /* 32 bit register move */
1765 [cc_dep2] "d"(cc_dep2)
1773 "ldr 6,%[cc_dep2]\n\t"
1778 [cc_dep2] "f"(cc_dep2),
1847 IRExpr *cond_expr, *cc_op_expr, *cc_dep1, *cc_dep2;
1872 cc_dep2 = args[3];
1877 cc == 0 --> cc_dep1 == cc_dep2 (cond == 8)
1878 cc == 1 --> cc_dep1 < cc_dep2 (cond == 4)
1879 cc == 2 --> cc_dep1 > cc_dep2 (cond == 2)
1885 return unop(Iop_1Uto32, binop(Iop_CmpEQ64, cc_dep1, cc_dep2));
1888 return unop(Iop_1Uto32, binop(Iop_CmpNE64, cc_dep1, cc_dep2));
1891 return unop(Iop_1Uto32, binop(Iop_CmpLT64S, cc_dep1, cc_dep2));
1894 return unop(Iop_1Uto32, binop(Iop_CmpLE64S, cc_dep1, cc_dep2));
1896 /* cc_dep1 > cc_dep2 ----> cc_dep2 < cc_dep1 */
1898 return unop(Iop_1Uto32, binop(Iop_CmpLT64S, cc_dep2, cc_dep1));
1901 return unop(Iop_1Uto32, binop(Iop_CmpLE64S, cc_dep2, cc_dep1));
1913 cc == 0 --> cc_dep1 == cc_dep2 (cond == 8)
1914 cc == 1 --> cc_dep1 < cc_dep2 (cond == 4)
1915 cc == 2 --> cc_dep1 > cc_dep2 (cond == 2)
1921 return unop(Iop_1Uto32, binop(Iop_CmpEQ64, cc_dep1, cc_dep2));
1924 return unop(Iop_1Uto32, binop(Iop_CmpNE64, cc_dep1, cc_dep2));
1927 return unop(Iop_1Uto32, binop(Iop_CmpLT64U, cc_dep1, cc_dep2));
1930 return unop(Iop_1Uto32, binop(Iop_CmpLE64U, cc_dep1, cc_dep2));
1932 /* cc_dep1 > cc_dep2 ----> cc_dep2 < cc_dep1 */
1934 return unop(Iop_1Uto32, binop(Iop_CmpLT64U, cc_dep2, cc_dep1));
1937 return unop(Iop_1Uto32, binop(Iop_CmpLE64U, cc_dep2, cc_dep1));
2027 if (! isC64(cc_dep2)) goto missed;
2029 mask = cc_dep2->Iex.Const.con->Ico.U64;
2101 if (! isC64(cc_dep2)) goto missed;
2103 mask16 = cc_dep2->Iex.Const.con->Ico.U64;
2115 binop(Iop_And64, cc_dep1, cc_dep2),
2120 binop(Iop_And64, cc_dep1, cc_dep2),
2125 binop(Iop_And64, cc_dep1, cc_dep2),
2126 cc_dep2));
2130 binop(Iop_And64, cc_dep1, cc_dep2),
2131 cc_dep2));
2143 if (! isC64(cc_dep2)) goto missed;
2145 mask16 = cc_dep2->Iex.Const.con->Ico.U64;
2158 cc_dep2),
2163 binop(Iop_And64, cc_dep1, cc_dep2),
2168 binop(Iop_And64, cc_dep1, cc_dep2),
2173 binop(Iop_And64, cc_dep1, cc_dep2),
2189 binop(Iop_And64, cc_dep1, cc_dep2),
2202 binop(Iop_And64, cc_dep1, cc_dep2),
2214 binop(Iop_And64, cc_dep1, cc_dep2),
2237 c3 = binop(Iop_CmpEQ64, binop(Iop_And64, cc_dep1, cc_dep2),
2251 cc_dep1, cc_dep2 are the zero extended left and right operands
2257 cc = (cc_dep1 == cc_dep2) ? 2
2258 : (cc_dep1 > cc_dep2) ? 3 : 1;
2264 return unop(Iop_1Uto32, binop(Iop_CmpLT64U, cc_dep2, cc_dep1));
2267 return unop(Iop_1Uto32, binop(Iop_CmpEQ64, cc_dep1, cc_dep2));
2270 return unop(Iop_1Uto32, binop(Iop_CmpLT64U, cc_dep1, cc_dep2));
2273 return unop(Iop_1Uto32, binop(Iop_CmpLE64U, cc_dep2, cc_dep1));
2276 return unop(Iop_1Uto32, binop(Iop_CmpLE64U, cc_dep1, cc_dep2));
2280 return unop(Iop_1Uto32, binop(Iop_CmpNE64, cc_dep1, cc_dep2));
2292 cc_dep1, cc_dep2 are the zero extended left and right operands
2302 binop(Iop_Or64, cc_dep1, cc_dep2),
2308 binop(Iop_Or64, cc_dep1, cc_dep2),
2313 binop(Iop_Add64, cc_dep1, cc_dep2),
2318 binop(Iop_Add64, cc_dep1, cc_dep2),
2327 cc_dep1, cc_dep2 are the zero extended left and right operands
2337 binop(Iop_Or64, cc_dep1, cc_dep2),
2343 binop(Iop_Or64, cc_dep1, cc_dep2),
2350 unop(Iop_64to32, cc_dep2)),
2357 unop(Iop_64to32, cc_dep2)),