Skip to content

Commit c93d641

Browse files
Fix test expectations and code formatting
- Fix LLVM code style: use trailing parameter alignment for getMatchingSuperReg calls instead of assignment-aligned continuation - Update CHECK-FP16 expectations for atomic_load_half/bfloat: GlobalISel allocates FPR32 (s0) for GPR->FPR copies even with FullFP16, then narrows to h0 via kill annotation. The FullFP16 optimization only applies to FPR->GPR (store) direction where the value arrives in h0. - Add kill annotations to CHECK-NOFP16 load tests to match actual output Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 6f3d70f commit c93d641

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

llvm/lib/Target/AArch64/AArch64InstrInfo.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5858,8 +5858,8 @@ void AArch64InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
58585858
BuildMI(MBB, I, DL, get(AArch64::FMOVWHr), DestReg)
58595859
.addReg(SrcReg, getKillRegState(KillSrc));
58605860
} else {
5861-
MCRegister DestRegS =
5862-
RI.getMatchingSuperReg(DestReg, AArch64::hsub, &AArch64::FPR32RegClass);
5861+
MCRegister DestRegS = RI.getMatchingSuperReg(DestReg, AArch64::hsub,
5862+
&AArch64::FPR32RegClass);
58635863
BuildMI(MBB, I, DL, get(AArch64::FMOVWSr), DestRegS)
58645864
.addReg(SrcReg, getKillRegState(KillSrc));
58655865
}
@@ -5871,8 +5871,8 @@ void AArch64InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
58715871
BuildMI(MBB, I, DL, get(AArch64::FMOVHWr), DestReg)
58725872
.addReg(SrcReg, getKillRegState(KillSrc));
58735873
} else {
5874-
MCRegister SrcRegS =
5875-
RI.getMatchingSuperReg(SrcReg, AArch64::hsub, &AArch64::FPR32RegClass);
5874+
MCRegister SrcRegS = RI.getMatchingSuperReg(SrcReg, AArch64::hsub,
5875+
&AArch64::FPR32RegClass);
58765876
BuildMI(MBB, I, DL, get(AArch64::FMOVSWr), DestReg)
58775877
.addReg(SrcRegS, RegState::Undef)
58785878
.addReg(SrcReg, RegState::Implicit | getKillRegState(KillSrc));
@@ -5887,8 +5887,8 @@ void AArch64InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
58875887
BuildMI(MBB, I, DL, get(AArch64::FMOVXHr), DestReg)
58885888
.addReg(SrcReg, getKillRegState(KillSrc));
58895889
} else {
5890-
MCRegister DestRegD =
5891-
RI.getMatchingSuperReg(DestReg, AArch64::hsub, &AArch64::FPR64RegClass);
5890+
MCRegister DestRegD = RI.getMatchingSuperReg(DestReg, AArch64::hsub,
5891+
&AArch64::FPR64RegClass);
58925892
BuildMI(MBB, I, DL, get(AArch64::FMOVXDr), DestRegD)
58935893
.addReg(SrcReg, getKillRegState(KillSrc));
58945894
}
@@ -5900,8 +5900,8 @@ void AArch64InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
59005900
BuildMI(MBB, I, DL, get(AArch64::FMOVHXr), DestReg)
59015901
.addReg(SrcReg, getKillRegState(KillSrc));
59025902
} else {
5903-
MCRegister SrcRegD =
5904-
RI.getMatchingSuperReg(SrcReg, AArch64::hsub, &AArch64::FPR64RegClass);
5903+
MCRegister SrcRegD = RI.getMatchingSuperReg(SrcReg, AArch64::hsub,
5904+
&AArch64::FPR64RegClass);
59055905
BuildMI(MBB, I, DL, get(AArch64::FMOVDXr), DestReg)
59065906
.addReg(SrcRegD, RegState::Undef)
59075907
.addReg(SrcReg, RegState::Implicit | getKillRegState(KillSrc));

llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic-store-fp16.ll

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,14 @@ define half @atomic_load_half(ptr %addr) {
2727
; CHECK-NOFP16: ; %bb.0:
2828
; CHECK-NOFP16-NEXT: ldarh w8, [x0]
2929
; CHECK-NOFP16-NEXT: fmov s0, w8
30+
; CHECK-NOFP16-NEXT: ; kill: def $h0 killed $h0 killed $s0
3031
; CHECK-NOFP16-NEXT: ret
3132
;
3233
; CHECK-FP16-LABEL: atomic_load_half:
3334
; CHECK-FP16: ; %bb.0:
3435
; CHECK-FP16-NEXT: ldarh w8, [x0]
35-
; CHECK-FP16-NEXT: fmov h0, w8
36+
; CHECK-FP16-NEXT: fmov s0, w8
37+
; CHECK-FP16-NEXT: ; kill: def $h0 killed $h0 killed $s0
3638
; CHECK-FP16-NEXT: ret
3739
%ival = load atomic i16, ptr %addr acquire, align 2
3840
%val = bitcast i16 %ival to half
@@ -61,12 +63,14 @@ define bfloat @atomic_load_bfloat(ptr %addr) {
6163
; CHECK-NOFP16: ; %bb.0:
6264
; CHECK-NOFP16-NEXT: ldarh w8, [x0]
6365
; CHECK-NOFP16-NEXT: fmov s0, w8
66+
; CHECK-NOFP16-NEXT: ; kill: def $h0 killed $h0 killed $s0
6467
; CHECK-NOFP16-NEXT: ret
6568
;
6669
; CHECK-FP16-LABEL: atomic_load_bfloat:
6770
; CHECK-FP16: ; %bb.0:
6871
; CHECK-FP16-NEXT: ldarh w8, [x0]
69-
; CHECK-FP16-NEXT: fmov h0, w8
72+
; CHECK-FP16-NEXT: fmov s0, w8
73+
; CHECK-FP16-NEXT: ; kill: def $h0 killed $h0 killed $s0
7074
; CHECK-FP16-NEXT: ret
7175
%ival = load atomic i16, ptr %addr acquire, align 2
7276
%val = bitcast i16 %ival to bfloat

0 commit comments

Comments
 (0)