Skip to content

Commit c99bff3

Browse files
committed
hoist xxspltiw out of loop
1 parent 6ff3fef commit c99bff3

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

llvm/lib/Target/PowerPC/PPCTargetMachine.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,8 @@ void PPCPassConfig::addMachineSSAOptimization() {
561561

562562
void PPCPassConfig::addPreRegAlloc() {
563563
if (getOptLevel() != CodeGenOptLevel::None) {
564-
insertPass(VSXFMAMutateEarly ? &RegisterCoalescerID : &MachineSchedulerID,
564+
insertPass(VSXFMAMutateEarly ? &TwoAddressInstructionPassID
565+
: &MachineSchedulerID,
565566
&PPCVSXFMAMutateID);
566567
}
567568

llvm/test/CodeGen/PowerPC/vsx-fma-m-early.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,14 @@ declare <4 x float> @llvm.fma.v4f32(<4 x float>, <4 x float>, <4 x float>)
4646
; CHECK64-M-NEXT: bltlr cr0
4747
; CHECK64-M-NEXT: # %bb.1: # %for.body.preheader
4848
; CHECK64-M-NEXT: xxspltiw vs0, 1069066811
49+
; CHECK64-M-NEXT: xxspltiw vs1, 1170469888
4950
; CHECK64-M-NEXT: mtctr r5
5051
; CHECK64-M-NEXT: li r5, 0
5152
; CHECK64-M-NEXT: {{.*}}align 5
5253
; CHECK64-M-NEXT: [[L2:.*]]: # %for.body
5354
; CHECK64-M-NEXT: # =>This Inner Loop Header: Depth=1
54-
; CHECK64-M-NEXT: lxvx vs1, r4, r5
55-
; CHECK64-M-NEXT: xxspltiw vs2, 1170469888
56-
; CHECK64-M-NEXT: xvmaddasp vs2, vs1, vs0
55+
; CHECK64-M-NEXT: lxvx vs2, r4, r5
56+
; CHECK64-M-NEXT: xvmaddmsp vs2, vs0, vs1
5757
; CHECK64-M-NEXT: stxvx vs2, r3, r5
5858
; CHECK64-M-NEXT: addi r5, r5, 16
5959
; CHECK64-M-NEXT: bdnz [[L2]]
@@ -67,17 +67,17 @@ declare <4 x float> @llvm.fma.v4f32(<4 x float>, <4 x float>, <4 x float>)
6767
; CHECK32-M-NEXT: blelr cr0
6868
; CHECK32-M-NEXT: # %bb.1: # %for.body.preheader
6969
; CHECK32-M-NEXT: xxspltiw vs0, 1069066811
70+
; CHECK32-M-NEXT: xxspltiw vs1, 1170469888
7071
; CHECK32-M-NEXT: li r6, 0
7172
; CHECK32-M-NEXT: li r7, 0
7273
; CHECK32-M-NEXT: .align 4
7374
; CHECK32-M-NEXT: L..BB0_2: # %for.body
7475
; CHECK32-M-NEXT: # =>This Inner Loop Header: Depth=1
7576
; CHECK32-M-NEXT: slwi r8, r7, 4
76-
; CHECK32-M-NEXT: xxspltiw vs2, 1170469888
7777
; CHECK32-M-NEXT: addic r7, r7, 1
7878
; CHECK32-M-NEXT: addze r6, r6
79-
; CHECK32-M-NEXT: lxvx vs1, r4, r8
80-
; CHECK32-M-NEXT: xvmaddasp vs2, vs1, vs0
79+
; CHECK32-M-NEXT: lxvx vs2, r4, r8
80+
; CHECK32-M-NEXT: xvmaddmsp vs2, vs0, vs1
8181
; CHECK32-M-NEXT: stxvx vs2, r3, r8
8282
; CHECK32-M-NEXT: xor r8, r7, r5
8383
; CHECK32-M-NEXT: or. r8, r8, r6

0 commit comments

Comments
 (0)