================ @@ -6769,11 +6898,20 @@ SystemZTargetLowering::LowerOperationWrapper(SDNode *N, break; } case ISD::BITCAST: { + SDLoc DL(N); SDValue Src = N->getOperand(0); - if (N->getValueType(0) == MVT::i128 && Src.getValueType() == MVT::f128 && - !useSoftFloat()) { - SDLoc DL(N); + EVT SrcVT = Src.getValueType(); + EVT ResVT = N->getValueType(0); + if (ResVT == MVT::i128 && SrcVT == MVT::f128 && !useSoftFloat()) Results.push_back(expandBitCastF128ToI128(DAG, Src, DL)); + else if (SrcVT == MVT::i16 && ResVT == MVT::f16) { ---------------- JonPsson1 wrote:
Wrapping all setXXXAction() calls for f16 with a guard against soft-float, which should make sure that no custom handlings that emit vector / fp instructions are reached. Soft-float fails with calls to non-existing library functions it seems, including calls to the conversion functions we are now using, except with args in GPRs instead. https://github.com/llvm/llvm-project/pull/109164 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits