================ @@ -513,11 +514,37 @@ SystemZTargetLowering::SystemZTargetLowering(const TargetMachine &TM, } // Handle floating-point types. + // Promote all f16 operations to float, with some exceptions below. + for (unsigned Opc = 0; Opc < ISD::BUILTIN_OP_END; ++Opc) + setOperationAction(Opc, MVT::f16, Promote); + setOperationAction(ISD::ConstantFP, MVT::f16, Expand); + for (MVT VT : {MVT::f32, MVT::f64, MVT::f128}) { + setLoadExtAction(ISD::EXTLOAD, VT, MVT::f16, Expand); + setTruncStoreAction(VT, MVT::f16, Expand); + } + setOperationAction(ISD::LOAD, MVT::f16, Custom); + setOperationAction(ISD::ATOMIC_LOAD, MVT::f16, Custom); + setOperationAction(ISD::STORE, MVT::f16, Custom); + setOperationAction(ISD::ATOMIC_STORE, MVT::f16, Custom); + setOperationAction(ISD::FP_ROUND, MVT::f16, Custom); + setOperationAction(ISD::FP_EXTEND, MVT::f32, Custom); + setOperationAction(ISD::FP_EXTEND, MVT::f64, Custom); + setOperationAction(ISD::FP_EXTEND, MVT::f128, Custom); + for (unsigned I = MVT::FIRST_FP_VALUETYPE; I <= MVT::LAST_FP_VALUETYPE; ++I) { MVT VT = MVT::SimpleValueType(I); if (isTypeLegal(VT)) { + // No special instructions for these. + setOperationAction(ISD::FSIN, VT, Expand); + setOperationAction(ISD::FCOS, VT, Expand); + setOperationAction(ISD::FSINCOS, VT, Expand); + setOperationAction(ISD::FREM, VT, Expand); + setOperationAction(ISD::FPOW, VT, Expand); ---------------- JonPsson1 wrote:
I tried Promote but ended up with an f32 operation that was not handled further. Did not find anything like "promote and expand/re-visit", unfortunately, so I did a manual "custom-promotion" and then common-code revisited the new f32 node. As there is no support for these libcalls for f16, it seems only the corresponding llvm intrinsics need to be handled, I would assume. I started with this, but not quite sure if this is the right way or how many of these (all?) should be handled here. 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