Skip to content

Commit b4c487a

Browse files
committed
fixup! Also add support for lowering to LDBFADD/LDBFMAX/LDBFMIN
1 parent 21d6ac7 commit b4c487a

File tree

7 files changed

+1060
-96
lines changed

7 files changed

+1060
-96
lines changed

llvm/lib/Target/AArch64/AArch64ISelLowering.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -979,14 +979,17 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
979979
setOperationAction(ISD::ATOMIC_LOAD_FADD, MVT::f16, LibCall);
980980
setOperationAction(ISD::ATOMIC_LOAD_FADD, MVT::f32, LibCall);
981981
setOperationAction(ISD::ATOMIC_LOAD_FADD, MVT::f64, LibCall);
982+
setOperationAction(ISD::ATOMIC_LOAD_FADD, MVT::bf16, LibCall);
982983

983984
setOperationAction(ISD::ATOMIC_LOAD_FMAX, MVT::f16, LibCall);
984985
setOperationAction(ISD::ATOMIC_LOAD_FMAX, MVT::f32, LibCall);
985986
setOperationAction(ISD::ATOMIC_LOAD_FMAX, MVT::f64, LibCall);
987+
setOperationAction(ISD::ATOMIC_LOAD_FMAX, MVT::bf16, LibCall);
986988

987989
setOperationAction(ISD::ATOMIC_LOAD_FMIN, MVT::f16, LibCall);
988990
setOperationAction(ISD::ATOMIC_LOAD_FMIN, MVT::f32, LibCall);
989991
setOperationAction(ISD::ATOMIC_LOAD_FMIN, MVT::f64, LibCall);
992+
setOperationAction(ISD::ATOMIC_LOAD_FMIN, MVT::bf16, LibCall);
990993
}
991994

992995
if (Subtarget->hasLSE128()) {

llvm/lib/Target/AArch64/AArch64InstrAtomics.td

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -548,9 +548,13 @@ defm atomic_load_fmin : binary_atomic_op_fp<atomic_load_fmin>;
548548
defm atomic_load_fmax : binary_atomic_op_fp<atomic_load_fmax>;
549549

550550
let Predicates = [HasLSFE] in {
551-
defm : LDFPOPregister_patterns<"LDFADD", "atomic_load_fadd">;
552-
defm : LDFPOPregister_patterns<"LDFMAX", "atomic_load_fmax">;
553-
defm : LDFPOPregister_patterns<"LDFMIN", "atomic_load_fmin">;
551+
defm : LDFPOPregister_patterns<"LDFADD", "atomic_load_fadd">;
552+
defm : LDFPOPregister_patterns<"LDFMAXNM", "atomic_load_fmax">;
553+
defm : LDFPOPregister_patterns<"LDFMINNM", "atomic_load_fmin">;
554+
555+
defm : LDBFPOPregister_patterns<"LDBFADD", "atomic_load_fadd">;
556+
defm : LDBFPOPregister_patterns<"LDBFMAXNM", "atomic_load_fmax">;
557+
defm : LDBFPOPregister_patterns<"LDBFMINNM", "atomic_load_fmin">;
554558
}
555559

556560
// v8.9a/v9.4a FEAT_LRCPC patterns

llvm/lib/Target/AArch64/AArch64InstrFormats.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12509,6 +12509,10 @@ multiclass LDFPOPregister_patterns<string inst, string op> {
1250912509
defm : LDFPOPregister_patterns_ord<inst, "D", op, f64, (f64 FPR64:$Rm)>;
1251012510
}
1251112511

12512+
multiclass LDBFPOPregister_patterns<string inst, string op> {
12513+
defm : LDFPOPregister_patterns_ord<inst, "", op, bf16, (bf16 FPR16:$Rm)>;
12514+
}
12515+
1251212516
let Predicates = [HasLSE] in
1251312517
multiclass CASregister_patterns_ord_dag<string inst, string suffix, string op,
1251412518
ValueType vt, dag OLD, dag NEW> {

llvm/lib/Target/AArch64/AArch64InstrInfo.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10546,7 +10546,7 @@ let Predicates = [HasLSFE] in {
1054610546
defm LDFMAXNML : AtomicFPLoad<0b01, 0b110, "ldfmaxnml">;
1054710547
defm LDFMINNMA : AtomicFPLoad<0b10, 0b111, "ldfminnma">;
1054810548
defm LDFMINNMAL : AtomicFPLoad<0b11, 0b111, "ldfminnmal">;
10549-
defm LDFMINMN : AtomicFPLoad<0b00, 0b111, "ldfminnm">;
10549+
defm LDFMINNM : AtomicFPLoad<0b00, 0b111, "ldfminnm">;
1055010550
defm LDFMINNML : AtomicFPLoad<0b01, 0b111, "ldfminnml">;
1055110551
// BFloat16
1055210552
def LDBFADDA : BaseAtomicFPLoad<FPR16, 0b00, 0b10, 0b000, "ldbfadda">;

0 commit comments

Comments
 (0)