@@ -2406,7 +2406,8 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
24062406 addLegalFPImmediate(APFloat::getZero(APFloat::BFloat()));
24072407 }
24082408
2409- if (!Subtarget.useSoftFloat() && Subtarget.hasBF16()) {
2409+ if (!Subtarget.useSoftFloat() && Subtarget.hasBF16() &&
2410+ Subtarget.useAVX512Regs()) {
24102411 addRegisterClass(MVT::v32bf16, &X86::VR512RegClass);
24112412 setF16Action(MVT::v32bf16, Expand);
24122413 for (unsigned Opc : {ISD::FADD, ISD::FSUB, ISD::FMUL, ISD::FDIV})
@@ -2419,27 +2420,23 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
24192420 }
24202421
24212422 if (!Subtarget.useSoftFloat() && Subtarget.hasAVX10_2()) {
2422- addRegisterClass(MVT::v8bf16, &X86::VR128XRegClass);
2423- addRegisterClass(MVT::v16bf16, &X86::VR256XRegClass);
2424- addRegisterClass(MVT::v32bf16, &X86::VR512RegClass);
2425-
2426- setOperationAction(ISD::FADD, MVT::v32bf16, Legal);
2427- setOperationAction(ISD::FSUB, MVT::v32bf16, Legal);
2428- setOperationAction(ISD::FMUL, MVT::v32bf16, Legal);
2429- setOperationAction(ISD::FDIV, MVT::v32bf16, Legal);
2430- setOperationAction(ISD::FSQRT, MVT::v32bf16, Legal);
2431- setOperationAction(ISD::FMA, MVT::v32bf16, Legal);
2432- setOperationAction(ISD::SETCC, MVT::v32bf16, Custom);
2433- if (Subtarget.hasVLX()) {
2434- for (auto VT : {MVT::v8bf16, MVT::v16bf16}) {
2435- setOperationAction(ISD::FADD, VT, Legal);
2436- setOperationAction(ISD::FSUB, VT, Legal);
2437- setOperationAction(ISD::FMUL, VT, Legal);
2438- setOperationAction(ISD::FDIV, VT, Legal);
2439- setOperationAction(ISD::FSQRT, VT, Legal);
2440- setOperationAction(ISD::FMA, VT, Legal);
2441- setOperationAction(ISD::SETCC, VT, Custom);
2442- }
2423+ for (auto VT : {MVT::v8bf16, MVT::v16bf16}) {
2424+ setOperationAction(ISD::FADD, VT, Legal);
2425+ setOperationAction(ISD::FSUB, VT, Legal);
2426+ setOperationAction(ISD::FMUL, VT, Legal);
2427+ setOperationAction(ISD::FDIV, VT, Legal);
2428+ setOperationAction(ISD::FSQRT, VT, Legal);
2429+ setOperationAction(ISD::FMA, VT, Legal);
2430+ setOperationAction(ISD::SETCC, VT, Custom);
2431+ }
2432+ if (Subtarget.hasAVX10_2_512()) {
2433+ setOperationAction(ISD::FADD, MVT::v32bf16, Legal);
2434+ setOperationAction(ISD::FSUB, MVT::v32bf16, Legal);
2435+ setOperationAction(ISD::FMUL, MVT::v32bf16, Legal);
2436+ setOperationAction(ISD::FDIV, MVT::v32bf16, Legal);
2437+ setOperationAction(ISD::FSQRT, MVT::v32bf16, Legal);
2438+ setOperationAction(ISD::FMA, MVT::v32bf16, Legal);
2439+ setOperationAction(ISD::SETCC, MVT::v32bf16, Custom);
24432440 }
24442441 }
24452442
0 commit comments