Skip to content

Commit 4bbf278

Browse files
committed
change test case based on new behavious
1 parent 36ee560 commit 4bbf278

File tree

5 files changed

+12
-95
lines changed

5 files changed

+12
-95
lines changed

llvm/lib/Target/PowerPC/PPCMIPeephole.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1292,6 +1292,10 @@ bool PPCMIPeephole::simplifyCode() {
12921292
unsigned MB = MI.getOperand(3).getImm();
12931293
unsigned ME = MI.getOperand(4).getImm();
12941294

1295+
// LBARX already sets the upper 24 bits of the destination register
1296+
// to zero. If the register is cleared to zero in the upper 24 bits
1297+
// using RLWINM later, we eliminate the RLWINM. Same applies to
1298+
// LHARX.
12951299
if (SH == 0 && ME == 31 &&
12961300
((MB == 24 && Opcode == PPC::LBARX) ||
12971301
(MB == 16 && Opcode == PPC::LHARX))) {

llvm/test/CodeGen/PowerPC/PR35812-neg-cmpxchg.ll

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ define signext i32 @main() nounwind {
1818
; CHECK-NEXT: sth 3, 46(1)
1919
; CHECK-NEXT: addi 3, 1, 46
2020
; CHECK-NEXT: lharx 4, 0, 3
21-
; CHECK-NEXT: clrlwi 4, 4, 16
2221
; CHECK-NEXT: cmplwi 4, 33059
2322
; CHECK-NEXT: bne 0, .LBB0_4
2423
; CHECK-NEXT: # %bb.1: # %cmpxchg.fencedstore
@@ -32,7 +31,6 @@ define signext i32 @main() nounwind {
3231
; CHECK-NEXT: # %bb.3: # %cmpxchg.releasedload
3332
; CHECK-NEXT: #
3433
; CHECK-NEXT: lharx 5, 0, 3
35-
; CHECK-NEXT: clrlwi 5, 5, 16
3634
; CHECK-NEXT: cmplwi 5, 33059
3735
; CHECK-NEXT: beq 0, .LBB0_2
3836
; CHECK-NEXT: .LBB0_4: # %cmpxchg.nostore

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

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4346,8 +4346,7 @@ define dso_local void @test_compare_and_swap() local_unnamed_addr #0 {
43464346
; CHECK-NEXT: lbz 7, uc@toc@l(3)
43474347
; CHECK-NEXT: lbz 8, sc@toc@l(4)
43484348
; CHECK-NEXT: lbarx 5, 0, 6
4349-
; CHECK-NEXT: clrlwi 9, 5, 24
4350-
; CHECK-NEXT: cmplw 9, 7
4349+
; CHECK-NEXT: cmplw 5, 7
43514350
; CHECK-NEXT: bne 0, .LBB3_4
43524351
; CHECK-NEXT: # %bb.1: # %cmpxchg.fencedstore276
43534352
; CHECK-NEXT: sync
@@ -4359,17 +4358,15 @@ define dso_local void @test_compare_and_swap() local_unnamed_addr #0 {
43594358
; CHECK-NEXT: # %bb.3: # %cmpxchg.releasedload274
43604359
; CHECK-NEXT: #
43614360
; CHECK-NEXT: lbarx 5, 0, 6
4362-
; CHECK-NEXT: clrlwi 9, 5, 24
4363-
; CHECK-NEXT: cmplw 9, 7
4361+
; CHECK-NEXT: cmplw 5, 7
43644362
; CHECK-NEXT: beq 0, .LBB3_2
43654363
; CHECK-NEXT: .LBB3_4: # %cmpxchg.nostore272
43664364
; CHECK-NEXT: addi 7, 3, uc@toc@l
43674365
; CHECK-NEXT: lwsync
43684366
; CHECK-NEXT: stb 5, sc@toc@l(4)
43694367
; CHECK-NEXT: lbz 9, uc@toc@l(3)
43704368
; CHECK-NEXT: lbarx 8, 0, 7
4371-
; CHECK-NEXT: clrlwi 10, 8, 24
4372-
; CHECK-NEXT: cmplw 10, 9
4369+
; CHECK-NEXT: cmplw 8, 9
43734370
; CHECK-NEXT: bne 0, .LBB3_8
43744371
; CHECK-NEXT: # %bb.5: # %cmpxchg.fencedstore257
43754372
; CHECK-NEXT: sync
@@ -4382,8 +4379,7 @@ define dso_local void @test_compare_and_swap() local_unnamed_addr #0 {
43824379
; CHECK-NEXT: # %bb.7: # %cmpxchg.releasedload255
43834380
; CHECK-NEXT: #
43844381
; CHECK-NEXT: lbarx 8, 0, 7
4385-
; CHECK-NEXT: clrlwi 10, 8, 24
4386-
; CHECK-NEXT: cmplw 10, 9
4382+
; CHECK-NEXT: cmplw 8, 9
43874383
; CHECK-NEXT: beq 0, .LBB3_6
43884384
; CHECK-NEXT: .LBB3_8: # %cmpxchg.nostore253
43894385
; CHECK-NEXT: addis 5, 2, ss@toc@ha
@@ -4393,8 +4389,7 @@ define dso_local void @test_compare_and_swap() local_unnamed_addr #0 {
43934389
; CHECK-NEXT: lbz 11, sc@toc@l(4)
43944390
; CHECK-NEXT: addi 8, 5, ss@toc@l
43954391
; CHECK-NEXT: lharx 9, 0, 8
4396-
; CHECK-NEXT: clrlwi 12, 9, 16
4397-
; CHECK-NEXT: cmplw 12, 10
4392+
; CHECK-NEXT: cmplw 9, 10
43984393
; CHECK-NEXT: bne 0, .LBB3_12
43994394
; CHECK-NEXT: # %bb.9: # %cmpxchg.fencedstore238
44004395
; CHECK-NEXT: extsb 11, 11
@@ -4408,8 +4403,7 @@ define dso_local void @test_compare_and_swap() local_unnamed_addr #0 {
44084403
; CHECK-NEXT: # %bb.11: # %cmpxchg.releasedload236
44094404
; CHECK-NEXT: #
44104405
; CHECK-NEXT: lharx 9, 0, 8
4411-
; CHECK-NEXT: clrlwi 12, 9, 16
4412-
; CHECK-NEXT: cmplw 12, 10
4406+
; CHECK-NEXT: cmplw 9, 10
44134407
; CHECK-NEXT: beq 0, .LBB3_10
44144408
; CHECK-NEXT: .LBB3_12: # %cmpxchg.nostore234
44154409
; CHECK-NEXT: lwsync
@@ -4419,8 +4413,7 @@ define dso_local void @test_compare_and_swap() local_unnamed_addr #0 {
44194413
; CHECK-NEXT: lbz 12, sc@toc@l(4)
44204414
; CHECK-NEXT: addi 9, 5, us@toc@l
44214415
; CHECK-NEXT: lharx 10, 0, 9
4422-
; CHECK-NEXT: clrlwi 0, 10, 16
4423-
; CHECK-NEXT: cmplw 0, 11
4416+
; CHECK-NEXT: cmplw 10, 11
44244417
; CHECK-NEXT: bne 0, .LBB3_16
44254418
; CHECK-NEXT: # %bb.13: # %cmpxchg.fencedstore219
44264419
; CHECK-NEXT: extsb 12, 12
@@ -4434,8 +4427,7 @@ define dso_local void @test_compare_and_swap() local_unnamed_addr #0 {
44344427
; CHECK-NEXT: # %bb.15: # %cmpxchg.releasedload217
44354428
; CHECK-NEXT: #
44364429
; CHECK-NEXT: lharx 10, 0, 9
4437-
; CHECK-NEXT: clrlwi 0, 10, 16
4438-
; CHECK-NEXT: cmplw 0, 11
4430+
; CHECK-NEXT: cmplw 10, 11
44394431
; CHECK-NEXT: beq 0, .LBB3_14
44404432
; CHECK-NEXT: .LBB3_16: # %cmpxchg.nostore215
44414433
; CHECK-NEXT: lwsync
@@ -4535,7 +4527,6 @@ define dso_local void @test_compare_and_swap() local_unnamed_addr #0 {
45354527
; CHECK-NEXT: lbz 30, uc@toc@l(3)
45364528
; CHECK-NEXT: lbz 29, sc@toc@l(4)
45374529
; CHECK-NEXT: lbarx 28, 0, 6
4538-
; CHECK-NEXT: clrlwi 28, 28, 24
45394530
; CHECK-NEXT: cmplw 28, 30
45404531
; CHECK-NEXT: bne 0, .LBB3_36
45414532
; CHECK-NEXT: # %bb.33: # %cmpxchg.fencedstore124
@@ -4548,7 +4539,6 @@ define dso_local void @test_compare_and_swap() local_unnamed_addr #0 {
45484539
; CHECK-NEXT: # %bb.35: # %cmpxchg.releasedload122
45494540
; CHECK-NEXT: #
45504541
; CHECK-NEXT: lbarx 28, 0, 6
4551-
; CHECK-NEXT: clrlwi 28, 28, 24
45524542
; CHECK-NEXT: cmplw 28, 30
45534543
; CHECK-NEXT: beq 0, .LBB3_34
45544544
; CHECK-NEXT: .LBB3_36: # %cmpxchg.nostore120
@@ -4566,7 +4556,6 @@ define dso_local void @test_compare_and_swap() local_unnamed_addr #0 {
45664556
; CHECK-NEXT: stw 6, ui@toc@l(5)
45674557
; CHECK-NEXT: lbz 6, uc@toc@l(3)
45684558
; CHECK-NEXT: lbarx 29, 0, 7
4569-
; CHECK-NEXT: clrlwi 29, 29, 24
45704559
; CHECK-NEXT: cmplw 29, 6
45714560
; CHECK-NEXT: bne 0, .LBB3_42
45724561
; CHECK-NEXT: # %bb.39: # %cmpxchg.fencedstore105
@@ -4579,7 +4568,6 @@ define dso_local void @test_compare_and_swap() local_unnamed_addr #0 {
45794568
; CHECK-NEXT: # %bb.41: # %cmpxchg.releasedload103
45804569
; CHECK-NEXT: #
45814570
; CHECK-NEXT: lbarx 29, 0, 7
4582-
; CHECK-NEXT: clrlwi 29, 29, 24
45834571
; CHECK-NEXT: cmplw 29, 6
45844572
; CHECK-NEXT: beq 0, .LBB3_40
45854573
; CHECK-NEXT: .LBB3_42: # %cmpxchg.nostore101
@@ -4597,7 +4585,6 @@ define dso_local void @test_compare_and_swap() local_unnamed_addr #0 {
45974585
; CHECK-NEXT: stw 6, ui@toc@l(5)
45984586
; CHECK-NEXT: lbz 6, uc@toc@l(3)
45994587
; CHECK-NEXT: lharx 30, 0, 8
4600-
; CHECK-NEXT: clrlwi 30, 30, 16
46014588
; CHECK-NEXT: cmplw 30, 6
46024589
; CHECK-NEXT: bne 0, .LBB3_48
46034590
; CHECK-NEXT: # %bb.45: # %cmpxchg.fencedstore86
@@ -4612,7 +4599,6 @@ define dso_local void @test_compare_and_swap() local_unnamed_addr #0 {
46124599
; CHECK-NEXT: # %bb.47: # %cmpxchg.releasedload84
46134600
; CHECK-NEXT: #
46144601
; CHECK-NEXT: lharx 30, 0, 8
4615-
; CHECK-NEXT: clrlwi 30, 30, 16
46164602
; CHECK-NEXT: cmplw 30, 6
46174603
; CHECK-NEXT: beq 0, .LBB3_46
46184604
; CHECK-NEXT: .LBB3_48: # %cmpxchg.nostore82
@@ -4630,7 +4616,6 @@ define dso_local void @test_compare_and_swap() local_unnamed_addr #0 {
46304616
; CHECK-NEXT: stw 6, ui@toc@l(5)
46314617
; CHECK-NEXT: lbz 6, uc@toc@l(3)
46324618
; CHECK-NEXT: lharx 8, 0, 9
4633-
; CHECK-NEXT: clrlwi 8, 8, 16
46344619
; CHECK-NEXT: cmplw 8, 6
46354620
; CHECK-NEXT: bne 0, .LBB3_54
46364621
; CHECK-NEXT: # %bb.51: # %cmpxchg.fencedstore67
@@ -4645,7 +4630,6 @@ define dso_local void @test_compare_and_swap() local_unnamed_addr #0 {
46454630
; CHECK-NEXT: # %bb.53: # %cmpxchg.releasedload65
46464631
; CHECK-NEXT: #
46474632
; CHECK-NEXT: lharx 8, 0, 9
4648-
; CHECK-NEXT: clrlwi 8, 8, 16
46494633
; CHECK-NEXT: cmplw 8, 6
46504634
; CHECK-NEXT: beq 0, .LBB3_52
46514635
; CHECK-NEXT: .LBB3_54: # %cmpxchg.nostore63

0 commit comments

Comments
 (0)