Lines Matching defs:cc_dep2
960 #define S390_CC_FOR_BINARY(opcode,cc_dep1,cc_dep2) \
965 : [op2] "d"(cc_dep2) \
970 #define S390_CC_FOR_TERNARY_SUBB(opcode,cc_dep1,cc_dep2,cc_ndep) \
974 cc_dep2 = cc_dep2 ^ cc_ndep; \
980 : [op2] "d"(cc_dep2), [op3] "d"(cc_ndep) \
985 #define S390_CC_FOR_TERNARY_ADDC(opcode,cc_dep1,cc_dep2,cc_ndep) \
989 cc_dep2 = cc_dep2 ^ cc_ndep; \
995 : [op2] "d"(cc_dep2), [op3] "d"(cc_ndep) \
1033 #define S390_CC_FOR_BFP_CONVERT(opcode,cc_dep1,cc_dep2) \
1036 switch (decode_bfp_rounding_mode(cc_dep2)) { \
1065 #define S390_CC_FOR_BFP_UCONVERT(opcode,cc_dep1,cc_dep2) \
1068 switch (decode_bfp_rounding_mode(cc_dep2)) { \
1099 #define S390_CC_FOR_BFP128_CONVERT(opcode,cc_dep1,cc_dep2,cc_ndep) \
1104 cc_dep2 = cc_dep2 ^ cc_ndep; \
1107 cc = S390_CC_FOR_BFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,4); \
1110 cc = S390_CC_FOR_BFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,5); \
1113 cc = S390_CC_FOR_BFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,6); \
1116 cc = S390_CC_FOR_BFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,7); \
1136 #define S390_CC_FOR_BFP128_UCONVERT(opcode,cc_dep1,cc_dep2,cc_ndep) \
1141 cc_dep2 = cc_dep2 ^ cc_ndep; \
1144 cc = S390_CC_FOR_BFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,4); \
1147 cc = S390_CC_FOR_BFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,5); \
1150 cc = S390_CC_FOR_BFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,6); \
1153 cc = S390_CC_FOR_BFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,7); \
1161 #define S390_CC_FOR_BFP_TDC(opcode,cc_dep1,cc_dep2) \
1167 [class] "a"(cc_dep2) \
1172 #define S390_CC_FOR_BFP128_TDC(cc_dep1,cc_dep2,cc_ndep) \
1176 cc_dep2 = cc_dep2 ^ cc_ndep; \
1182 : [high] "f"(cc_dep1), [low] "f"(cc_dep2), \
1237 #define S390_CC_FOR_DFP_TD(opcode,cc_dep1,cc_dep2) \
1243 [class] "a"(cc_dep2) \
1248 #define S390_CC_FOR_DFP128_TD(opcode,cc_dep1,cc_dep2,cc_ndep) \
1252 cc_dep2 = cc_dep2 ^ cc_ndep; \
1258 : [high] "f"(cc_dep1), [low] "f"(cc_dep2), \
1274 #define S390_CC_FOR_DFP_CONVERT(opcode,cc_dep1,cc_dep2) \
1277 switch (decode_dfp_rounding_mode(cc_dep2)) { \
1324 #define S390_CC_FOR_DFP_UCONVERT(opcode,cc_dep1,cc_dep2) \
1327 switch (decode_dfp_rounding_mode(cc_dep2)) { \
1376 #define S390_CC_FOR_DFP128_CONVERT(opcode,cc_dep1,cc_dep2,cc_ndep) \
1381 cc_dep2 = cc_dep2 ^ cc_ndep; \
1385 cc = S390_CC_FOR_DFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,1); \
1389 cc = S390_CC_FOR_DFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,3); \
1393 cc = S390_CC_FOR_DFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,4); \
1397 cc = S390_CC_FOR_DFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,5); \
1401 cc = S390_CC_FOR_DFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,6); \
1405 cc = S390_CC_FOR_DFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,7); \
1408 cc = S390_CC_FOR_DFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,13); \
1411 cc = S390_CC_FOR_DFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,14); \
1431 #define S390_CC_FOR_DFP128_UCONVERT(opcode,cc_dep1,cc_dep2,cc_ndep) \
1436 cc_dep2 = cc_dep2 ^ cc_ndep; \
1440 cc = S390_CC_FOR_DFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,1); \
1444 cc = S390_CC_FOR_DFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,3); \
1448 cc = S390_CC_FOR_DFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,4); \
1452 cc = S390_CC_FOR_DFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,5); \
1456 cc = S390_CC_FOR_DFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,6); \
1460 cc = S390_CC_FOR_DFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,7); \
1463 cc = S390_CC_FOR_DFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,13); \
1466 cc = S390_CC_FOR_DFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,14); \
1479 s390_calculate_cc(ULong cc_op, ULong cc_dep1, ULong cc_dep2, ULong cc_ndep)
1490 return S390_CC_FOR_BINARY("cgr", cc_dep1, cc_dep2);
1493 return S390_CC_FOR_BINARY("clgr", cc_dep1, cc_dep2);
1496 return S390_CC_FOR_BINARY("agr", cc_dep1, cc_dep2);
1499 return S390_CC_FOR_BINARY("ar", cc_dep1, cc_dep2);
1502 return S390_CC_FOR_BINARY("sgr", cc_dep1, cc_dep2);
1505 return S390_CC_FOR_BINARY("sr", cc_dep1, cc_dep2);
1508 return S390_CC_FOR_BINARY("algr", cc_dep1, cc_dep2);
1511 return S390_CC_FOR_BINARY("alr", cc_dep1, cc_dep2);
1514 return S390_CC_FOR_TERNARY_ADDC("alcgr", cc_dep1, cc_dep2, cc_ndep);
1517 return S390_CC_FOR_TERNARY_ADDC("alcr", cc_dep1, cc_dep2, cc_ndep);
1520 return S390_CC_FOR_BINARY("slgr", cc_dep1, cc_dep2);
1523 return S390_CC_FOR_BINARY("slr", cc_dep1, cc_dep2);
1526 return S390_CC_FOR_TERNARY_SUBB("slbgr", cc_dep1, cc_dep2, cc_ndep);
1529 return S390_CC_FOR_TERNARY_SUBB("slbr", cc_dep1, cc_dep2, cc_ndep);
1553 UChar mask = cc_dep2;
1566 /* Create a TMLL insn with the mask as given by cc_dep2 */
1567 UInt insn = (0xA701 << 16) | cc_dep2;
1584 : [amount] "a"(cc_dep2)
1598 : [amount] "a"(cc_dep2)
1607 if (cc_dep2 & 1) {
1611 if (cc_dep2 & 2) {
1615 if (cc_dep2 & 4) {
1619 if (cc_dep2 & 8) {
1638 return S390_CC_FOR_BFP128_RESULT(cc_dep1, cc_dep2);
1641 return S390_CC_FOR_BFP_CONVERT("cfebr", cc_dep1, cc_dep2);
1644 return S390_CC_FOR_BFP_CONVERT("cfdbr", cc_dep1, cc_dep2);
1647 return S390_CC_FOR_BFP128_CONVERT("cfxbr", cc_dep1, cc_dep2, cc_ndep);
1650 return S390_CC_FOR_BFP_CONVERT("cgebr", cc_dep1, cc_dep2);
1653 return S390_CC_FOR_BFP_CONVERT("cgdbr", cc_dep1, cc_dep2);
1656 return S390_CC_FOR_BFP128_CONVERT("cgxbr", cc_dep1, cc_dep2, cc_ndep);
1659 return S390_CC_FOR_BFP_TDC("tceb", cc_dep1, cc_dep2);
1662 return S390_CC_FOR_BFP_TDC("tcdb", cc_dep1, cc_dep2);
1665 return S390_CC_FOR_BFP128_TDC(cc_dep1, cc_dep2, cc_ndep);
1671 return S390_CC_FOR_BFP_UCONVERT(".insn rrf,0xb39c0000", cc_dep1, cc_dep2);
1674 return S390_CC_FOR_BFP_UCONVERT(".insn rrf,0xb39d0000", cc_dep1, cc_dep2);
1678 cc_dep2, cc_ndep);
1681 return S390_CC_FOR_BFP_UCONVERT(".insn rrf,0xb3ac0000", cc_dep1, cc_dep2);
1684 return S390_CC_FOR_BFP_UCONVERT(".insn rrf,0xb3ad0000", cc_dep1, cc_dep2);
1688 cc_dep2, cc_ndep);
1694 return S390_CC_FOR_DFP128_RESULT(cc_dep1, cc_dep2);
1697 return S390_CC_FOR_DFP_TD(".insn rxe, 0xed0000000050", cc_dep1, cc_dep2);
1700 return S390_CC_FOR_DFP_TD(".insn rxe, 0xed0000000054", cc_dep1, cc_dep2);
1704 cc_dep2, cc_ndep);
1707 return S390_CC_FOR_DFP_TD(".insn rxe, 0xed0000000051", cc_dep1, cc_dep2);
1710 return S390_CC_FOR_DFP_TD(".insn rxe, 0xed0000000055", cc_dep1, cc_dep2);
1714 cc_dep2, cc_ndep);
1717 cc_dep2);
1721 cc_dep2, cc_ndep);
1724 return S390_CC_FOR_DFP_CONVERT(".insn rrf,0xb3e10000", cc_dep1, cc_dep2);
1728 cc_dep2, cc_ndep);
1731 return S390_CC_FOR_DFP_UCONVERT(".insn rrf,0xb9430000", cc_dep1, cc_dep2);
1735 cc_dep2, cc_ndep);
1738 return S390_CC_FOR_DFP_UCONVERT(".insn rrf,0xb9420000", cc_dep1, cc_dep2);
1742 cc_dep2, cc_ndep);
1747 "lr 0, %[cc_dep2]\n\t" /* 32 bit GR move */
1751 [cc_dep2] "d"(cc_dep2)
1759 "lr 0, %[cc_dep2]\n\t" /* 32 bit register move */
1763 [cc_dep2] "d"(cc_dep2)
1771 "ldr 6,%[cc_dep2]\n\t"
1776 [cc_dep2] "f"(cc_dep2),
1845 IRExpr *cond_expr, *cc_op_expr, *cc_dep1, *cc_dep2;
1870 cc_dep2 = args[3];
1875 cc == 0 --> cc_dep1 == cc_dep2 (cond == 8)
1876 cc == 1 --> cc_dep1 < cc_dep2 (cond == 4)
1877 cc == 2 --> cc_dep1 > cc_dep2 (cond == 2)
1883 return unop(Iop_1Uto32, binop(Iop_CmpEQ64, cc_dep1, cc_dep2));
1886 return unop(Iop_1Uto32, binop(Iop_CmpNE64, cc_dep1, cc_dep2));
1889 return unop(Iop_1Uto32, binop(Iop_CmpLT64S, cc_dep1, cc_dep2));
1892 return unop(Iop_1Uto32, binop(Iop_CmpLE64S, cc_dep1, cc_dep2));
1894 /* cc_dep1 > cc_dep2 ----> cc_dep2 < cc_dep1 */
1896 return unop(Iop_1Uto32, binop(Iop_CmpLT64S, cc_dep2, cc_dep1));
1899 return unop(Iop_1Uto32, binop(Iop_CmpLE64S, cc_dep2, cc_dep1));
1911 cc == 0 --> cc_dep1 == cc_dep2 (cond == 8)
1912 cc == 1 --> cc_dep1 < cc_dep2 (cond == 4)
1913 cc == 2 --> cc_dep1 > cc_dep2 (cond == 2)
1919 return unop(Iop_1Uto32, binop(Iop_CmpEQ64, cc_dep1, cc_dep2));
1922 return unop(Iop_1Uto32, binop(Iop_CmpNE64, cc_dep1, cc_dep2));
1925 return unop(Iop_1Uto32, binop(Iop_CmpLT64U, cc_dep1, cc_dep2));
1928 return unop(Iop_1Uto32, binop(Iop_CmpLE64U, cc_dep1, cc_dep2));
1930 /* cc_dep1 > cc_dep2 ----> cc_dep2 < cc_dep1 */
1932 return unop(Iop_1Uto32, binop(Iop_CmpLT64U, cc_dep2, cc_dep1));
1935 return unop(Iop_1Uto32, binop(Iop_CmpLE64U, cc_dep2, cc_dep1));
2022 if (! isC64(cc_dep2)) goto missed;
2024 mask = cc_dep2->Iex.Const.con->Ico.U64;
2096 if (! isC64(cc_dep2)) goto missed;
2098 mask16 = cc_dep2->Iex.Const.con->Ico.U64;
2110 binop(Iop_And64, cc_dep1, cc_dep2),
2115 binop(Iop_And64, cc_dep1, cc_dep2),
2120 binop(Iop_And64, cc_dep1, cc_dep2),
2121 cc_dep2));
2125 binop(Iop_And64, cc_dep1, cc_dep2),
2126 cc_dep2));
2138 if (! isC64(cc_dep2)) goto missed;
2140 mask16 = cc_dep2->Iex.Const.con->Ico.U64;
2151 binop(Iop_And64, cc_dep1, cc_dep2),
2156 cc_dep2),
2161 binop(Iop_And64, cc_dep1, cc_dep2),
2166 binop(Iop_And64, cc_dep1, cc_dep2),
2182 binop(Iop_And64, cc_dep1, cc_dep2),
2195 binop(Iop_And64, cc_dep1, cc_dep2),
2207 binop(Iop_And64, cc_dep1, cc_dep2),
2233 cc_dep1, cc_dep2 are the zero extended left and right operands
2239 cc = (cc_dep1 == cc_dep2) ? 2
2240 : (cc_dep1 > cc_dep2) ? 3 : 1;
2246 return unop(Iop_1Uto32, binop(Iop_CmpLT64U, cc_dep2, cc_dep1));
2249 return unop(Iop_1Uto32, binop(Iop_CmpEQ64, cc_dep1, cc_dep2));
2252 return unop(Iop_1Uto32, binop(Iop_CmpLT64U, cc_dep1, cc_dep2));
2255 return unop(Iop_1Uto32, binop(Iop_CmpLE64U, cc_dep2, cc_dep1));
2258 return unop(Iop_1Uto32, binop(Iop_CmpLE64U, cc_dep1, cc_dep2));
2262 return unop(Iop_1Uto32, binop(Iop_CmpNE64, cc_dep1, cc_dep2));
2274 cc_dep1, cc_dep2 are the zero extended left and right operands
2284 binop(Iop_Or64, cc_dep1, cc_dep2),
2290 binop(Iop_Or64, cc_dep1, cc_dep2),
2295 binop(Iop_Add64, cc_dep1, cc_dep2),
2300 binop(Iop_Add64, cc_dep1, cc_dep2),
2309 cc_dep1, cc_dep2 are the zero extended left and right operands
2319 binop(Iop_Or64, cc_dep1, cc_dep2),
2325 binop(Iop_Or64, cc_dep1, cc_dep2),
2332 unop(Iop_64to32, cc_dep2)),
2339 unop(Iop_64to32, cc_dep2)),