Home | History | Annotate | Download | only in priv

Lines Matching full:cc_dep2

342 #define S390_CC_FOR_BINARY(opcode,cc_dep1,cc_dep2) \
347 : [op2] "d"(cc_dep2) \
352 #define S390_CC_FOR_TERNARY_SUBB(opcode,cc_dep1,cc_dep2,cc_ndep) \
356 cc_dep2 = cc_dep2 ^ cc_ndep; \
362 : [op2] "d"(cc_dep2), [op3] "d"(cc_ndep) \
367 #define S390_CC_FOR_TERNARY_ADDC(opcode,cc_dep1,cc_dep2,cc_ndep) \
371 cc_dep2 = cc_dep2 ^ cc_ndep; \
377 : [op2] "d"(cc_dep2), [op3] "d"(cc_ndep) \
427 #define S390_CC_FOR_BFP_TDC(opcode,cc_dep1,cc_dep2) \
433 [class] "a"(cc_dep2) \
438 #define S390_CC_FOR_BFP128_TDC(cc_dep1,cc_dep2,cc_ndep) \
442 cc_dep2 = cc_dep2 ^ cc_ndep; \
448 : [high] "f"(cc_dep1), [low] "f"(cc_dep2), \
459 s390_calculate_cc(ULong cc_op, ULong cc_dep1, ULong cc_dep2, ULong cc_ndep)
470 return S390_CC_FOR_BINARY("cgr", cc_dep1, cc_dep2);
473 return S390_CC_FOR_BINARY("clgr", cc_dep1, cc_dep2);
476 return S390_CC_FOR_BINARY("agr", cc_dep1, cc_dep2);
479 return S390_CC_FOR_BINARY("ar", cc_dep1, cc_dep2);
482 return S390_CC_FOR_BINARY("sgr", cc_dep1, cc_dep2);
485 return S390_CC_FOR_BINARY("sr", cc_dep1, cc_dep2);
488 return S390_CC_FOR_BINARY("algr", cc_dep1, cc_dep2);
491 return S390_CC_FOR_BINARY("alr", cc_dep1, cc_dep2);
494 return S390_CC_FOR_TERNARY_ADDC("alcgr", cc_dep1, cc_dep2, cc_ndep);
497 return S390_CC_FOR_TERNARY_ADDC("alcr", cc_dep1, cc_dep2, cc_ndep);
500 return S390_CC_FOR_BINARY("slgr", cc_dep1, cc_dep2);
503 return S390_CC_FOR_BINARY("slr", cc_dep1, cc_dep2);
506 return S390_CC_FOR_TERNARY_SUBB("slbgr", cc_dep1, cc_dep2, cc_ndep);
509 return S390_CC_FOR_TERNARY_SUBB("slbr", cc_dep1, cc_dep2, cc_ndep);
538 UChar mask = cc_dep2;
551 /* Create a TMLL insn with the mask as given by cc_dep2 */
552 UInt insn = (0xA701 << 16) | cc_dep2;
569 : [amount] "a"(cc_dep2)
582 : [amount] "a"(cc_dep2)
591 if (cc_dep2 & 1) {
595 if (cc_dep2 & 2) {
599 if (cc_dep2 & 4) {
603 if (cc_dep2 & 8) {
622 return S390_CC_FOR_BFP128_RESULT(cc_dep1, cc_dep2);
631 return S390_CC_FOR_BFP128_CONVERT("cfxbr", cc_dep1, cc_dep2);
640 return S390_CC_FOR_BFP128_CONVERT("cgxbr", cc_dep1, cc_dep2);
643 return S390_CC_FOR_BFP_TDC("tceb", cc_dep1, cc_dep2);
646 return S390_CC_FOR_BFP_TDC("tcdb", cc_dep1, cc_dep2);
649 return S390_CC_FOR_BFP128_TDC(cc_dep1, cc_dep2, cc_ndep);
724 IRExpr *cond_expr, *cc_op_expr, *cc_dep1, *cc_dep2;
749 cc_dep2 = args[3];
754 cc == 0 --> cc_dep1 == cc_dep2 (cond == 8)
755 cc == 1 --> cc_dep1 < cc_dep2 (cond == 4)
756 cc == 2 --> cc_dep1 > cc_dep2 (cond == 2)
762 return unop(Iop_1Uto32, binop(Iop_CmpEQ64, cc_dep1, cc_dep2));
765 return unop(Iop_1Uto32, binop(Iop_CmpNE64, cc_dep1, cc_dep2));
768 return unop(Iop_1Uto32, binop(Iop_CmpLT64S, cc_dep1, cc_dep2));
771 return unop(Iop_1Uto32, binop(Iop_CmpLE64S, cc_dep1, cc_dep2));
773 /* cc_dep1 > cc_dep2 ----> cc_dep2 < cc_dep1 */
775 return unop(Iop_1Uto32, binop(Iop_CmpLT64S, cc_dep2, cc_dep1));
778 return unop(Iop_1Uto32, binop(Iop_CmpLE64S, cc_dep2, cc_dep1));
790 cc == 0 --> cc_dep1 == cc_dep2 (cond == 8)
791 cc == 1 --> cc_dep1 < cc_dep2 (cond == 4)
792 cc == 2 --> cc_dep1 > cc_dep2 (cond == 2)
798 return unop(Iop_1Uto32, binop(Iop_CmpEQ64, cc_dep1, cc_dep2));
801 return unop(Iop_1Uto32, binop(Iop_CmpNE64, cc_dep1, cc_dep2));
804 return unop(Iop_1Uto32, binop(Iop_CmpLT64U, cc_dep1, cc_dep2));
807 return unop(Iop_1Uto32, binop(Iop_CmpLE64U, cc_dep1, cc_dep2));
809 /* cc_dep1 > cc_dep2 ----> cc_dep2 < cc_dep1 */
811 return unop(Iop_1Uto32, binop(Iop_CmpLT64U, cc_dep2, cc_dep1));
814 return unop(Iop_1Uto32, binop(Iop_CmpLE64U, cc_dep2, cc_dep1));
896 if (! isC64(cc_dep2)) goto missed;
898 mask = cc_dep2->Iex.Const.con->Ico.U64;
970 if (! isC64(cc_dep2)) goto missed;
972 mask16 = cc_dep2->Iex.Const.con->Ico.U64;
984 binop(Iop_And64, cc_dep1, cc_dep2),
989 binop(Iop_And64, cc_dep1, cc_dep2),
994 binop(Iop_And64, cc_dep1, cc_dep2),
995 cc_dep2));
999 binop(Iop_And64, cc_dep1, cc_dep2),
1000 cc_dep2));
1012 if (! isC64(cc_dep2)) goto missed;
1014 mask16 = cc_dep2->Iex.Const.con->Ico.U64;
1025 binop(Iop_And64, cc_dep1, cc_dep2),
1030 binop(Iop_And64, cc_dep1, cc_dep2),
1035 binop(Iop_And64, cc_dep1, cc_dep2),
1040 binop(Iop_And64, cc_dep1, cc_dep2),
1056 binop(Iop_And64, cc_dep1, cc_dep2),
1069 binop(Iop_And64, cc_dep1, cc_dep2),
1081 binop(Iop_And64, cc_dep1, cc_dep2),
1107 cc_dep1, cc_dep2 are the zero extended left and right operands
1113 cc = (cc_dep1 == cc_dep2) ? 2
1114 : (cc_dep1 > cc_dep2) ? 3 : 1;
1120 return unop(Iop_1Uto32, binop(Iop_CmpLT64U, cc_dep2, cc_dep1));
1123 return unop(Iop_1Uto32, binop(Iop_CmpEQ64, cc_dep1, cc_dep2));
1126 return unop(Iop_1Uto32, binop(Iop_CmpLT64U, cc_dep1, cc_dep2));
1129 return unop(Iop_1Uto32, binop(Iop_CmpLE64U, cc_dep2, cc_dep1));
1132 return unop(Iop_1Uto32, binop(Iop_CmpLE64U, cc_dep1, cc_dep2));
1136 return unop(Iop_1Uto32, binop(Iop_CmpNE64, cc_dep1, cc_dep2));
1148 cc_dep1, cc_dep2 are the zero extended left and right operands
1158 binop(Iop_Or64, cc_dep1, cc_dep2),
1164 binop(Iop_Or64, cc_dep1, cc_dep2),
1169 binop(Iop_Add64, cc_dep1, cc_dep2),
1174 binop(Iop_Add64, cc_dep1, cc_dep2),
1183 cc_dep1, cc_dep2 are the zero extended left and right operands
1193 binop(Iop_Or64, cc_dep1, cc_dep2),
1199 binop(Iop_Or64, cc_dep1, cc_dep2),
1206 unop(Iop_64to32, cc_dep2)),
1213 unop(Iop_64to32, cc_dep2)),