UInt ij = (byte3 >> 4) & 0x3;
UInt klmn = byte3 & 0xf;
UInt opqrst = byte4 & 0x3f;
-
+
if (is_cu12) {
UInt abcd = (uvwxy - 1) & 0xf;
UInt high_surrogate = (0xd8 << 8) | (abcd << 6) | (efgh << 2) | ij;
case Irrm_NegINF: return S390_BFP_ROUND_NEGINF;
case Irrm_PosINF: return S390_BFP_ROUND_POSINF;
case Irrm_ZERO: return S390_BFP_ROUND_ZERO;
+ case Irrm_NEAREST_TIE_AWAY_0: return S390_BFP_ROUND_NEAREST_AWAY;
+ case Irrm_PREPARE_SHORTER: return S390_BFP_ROUND_PREPARE_SHORT;
}
vpanic("decode_bfp_rounding_mode");
}
({ \
UInt cc; \
switch (decode_bfp_rounding_mode(cc_dep2)) { \
+ case S390_BFP_ROUND_NEAREST_AWAY: \
+ cc = S390_CC_FOR_BFP_CONVERT_AUX(opcode,cc_dep1,1); \
+ break; \
+ case S390_BFP_ROUND_PREPARE_SHORT: \
+ cc = S390_CC_FOR_BFP_CONVERT_AUX(opcode,cc_dep1,3); \
+ break; \
case S390_BFP_ROUND_NEAREST_EVEN: \
cc = S390_CC_FOR_BFP_CONVERT_AUX(opcode,cc_dep1,4); \
break; \
({ \
UInt cc; \
switch (decode_bfp_rounding_mode(cc_dep2)) { \
+ case S390_BFP_ROUND_NEAREST_AWAY: \
+ cc = S390_CC_FOR_BFP_UCONVERT_AUX(opcode,cc_dep1,1); \
+ break; \
+ case S390_BFP_ROUND_PREPARE_SHORT: \
+ cc = S390_CC_FOR_BFP_UCONVERT_AUX(opcode,cc_dep1,3); \
+ break; \
case S390_BFP_ROUND_NEAREST_EVEN: \
cc = S390_CC_FOR_BFP_UCONVERT_AUX(opcode,cc_dep1,4); \
break; \
s390_cc_thunk_put3 for rationale. */ \
cc_dep2 = cc_dep2 ^ cc_ndep; \
switch (decode_bfp_rounding_mode(cc_ndep)) { \
+ case S390_BFP_ROUND_NEAREST_AWAY: \
+ cc = S390_CC_FOR_BFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,1); \
+ break; \
+ case S390_BFP_ROUND_PREPARE_SHORT: \
+ cc = S390_CC_FOR_BFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,3); \
+ break; \
case S390_BFP_ROUND_NEAREST_EVEN: \
cc = S390_CC_FOR_BFP128_CONVERT_AUX(opcode,cc_dep1,cc_dep2,4); \
break; \
s390_cc_thunk_put3 for rationale. */ \
cc_dep2 = cc_dep2 ^ cc_ndep; \
switch (decode_bfp_rounding_mode(cc_ndep)) { \
+ case S390_BFP_ROUND_NEAREST_AWAY: \
+ cc = S390_CC_FOR_BFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,1); \
+ break; \
+ case S390_BFP_ROUND_PREPARE_SHORT: \
+ cc = S390_CC_FOR_BFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,3); \
+ cc = S390_CC_FOR_BFP_UCONVERT_AUX(opcode,cc_dep1,3); \
+ break; \
case S390_BFP_ROUND_NEAREST_EVEN: \
cc = S390_CC_FOR_BFP128_UCONVERT_AUX(opcode,cc_dep1,cc_dep2,4); \
break; \