@@ -2406,7 +2406,8 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
2406
2406
addLegalFPImmediate(APFloat::getZero(APFloat::BFloat()));
2407
2407
}
2408
2408
2409
- if (!Subtarget.useSoftFloat() && Subtarget.hasBF16()) {
2409
+ if (!Subtarget.useSoftFloat() && Subtarget.hasBF16() &&
2410
+ Subtarget.useAVX512Regs()) {
2410
2411
addRegisterClass(MVT::v32bf16, &X86::VR512RegClass);
2411
2412
setF16Action(MVT::v32bf16, Expand);
2412
2413
for (unsigned Opc : {ISD::FADD, ISD::FSUB, ISD::FMUL, ISD::FDIV})
@@ -2419,27 +2420,23 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
2419
2420
}
2420
2421
2421
2422
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);
2443
2440
}
2444
2441
}
2445
2442
0 commit comments