Skip to content

Commit e1e0a88

Browse files
committed
update alignment for 32bit only
1 parent 6628f98 commit e1e0a88

File tree

9 files changed

+153
-162
lines changed

9 files changed

+153
-162
lines changed

clang/lib/Basic/Targets/PPC.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -403,11 +403,11 @@ class LLVM_LIBRARY_VISIBILITY PPC32TargetInfo : public PPCTargetInfo {
403403
PPC32TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
404404
: PPCTargetInfo(Triple, Opts) {
405405
if (Triple.isOSAIX())
406-
resetDataLayout("E-m:a-p:32:32-Fi32-i64:64-i128:128-n32");
406+
resetDataLayout("E-m:a-p:32:32-Fi32-i64:64-n32");
407407
else if (Triple.getArch() == llvm::Triple::ppcle)
408-
resetDataLayout("e-m:e-p:32:32-Fn32-i64:64-i128:128-n32");
408+
resetDataLayout("e-m:e-p:32:32-Fn32-i64:64-n32");
409409
else
410-
resetDataLayout("E-m:e-p:32:32-Fn32-i64:64-i128:128-n32");
410+
resetDataLayout("E-m:e-p:32:32-Fn32-i64:64-n32");
411411

412412
switch (getTriple().getOS()) {
413413
case llvm::Triple::Linux:

clang/test/CodeGen/target-data.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,11 @@
120120

121121
// RUN: %clang_cc1 -triple powerpc-unknown -o - -emit-llvm %s | \
122122
// RUN: FileCheck %s -check-prefix=PPC
123-
// PPC: target datalayout = "E-m:e-p:32:32-Fn32-i64:64-i128:128-n32"
123+
// PPC: target datalayout = "E-m:e-p:32:32-Fn32-i64:64-n32"
124124

125125
// RUN: %clang_cc1 -triple powerpcle-unknown -o - -emit-llvm %s | \
126126
// RUN: FileCheck %s -check-prefix=PPCLE
127-
// PPCLE: target datalayout = "e-m:e-p:32:32-Fn32-i64:64-i128:128-n32"
127+
// PPCLE: target datalayout = "e-m:e-p:32:32-Fn32-i64:64-n32"
128128

129129
// RUN: %clang_cc1 -triple powerpc64-freebsd -o - -emit-llvm %s | \
130130
// RUN: FileCheck %s -check-prefix=PPC64-FREEBSD

llvm/lib/IR/AutoUpgrade.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5559,7 +5559,7 @@ std::string llvm::UpgradeDataLayoutString(StringRef DL, StringRef TT) {
55595559
return Res;
55605560
}
55615561

5562-
if (T.isSPARC() || (T.isMIPS64() && !DL.contains("m:m")) || T.isPPC()) {
5562+
if (T.isSPARC() || (T.isMIPS64() && !DL.contains("m:m")) || T.isPPC64()) {
55635563
// Mips64 with o32 ABI did not add "-i128:128".
55645564
// Add "-i128:128"
55655565
std::string I64 = "-i64:64";

llvm/lib/Target/PowerPC/PPCTargetMachine.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,12 +188,9 @@ static std::string getDataLayoutString(const Triple &T) {
188188
// documentation are wrong; these are correct (i.e. "what gcc does").
189189
Ret += "-i64:64";
190190

191-
// Alignment for 128 bit integers.
192-
Ret += "-i128:128";
193-
194191
// PPC64 has 32 and 64 bit registers, PPC32 has only 32 bit ones.
195192
if (is64Bit)
196-
Ret += "-n32:64";
193+
Ret += "-i128:128-n32:64";
197194
else
198195
Ret += "-n32";
199196

llvm/test/CodeGen/PowerPC/all-atomics.ll

Lines changed: 65 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -509,31 +509,31 @@ define dso_local void @test_op_ignore() local_unnamed_addr #0 {
509509
; AIX32-LABEL: test_op_ignore:
510510
; AIX32: # %bb.0: # %entry
511511
; AIX32-NEXT: mflr 0
512-
; AIX32-NEXT: stwu 1, -176(1)
512+
; AIX32-NEXT: stwu 1, -160(1)
513513
; AIX32-NEXT: lwz 3, L..C0(2) # @sc
514-
; AIX32-NEXT: stw 0, 184(1)
514+
; AIX32-NEXT: stw 0, 168(1)
515515
; AIX32-NEXT: rlwinm 4, 3, 3, 27, 28
516-
; AIX32-NEXT: stw 15, 108(1) # 4-byte Folded Spill
517-
; AIX32-NEXT: stw 26, 152(1) # 4-byte Folded Spill
518-
; AIX32-NEXT: stw 28, 160(1) # 4-byte Folded Spill
516+
; AIX32-NEXT: stw 15, 92(1) # 4-byte Folded Spill
517+
; AIX32-NEXT: stw 26, 136(1) # 4-byte Folded Spill
518+
; AIX32-NEXT: stw 28, 144(1) # 4-byte Folded Spill
519519
; AIX32-NEXT: li 15, 1
520520
; AIX32-NEXT: rlwinm 28, 3, 0, 0, 29
521521
; AIX32-NEXT: li 3, 255
522522
; AIX32-NEXT: xori 26, 4, 24
523-
; AIX32-NEXT: stw 16, 112(1) # 4-byte Folded Spill
524-
; AIX32-NEXT: stw 17, 116(1) # 4-byte Folded Spill
525-
; AIX32-NEXT: stw 18, 120(1) # 4-byte Folded Spill
526-
; AIX32-NEXT: stw 19, 124(1) # 4-byte Folded Spill
527-
; AIX32-NEXT: stw 20, 128(1) # 4-byte Folded Spill
528-
; AIX32-NEXT: stw 21, 132(1) # 4-byte Folded Spill
529-
; AIX32-NEXT: stw 22, 136(1) # 4-byte Folded Spill
530-
; AIX32-NEXT: stw 23, 140(1) # 4-byte Folded Spill
531-
; AIX32-NEXT: stw 24, 144(1) # 4-byte Folded Spill
532-
; AIX32-NEXT: stw 25, 148(1) # 4-byte Folded Spill
533-
; AIX32-NEXT: stw 27, 156(1) # 4-byte Folded Spill
534-
; AIX32-NEXT: stw 29, 164(1) # 4-byte Folded Spill
535-
; AIX32-NEXT: stw 30, 168(1) # 4-byte Folded Spill
536-
; AIX32-NEXT: stw 31, 172(1) # 4-byte Folded Spill
523+
; AIX32-NEXT: stw 16, 96(1) # 4-byte Folded Spill
524+
; AIX32-NEXT: stw 17, 100(1) # 4-byte Folded Spill
525+
; AIX32-NEXT: stw 18, 104(1) # 4-byte Folded Spill
526+
; AIX32-NEXT: stw 19, 108(1) # 4-byte Folded Spill
527+
; AIX32-NEXT: stw 20, 112(1) # 4-byte Folded Spill
528+
; AIX32-NEXT: stw 21, 116(1) # 4-byte Folded Spill
529+
; AIX32-NEXT: stw 22, 120(1) # 4-byte Folded Spill
530+
; AIX32-NEXT: stw 23, 124(1) # 4-byte Folded Spill
531+
; AIX32-NEXT: stw 24, 128(1) # 4-byte Folded Spill
532+
; AIX32-NEXT: stw 25, 132(1) # 4-byte Folded Spill
533+
; AIX32-NEXT: stw 27, 140(1) # 4-byte Folded Spill
534+
; AIX32-NEXT: stw 29, 148(1) # 4-byte Folded Spill
535+
; AIX32-NEXT: stw 30, 152(1) # 4-byte Folded Spill
536+
; AIX32-NEXT: stw 31, 156(1) # 4-byte Folded Spill
537537
; AIX32-NEXT: sync
538538
; AIX32-NEXT: slw 29, 15, 26
539539
; AIX32-NEXT: slw 3, 3, 26
@@ -906,8 +906,8 @@ define dso_local void @test_op_ignore() local_unnamed_addr #0 {
906906
; AIX32-NEXT: bl .__atomic_fetch_xor_8[PR]
907907
; AIX32-NEXT: nop
908908
; AIX32-NEXT: lwz 31, L..C8(2) # @u128
909-
; AIX32-NEXT: addi 30, 1, 80
910-
; AIX32-NEXT: addi 29, 1, 64
909+
; AIX32-NEXT: addi 30, 1, 72
910+
; AIX32-NEXT: addi 29, 1, 56
911911
; AIX32-NEXT: lwz 5, 12(31)
912912
; AIX32-NEXT: lwz 4, 8(31)
913913
; AIX32-NEXT: lwz 6, 4(31)
@@ -916,32 +916,32 @@ define dso_local void @test_op_ignore() local_unnamed_addr #0 {
916916
; AIX32-NEXT: L..BB0_49: # %atomicrmw.start2
917917
; AIX32-NEXT: #
918918
; AIX32-NEXT: xori 3, 5, 1
919-
; AIX32-NEXT: stw 7, 80(1)
920-
; AIX32-NEXT: stw 7, 64(1)
919+
; AIX32-NEXT: stw 7, 72(1)
920+
; AIX32-NEXT: stw 7, 56(1)
921921
; AIX32-NEXT: li 7, 5
922-
; AIX32-NEXT: stw 3, 76(1)
922+
; AIX32-NEXT: stw 3, 68(1)
923923
; AIX32-NEXT: li 3, 16
924924
; AIX32-NEXT: li 8, 5
925-
; AIX32-NEXT: stw 6, 84(1)
926-
; AIX32-NEXT: stw 4, 88(1)
927-
; AIX32-NEXT: stw 5, 92(1)
928-
; AIX32-NEXT: stw 4, 72(1)
929-
; AIX32-NEXT: stw 6, 68(1)
925+
; AIX32-NEXT: stw 6, 76(1)
926+
; AIX32-NEXT: stw 4, 80(1)
927+
; AIX32-NEXT: stw 5, 84(1)
928+
; AIX32-NEXT: stw 4, 64(1)
929+
; AIX32-NEXT: stw 6, 60(1)
930930
; AIX32-NEXT: mr 4, 31
931931
; AIX32-NEXT: mr 5, 30
932932
; AIX32-NEXT: mr 6, 29
933933
; AIX32-NEXT: bl .__atomic_compare_exchange[PR]
934934
; AIX32-NEXT: nop
935-
; AIX32-NEXT: lwz 5, 92(1)
936-
; AIX32-NEXT: lwz 4, 88(1)
937-
; AIX32-NEXT: lwz 6, 84(1)
938-
; AIX32-NEXT: lwz 7, 80(1)
935+
; AIX32-NEXT: lwz 5, 84(1)
936+
; AIX32-NEXT: lwz 4, 80(1)
937+
; AIX32-NEXT: lwz 6, 76(1)
938+
; AIX32-NEXT: lwz 7, 72(1)
939939
; AIX32-NEXT: cmplwi 3, 0
940940
; AIX32-NEXT: beq 0, L..BB0_49
941941
; AIX32-NEXT: # %bb.50: # %atomicrmw.end1
942942
; AIX32-NEXT: lwz 31, L..C9(2) # @s128
943-
; AIX32-NEXT: addi 30, 1, 80
944-
; AIX32-NEXT: addi 29, 1, 64
943+
; AIX32-NEXT: addi 30, 1, 72
944+
; AIX32-NEXT: addi 29, 1, 56
945945
; AIX32-NEXT: lwz 5, 12(31)
946946
; AIX32-NEXT: lwz 4, 8(31)
947947
; AIX32-NEXT: lwz 6, 4(31)
@@ -950,26 +950,26 @@ define dso_local void @test_op_ignore() local_unnamed_addr #0 {
950950
; AIX32-NEXT: L..BB0_51: # %atomicrmw.start
951951
; AIX32-NEXT: #
952952
; AIX32-NEXT: xori 3, 5, 1
953-
; AIX32-NEXT: stw 7, 80(1)
954-
; AIX32-NEXT: stw 7, 64(1)
953+
; AIX32-NEXT: stw 7, 72(1)
954+
; AIX32-NEXT: stw 7, 56(1)
955955
; AIX32-NEXT: li 7, 5
956-
; AIX32-NEXT: stw 3, 76(1)
956+
; AIX32-NEXT: stw 3, 68(1)
957957
; AIX32-NEXT: li 3, 16
958958
; AIX32-NEXT: li 8, 5
959-
; AIX32-NEXT: stw 6, 84(1)
960-
; AIX32-NEXT: stw 4, 88(1)
961-
; AIX32-NEXT: stw 5, 92(1)
962-
; AIX32-NEXT: stw 4, 72(1)
963-
; AIX32-NEXT: stw 6, 68(1)
959+
; AIX32-NEXT: stw 6, 76(1)
960+
; AIX32-NEXT: stw 4, 80(1)
961+
; AIX32-NEXT: stw 5, 84(1)
962+
; AIX32-NEXT: stw 4, 64(1)
963+
; AIX32-NEXT: stw 6, 60(1)
964964
; AIX32-NEXT: mr 4, 31
965965
; AIX32-NEXT: mr 5, 30
966966
; AIX32-NEXT: mr 6, 29
967967
; AIX32-NEXT: bl .__atomic_compare_exchange[PR]
968968
; AIX32-NEXT: nop
969-
; AIX32-NEXT: lwz 5, 92(1)
970-
; AIX32-NEXT: lwz 4, 88(1)
971-
; AIX32-NEXT: lwz 6, 84(1)
972-
; AIX32-NEXT: lwz 7, 80(1)
969+
; AIX32-NEXT: lwz 5, 84(1)
970+
; AIX32-NEXT: lwz 4, 80(1)
971+
; AIX32-NEXT: lwz 6, 76(1)
972+
; AIX32-NEXT: lwz 7, 72(1)
973973
; AIX32-NEXT: cmplwi 3, 0
974974
; AIX32-NEXT: beq 0, L..BB0_51
975975
; AIX32-NEXT: # %bb.52: # %atomicrmw.end
@@ -1156,24 +1156,24 @@ define dso_local void @test_op_ignore() local_unnamed_addr #0 {
11561156
; AIX32-NEXT: li 6, 5
11571157
; AIX32-NEXT: bl .__atomic_fetch_and_8[PR]
11581158
; AIX32-NEXT: nop
1159-
; AIX32-NEXT: lwz 31, 172(1) # 4-byte Folded Reload
1160-
; AIX32-NEXT: lwz 30, 168(1) # 4-byte Folded Reload
1161-
; AIX32-NEXT: lwz 29, 164(1) # 4-byte Folded Reload
1162-
; AIX32-NEXT: lwz 28, 160(1) # 4-byte Folded Reload
1163-
; AIX32-NEXT: lwz 27, 156(1) # 4-byte Folded Reload
1164-
; AIX32-NEXT: lwz 26, 152(1) # 4-byte Folded Reload
1165-
; AIX32-NEXT: lwz 25, 148(1) # 4-byte Folded Reload
1166-
; AIX32-NEXT: lwz 24, 144(1) # 4-byte Folded Reload
1167-
; AIX32-NEXT: lwz 23, 140(1) # 4-byte Folded Reload
1168-
; AIX32-NEXT: lwz 22, 136(1) # 4-byte Folded Reload
1169-
; AIX32-NEXT: lwz 21, 132(1) # 4-byte Folded Reload
1170-
; AIX32-NEXT: lwz 20, 128(1) # 4-byte Folded Reload
1171-
; AIX32-NEXT: lwz 19, 124(1) # 4-byte Folded Reload
1172-
; AIX32-NEXT: lwz 18, 120(1) # 4-byte Folded Reload
1173-
; AIX32-NEXT: lwz 17, 116(1) # 4-byte Folded Reload
1174-
; AIX32-NEXT: lwz 16, 112(1) # 4-byte Folded Reload
1175-
; AIX32-NEXT: lwz 15, 108(1) # 4-byte Folded Reload
1176-
; AIX32-NEXT: addi 1, 1, 176
1159+
; AIX32-NEXT: lwz 31, 156(1) # 4-byte Folded Reload
1160+
; AIX32-NEXT: lwz 30, 152(1) # 4-byte Folded Reload
1161+
; AIX32-NEXT: lwz 29, 148(1) # 4-byte Folded Reload
1162+
; AIX32-NEXT: lwz 28, 144(1) # 4-byte Folded Reload
1163+
; AIX32-NEXT: lwz 27, 140(1) # 4-byte Folded Reload
1164+
; AIX32-NEXT: lwz 26, 136(1) # 4-byte Folded Reload
1165+
; AIX32-NEXT: lwz 25, 132(1) # 4-byte Folded Reload
1166+
; AIX32-NEXT: lwz 24, 128(1) # 4-byte Folded Reload
1167+
; AIX32-NEXT: lwz 23, 124(1) # 4-byte Folded Reload
1168+
; AIX32-NEXT: lwz 22, 120(1) # 4-byte Folded Reload
1169+
; AIX32-NEXT: lwz 21, 116(1) # 4-byte Folded Reload
1170+
; AIX32-NEXT: lwz 20, 112(1) # 4-byte Folded Reload
1171+
; AIX32-NEXT: lwz 19, 108(1) # 4-byte Folded Reload
1172+
; AIX32-NEXT: lwz 18, 104(1) # 4-byte Folded Reload
1173+
; AIX32-NEXT: lwz 17, 100(1) # 4-byte Folded Reload
1174+
; AIX32-NEXT: lwz 16, 96(1) # 4-byte Folded Reload
1175+
; AIX32-NEXT: lwz 15, 92(1) # 4-byte Folded Reload
1176+
; AIX32-NEXT: addi 1, 1, 160
11771177
; AIX32-NEXT: lwz 0, 8(1)
11781178
; AIX32-NEXT: mtlr 0
11791179
; AIX32-NEXT: blr

llvm/test/CodeGen/PowerPC/ctrloop-sh.ll

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -16,41 +16,39 @@ define void @foo1(ptr %a, ptr readonly %b, ptr readonly %c) #0 {
1616
; CHECK-NEXT: addi 7, 1, 16
1717
; CHECK-NEXT: .LBB0_1: # %for.body
1818
; CHECK-NEXT: #
19-
; CHECK-NEXT: lwz 9, 4(4)
2019
; CHECK-NEXT: lwz 8, 0(4)
20+
; CHECK-NEXT: lwz 9, 4(4)
2121
; CHECK-NEXT: lwz 10, 8(4)
2222
; CHECK-NEXT: lwz 11, 12(4)
2323
; CHECK-NEXT: lwz 12, 12(5)
24-
; CHECK-NEXT: stw 9, 20(1)
25-
; CHECK-NEXT: mr 9, 7
2624
; CHECK-NEXT: stw 6, 44(1)
27-
; CHECK-NEXT: rlwimi 9, 12, 29, 28, 29
2825
; CHECK-NEXT: stw 6, 40(1)
2926
; CHECK-NEXT: stw 6, 36(1)
3027
; CHECK-NEXT: stw 6, 32(1)
3128
; CHECK-NEXT: stw 11, 28(1)
3229
; CHECK-NEXT: stw 10, 24(1)
3330
; CHECK-NEXT: clrlwi 10, 12, 27
31+
; CHECK-NEXT: stw 9, 20(1)
3432
; CHECK-NEXT: stw 8, 16(1)
35-
; CHECK-NEXT: rlwinm 12, 12, 29, 28, 29
36-
; CHECK-NEXT: lwz 8, 8(9)
37-
; CHECK-NEXT: subfic 0, 10, 32
38-
; CHECK-NEXT: lwz 11, 4(9)
39-
; CHECK-NEXT: lwz 9, 12(9)
40-
; CHECK-NEXT: srw 30, 8, 0
41-
; CHECK-NEXT: lwzx 12, 7, 12
42-
; CHECK-NEXT: slw 29, 11, 10
43-
; CHECK-NEXT: srw 11, 11, 0
44-
; CHECK-NEXT: srw 0, 9, 0
33+
; CHECK-NEXT: rlwinm 8, 12, 29, 28, 29
34+
; CHECK-NEXT: lwzux 9, 8, 7
35+
; CHECK-NEXT: subfic 12, 10, 32
36+
; CHECK-NEXT: lwz 11, 8(8)
37+
; CHECK-NEXT: slw 9, 9, 10
38+
; CHECK-NEXT: lwz 0, 4(8)
39+
; CHECK-NEXT: lwz 8, 12(8)
40+
; CHECK-NEXT: srw 30, 11, 12
41+
; CHECK-NEXT: slw 29, 0, 10
42+
; CHECK-NEXT: srw 0, 0, 12
43+
; CHECK-NEXT: srw 12, 8, 12
44+
; CHECK-NEXT: slw 11, 11, 10
4545
; CHECK-NEXT: slw 8, 8, 10
46-
; CHECK-NEXT: slw 12, 12, 10
47-
; CHECK-NEXT: or 8, 8, 0
46+
; CHECK-NEXT: stw 8, 12(3)
47+
; CHECK-NEXT: or 8, 11, 12
4848
; CHECK-NEXT: stw 8, 8(3)
49-
; CHECK-NEXT: or 8, 12, 11
50-
; CHECK-NEXT: slw 9, 9, 10
49+
; CHECK-NEXT: or 8, 9, 0
5150
; CHECK-NEXT: stw 8, 0(3)
5251
; CHECK-NEXT: or 8, 29, 30
53-
; CHECK-NEXT: stw 9, 12(3)
5452
; CHECK-NEXT: stw 8, 4(3)
5553
; CHECK-NEXT: bdnz .LBB0_1
5654
; CHECK-NEXT: # %bb.2: # %for.end
@@ -79,30 +77,30 @@ for.end: ; preds = %for.body
7977
define void @foo2(ptr %a, ptr readonly %b, ptr readonly %c) #0 {
8078
; CHECK-LABEL: foo2:
8179
; CHECK: # %bb.0: # %entry
82-
; CHECK-NEXT: stwu 1, -64(1)
83-
; CHECK-NEXT: stw 30, 56(1) # 4-byte Folded Spill
80+
; CHECK-NEXT: stwu 1, -48(1)
81+
; CHECK-NEXT: stw 30, 40(1) # 4-byte Folded Spill
8482
; CHECK-NEXT: li 6, 2048
8583
; CHECK-NEXT: mtctr 6
86-
; CHECK-NEXT: addi 6, 1, 32
84+
; CHECK-NEXT: addi 6, 1, 24
8785
; CHECK-NEXT: .LBB1_1: # %for.body
8886
; CHECK-NEXT: #
8987
; CHECK-NEXT: lwz 7, 0(4)
9088
; CHECK-NEXT: lwz 8, 4(4)
9189
; CHECK-NEXT: lwz 11, 12(5)
9290
; CHECK-NEXT: lwz 9, 8(4)
9391
; CHECK-NEXT: lwz 10, 12(4)
94-
; CHECK-NEXT: stw 8, 36(1)
92+
; CHECK-NEXT: stw 8, 28(1)
9593
; CHECK-NEXT: rlwinm 8, 11, 29, 28, 29
96-
; CHECK-NEXT: stw 7, 32(1)
94+
; CHECK-NEXT: stw 7, 24(1)
9795
; CHECK-NEXT: srawi 7, 7, 31
98-
; CHECK-NEXT: stw 10, 44(1)
96+
; CHECK-NEXT: stw 10, 36(1)
9997
; CHECK-NEXT: clrlwi 10, 11, 27
100-
; CHECK-NEXT: stw 9, 40(1)
98+
; CHECK-NEXT: stw 9, 32(1)
10199
; CHECK-NEXT: subfic 12, 10, 32
102-
; CHECK-NEXT: stw 7, 28(1)
103-
; CHECK-NEXT: stw 7, 24(1)
104100
; CHECK-NEXT: stw 7, 20(1)
105101
; CHECK-NEXT: stw 7, 16(1)
102+
; CHECK-NEXT: stw 7, 12(1)
103+
; CHECK-NEXT: stw 7, 8(1)
106104
; CHECK-NEXT: sub 7, 6, 8
107105
; CHECK-NEXT: lwz 8, 4(7)
108106
; CHECK-NEXT: lwz 9, 0(7)
@@ -124,8 +122,8 @@ define void @foo2(ptr %a, ptr readonly %b, ptr readonly %c) #0 {
124122
; CHECK-NEXT: stw 7, 4(3)
125123
; CHECK-NEXT: bdnz .LBB1_1
126124
; CHECK-NEXT: # %bb.2: # %for.end
127-
; CHECK-NEXT: lwz 30, 56(1) # 4-byte Folded Reload
128-
; CHECK-NEXT: addi 1, 1, 64
125+
; CHECK-NEXT: lwz 30, 40(1) # 4-byte Folded Reload
126+
; CHECK-NEXT: addi 1, 1, 48
129127
; CHECK-NEXT: blr
130128
entry:
131129
br label %for.body

llvm/test/CodeGen/PowerPC/pr59074.ll

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,27 +38,26 @@ define void @pr59074(ptr %0) {
3838
; LE32-NEXT: stw 7, 40(1)
3939
; LE32-NEXT: stw 7, 36(1)
4040
; LE32-NEXT: stw 8, 16(1)
41-
; LE32-NEXT: rlwinm 7, 4, 29, 28, 29
41+
; LE32-NEXT: rlwinm 9, 4, 29, 28, 29
4242
; LE32-NEXT: stxvd2x 0, 0, 5
43-
; LE32-NEXT: lwzx 5, 6, 7
44-
; LE32-NEXT: rlwimi 6, 4, 29, 28, 29
4543
; LE32-NEXT: clrlwi 4, 4, 27
46-
; LE32-NEXT: lwz 7, 8(6)
47-
; LE32-NEXT: lwz 8, 4(6)
48-
; LE32-NEXT: lwz 6, 12(6)
44+
; LE32-NEXT: lwzux 5, 9, 6
45+
; LE32-NEXT: lwz 6, 8(9)
46+
; LE32-NEXT: lwz 7, 4(9)
47+
; LE32-NEXT: lwz 8, 12(9)
4948
; LE32-NEXT: xori 9, 4, 31
5049
; LE32-NEXT: subfic 11, 4, 32
5150
; LE32-NEXT: srw 5, 5, 4
52-
; LE32-NEXT: slwi 10, 7, 1
53-
; LE32-NEXT: srw 12, 8, 4
54-
; LE32-NEXT: slw 8, 8, 11
55-
; LE32-NEXT: srw 7, 7, 4
56-
; LE32-NEXT: slw 11, 6, 11
57-
; LE32-NEXT: srw 4, 6, 4
51+
; LE32-NEXT: slwi 10, 6, 1
52+
; LE32-NEXT: srw 6, 6, 4
5853
; LE32-NEXT: slw 9, 10, 9
59-
; LE32-NEXT: or 5, 8, 5
60-
; LE32-NEXT: or 6, 11, 7
61-
; LE32-NEXT: or 7, 12, 9
54+
; LE32-NEXT: srw 10, 7, 4
55+
; LE32-NEXT: slw 7, 7, 11
56+
; LE32-NEXT: slw 11, 8, 11
57+
; LE32-NEXT: srw 4, 8, 4
58+
; LE32-NEXT: or 5, 7, 5
59+
; LE32-NEXT: or 6, 11, 6
60+
; LE32-NEXT: or 7, 10, 9
6261
; LE32-NEXT: stw 4, 12(3)
6362
; LE32-NEXT: stw 6, 8(3)
6463
; LE32-NEXT: stw 5, 0(3)

0 commit comments

Comments
 (0)