Skip to content

Commit 46d907a

Browse files
committed
modify test case based on the new functionality
1 parent cc66c46 commit 46d907a

File tree

2 files changed

+30
-70
lines changed

2 files changed

+30
-70
lines changed

llvm/test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll

Lines changed: 17 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,13 @@ define signext i32 @zeroEqualityTest02(ptr %x, ptr %y) {
3535
define signext i32 @zeroEqualityTest01(ptr %x, ptr %y) {
3636
; CHECK-LABEL: zeroEqualityTest01:
3737
; CHECK: # %bb.0:
38-
; CHECK-NEXT: ld 5, 0(3)
39-
; CHECK-NEXT: ld 6, 0(4)
40-
; CHECK-NEXT: cmpld 5, 6
41-
; CHECK-NEXT: bne 0, .LBB1_2
42-
; CHECK-NEXT: # %bb.1: # %loadbb1
43-
; CHECK-NEXT: ld 5, 8(3)
44-
; CHECK-NEXT: ld 4, 8(4)
45-
; CHECK-NEXT: li 3, 0
46-
; CHECK-NEXT: cmpld 5, 4
47-
; CHECK-NEXT: beqlr 0
48-
; CHECK-NEXT: .LBB1_2: # %res_block
49-
; CHECK-NEXT: li 3, 1
38+
; CHECK-NEXT: lxvd2x 34, 0, 4
39+
; CHECK-NEXT: lxvd2x 35, 0, 3
40+
; CHECK-NEXT: vcmpequb. 2, 3, 2
41+
; CHECK-NEXT: mfocrf 3, 2
42+
; CHECK-NEXT: rlwinm 3, 3, 25, 31, 31
43+
; CHECK-NEXT: cntlzw 3, 3
44+
; CHECK-NEXT: srwi 3, 3, 5
5045
; CHECK-NEXT: blr
5146
%call = tail call signext i32 @memcmp(ptr %x, ptr %y, i64 16)
5247
%not.tobool = icmp ne i32 %call, 0
@@ -85,7 +80,7 @@ define signext i32 @zeroEqualityTest03(ptr %x, ptr %y) {
8580
; Validate with > 0
8681
define signext i32 @zeroEqualityTest04() {
8782
; CHECK-LABEL: zeroEqualityTest04:
88-
; CHECK: # %bb.0: # %loadbb
83+
; CHECK: # %bb.0:
8984
; CHECK-NEXT: li 3, 0
9085
; CHECK-NEXT: blr
9186
%call = tail call signext i32 @memcmp(ptr @zeroEqualityTest02.buffer1, ptr @zeroEqualityTest02.buffer2, i64 16)
@@ -97,7 +92,7 @@ define signext i32 @zeroEqualityTest04() {
9792
; Validate with < 0
9893
define signext i32 @zeroEqualityTest05() {
9994
; CHECK-LABEL: zeroEqualityTest05:
100-
; CHECK: # %bb.0: # %loadbb
95+
; CHECK: # %bb.0:
10196
; CHECK-NEXT: li 3, 0
10297
; CHECK-NEXT: blr
10398
%call = tail call signext i32 @memcmp(ptr @zeroEqualityTest03.buffer1, ptr @zeroEqualityTest03.buffer2, i64 16)
@@ -109,7 +104,7 @@ define signext i32 @zeroEqualityTest05() {
109104
; Validate with memcmp()?:
110105
define signext i32 @equalityFoldTwoConstants() {
111106
; CHECK-LABEL: equalityFoldTwoConstants:
112-
; CHECK: # %bb.0: # %loadbb
107+
; CHECK: # %bb.0:
113108
; CHECK-NEXT: li 3, 1
114109
; CHECK-NEXT: blr
115110
%call = tail call signext i32 @memcmp(ptr @zeroEqualityTest04.buffer1, ptr @zeroEqualityTest04.buffer2, i64 16)
@@ -122,23 +117,17 @@ define signext i32 @equalityFoldOneConstant(ptr %X) {
122117
; CHECK-LABEL: equalityFoldOneConstant:
123118
; CHECK: # %bb.0:
124119
; CHECK-NEXT: li 5, 1
125-
; CHECK-NEXT: ld 4, 0(3)
120+
; CHECK-NEXT: ld 4, 8(3)
121+
; CHECK-NEXT: ld 3, 0(3)
126122
; CHECK-NEXT: rldic 5, 5, 32, 31
127-
; CHECK-NEXT: cmpld 4, 5
128-
; CHECK-NEXT: bne 0, .LBB6_2
129-
; CHECK-NEXT: # %bb.1: # %loadbb1
123+
; CHECK-NEXT: xor 3, 3, 5
130124
; CHECK-NEXT: lis 5, -32768
131-
; CHECK-NEXT: ld 4, 8(3)
132-
; CHECK-NEXT: li 3, 0
133125
; CHECK-NEXT: ori 5, 5, 1
134126
; CHECK-NEXT: rldic 5, 5, 1, 30
135-
; CHECK-NEXT: cmpld 4, 5
136-
; CHECK-NEXT: beq 0, .LBB6_3
137-
; CHECK-NEXT: .LBB6_2: # %res_block
138-
; CHECK-NEXT: li 3, 1
139-
; CHECK-NEXT: .LBB6_3: # %endblock
140-
; CHECK-NEXT: cntlzw 3, 3
141-
; CHECK-NEXT: srwi 3, 3, 5
127+
; CHECK-NEXT: xor 4, 4, 5
128+
; CHECK-NEXT: or 3, 3, 4
129+
; CHECK-NEXT: cntlzd 3, 3
130+
; CHECK-NEXT: rldicl 3, 3, 58, 63
142131
; CHECK-NEXT: blr
143132
%call = tail call signext i32 @memcmp(ptr @zeroEqualityTest04.buffer1, ptr %X, i64 16)
144133
%not.tobool = icmp eq i32 %call, 0

llvm/test/CodeGen/PowerPC/memcmpIR.ll

Lines changed: 13 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -4,48 +4,19 @@
44
define signext i32 @test1(ptr nocapture readonly %buffer1, ptr nocapture readonly %buffer2) {
55
entry:
66
; CHECK-LABEL: @test1(
7-
; CHECK-LABEL: res_block:{{.*}}
8-
; CHECK: [[ICMP2:%[0-9]+]] = icmp ult i64
9-
; CHECK-NEXT: [[SELECT:%[0-9]+]] = select i1 [[ICMP2]], i32 -1, i32 1
10-
; CHECK-NEXT: br label %endblock
11-
12-
; CHECK-LABEL: loadbb:{{.*}}
13-
; CHECK: [[LOAD1:%[0-9]+]] = load i64, ptr
14-
; CHECK-NEXT: [[LOAD2:%[0-9]+]] = load i64, ptr
15-
; CHECK-NEXT: [[BSWAP1:%[0-9]+]] = call i64 @llvm.bswap.i64(i64 [[LOAD1]])
16-
; CHECK-NEXT: [[BSWAP2:%[0-9]+]] = call i64 @llvm.bswap.i64(i64 [[LOAD2]])
17-
; CHECK-NEXT: [[ICMP:%[0-9]+]] = icmp eq i64 [[BSWAP1]], [[BSWAP2]]
18-
; CHECK-NEXT: br i1 [[ICMP]], label %loadbb1, label %res_block
19-
20-
; CHECK-LABEL: loadbb1:{{.*}}
21-
; CHECK-NEXT: [[GEP1:%[0-9]+]] = getelementptr i8, ptr {{.*}}, i64 8
22-
; CHECK-NEXT: [[GEP2:%[0-9]+]] = getelementptr i8, ptr {{.*}}, i64 8
23-
; CHECK-NEXT: [[LOAD1:%[0-9]+]] = load i64, ptr [[GEP1]]
24-
; CHECK-NEXT: [[LOAD2:%[0-9]+]] = load i64, ptr [[GEP2]]
25-
; CHECK-NEXT: [[BSWAP1:%[0-9]+]] = call i64 @llvm.bswap.i64(i64 [[LOAD1]])
26-
; CHECK-NEXT: [[BSWAP2:%[0-9]+]] = call i64 @llvm.bswap.i64(i64 [[LOAD2]])
27-
; CHECK-NEXT: [[ICMP:%[0-9]+]] = icmp eq i64 [[BSWAP1]], [[BSWAP2]]
28-
; CHECK-NEXT: br i1 [[ICMP]], label %endblock, label %res_block
29-
7+
; CHECK: [[LOAD0:%[0-9]+]] = load i128, ptr %buffer1, align 1
8+
; CHECK-NEXT: [[LOAD1:%[0-9]+]] = load i128, ptr %buffer2, align 1
9+
; CHECK-NEXT: [[CALL1:%[0-9]+]] = call i128 @llvm.bswap.i128(i128 [[LOAD0]])
10+
; CHECK-NEXT: [[CALL2:%[0-9]+]] = call i128 @llvm.bswap.i128(i128 [[LOAD1]])
11+
; CHECK-NEXT: [[CALL3:%[0-9]+]] = call i32 @llvm.ucmp.i32.i128(i128 [[CALL1]], i128 [[CALL2]])
12+
; CHECK-NEXT: ret i32 [[CALL3]]
13+
14+
3015
; CHECK-BE-LABEL: @test1(
31-
; CHECK-BE-LABEL: res_block:{{.*}}
32-
; CHECK-BE: [[ICMP2:%[0-9]+]] = icmp ult i64
33-
; CHECK-BE-NEXT: [[SELECT:%[0-9]+]] = select i1 [[ICMP2]], i32 -1, i32 1
34-
; CHECK-BE-NEXT: br label %endblock
35-
36-
; CHECK-BE-LABEL: loadbb:{{.*}}
37-
; CHECK-BE: [[LOAD1:%[0-9]+]] = load i64, ptr
38-
; CHECK-BE-NEXT: [[LOAD2:%[0-9]+]] = load i64, ptr
39-
; CHECK-BE-NEXT: [[ICMP:%[0-9]+]] = icmp eq i64 [[LOAD1]], [[LOAD2]]
40-
; CHECK-BE-NEXT: br i1 [[ICMP]], label %loadbb1, label %res_block
41-
42-
; CHECK-BE-LABEL: loadbb1:{{.*}}
43-
; CHECK-BE-NEXT: [[GEP1:%[0-9]+]] = getelementptr i8, ptr {{.*}}, i64 8
44-
; CHECK-BE-NEXT: [[GEP2:%[0-9]+]] = getelementptr i8, ptr {{.*}}, i64 8
45-
; CHECK-BE-NEXT: [[LOAD1:%[0-9]+]] = load i64, ptr [[GEP1]]
46-
; CHECK-BE-NEXT: [[LOAD2:%[0-9]+]] = load i64, ptr [[GEP2]]
47-
; CHECK-BE-NEXT: [[ICMP:%[0-9]+]] = icmp eq i64 [[LOAD1]], [[LOAD2]]
48-
; CHECK-BE-NEXT: br i1 [[ICMP]], label %endblock, label %res_block
16+
; CHECK-BE: [[LOAD0:%[0-9]+]] = load i128, ptr %buffer1, align 1
17+
; CHECK-BE-NEXT: [[LOAD1:%[0-9]+]] = load i128, ptr %buffer2, align 1
18+
; CHECK-BE-NEXT: [[CALL0:%[0-9]+]] = call i32 @llvm.ucmp.i32.i128(i128 [[LOAD0]], i128 [[LOAD1]])
19+
; CHECK-BE-NEXT: ret i32 [[CALL0]]
4920

5021
%call = tail call signext i32 @memcmp(ptr %buffer1, ptr %buffer2, i64 16)
5122
ret i32 %call
@@ -156,7 +127,7 @@ entry:
156127
define signext i32 @test4(ptr nocapture readonly %buffer1, ptr nocapture readonly %buffer2) {
157128

158129
entry:
159-
%call = tail call signext i32 @memcmp(ptr %buffer1, ptr %buffer2, i64 65)
130+
%call = tail call signext i32 @memcmp(ptr %buffer1, ptr %buffer2, i64 165)
160131
ret i32 %call
161132
}
162133

0 commit comments

Comments
 (0)