@@ -1001,6 +1001,16 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
10011001    setOperationAction(ISD::ATOMIC_LOAD_FMIN, MVT::f32, LibCall);
10021002    setOperationAction(ISD::ATOMIC_LOAD_FMIN, MVT::f64, LibCall);
10031003    setOperationAction(ISD::ATOMIC_LOAD_FMIN, MVT::bf16, LibCall);
1004+ 
1005+     setOperationAction(ISD::ATOMIC_LOAD_FMAXIMUM, MVT::f16, LibCall);
1006+     setOperationAction(ISD::ATOMIC_LOAD_FMAXIMUM, MVT::f32, LibCall);
1007+     setOperationAction(ISD::ATOMIC_LOAD_FMAXIMUM, MVT::f64, LibCall);
1008+     setOperationAction(ISD::ATOMIC_LOAD_FMAXIMUM, MVT::bf16, LibCall);
1009+ 
1010+     setOperationAction(ISD::ATOMIC_LOAD_FMINIMUM, MVT::f16, LibCall);
1011+     setOperationAction(ISD::ATOMIC_LOAD_FMINIMUM, MVT::f32, LibCall);
1012+     setOperationAction(ISD::ATOMIC_LOAD_FMINIMUM, MVT::f64, LibCall);
1013+     setOperationAction(ISD::ATOMIC_LOAD_FMINIMUM, MVT::bf16, LibCall);
10041014  }
10051015
10061016  if (Subtarget->hasLSE128()) {
@@ -27991,7 +28001,9 @@ AArch64TargetLowering::shouldExpandAtomicRMWInIR(AtomicRMWInst *AI) const {
2799128001  // If LSFE available, use atomic FP instructions in preference to expansion
2799228002  if (Subtarget->hasLSFE() && (AI->getOperation() == AtomicRMWInst::FAdd ||
2799328003                               AI->getOperation() == AtomicRMWInst::FMax ||
27994-                                AI->getOperation() == AtomicRMWInst::FMin))
28004+                                AI->getOperation() == AtomicRMWInst::FMin ||
28005+                                AI->getOperation() == AtomicRMWInst::FMaximum ||
28006+                                AI->getOperation() == AtomicRMWInst::FMinimum))
2799528007    return AtomicExpansionKind::None;
2799628008
2799728009  // Nand is not supported in LSE.
0 commit comments