Skip to content

Commit 06922c4

Browse files
authored
[PowerPC] Pre-commit test case to ensure that milicode is not used for memcmp, but instead a library call is used on AIX OS. (llvm#146948)
[PowerPC] Pre-commit test case to ensure that milicode is not used for memcmp, but instead a library call is used on AIX OS.
1 parent 6a94814 commit 06922c4

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc -verify-machineinstrs -mcpu=pwr9 -ppc-asm-full-reg-names -mtriple=powerpc-ibm-aix < %s | \
3+
; RUN: FileCheck %s --check-prefix=CHECK-AIX-32-P9
4+
5+
; RUN: llc -verify-machineinstrs -mcpu=pwr9 -ppc-asm-full-reg-names -mtriple=powerpc-unknown-linux-gnu < %s | \
6+
; RUN: FileCheck %s --check-prefix=CHECK-LINUX32-P9
7+
8+
define i32 @memcmp_test(ptr nocapture noundef readonly %ptr1, ptr nocapture noundef readonly %ptr2, i32 noundef %num) nounwind {
9+
; CHECK-AIX-32-P9-LABEL: memcmp_test:
10+
; CHECK-AIX-32-P9: # %bb.0: # %entry
11+
; CHECK-AIX-32-P9-NEXT: mflr r0
12+
; CHECK-AIX-32-P9-NEXT: stwu r1, -64(r1)
13+
; CHECK-AIX-32-P9-NEXT: stw r0, 72(r1)
14+
; CHECK-AIX-32-P9-NEXT: bl .memcmp[PR]
15+
; CHECK-AIX-32-P9-NEXT: nop
16+
; CHECK-AIX-32-P9-NEXT: addi r1, r1, 64
17+
; CHECK-AIX-32-P9-NEXT: lwz r0, 8(r1)
18+
; CHECK-AIX-32-P9-NEXT: mtlr r0
19+
; CHECK-AIX-32-P9-NEXT: blr
20+
;
21+
; CHECK-LINUX32-P9-LABEL: memcmp_test:
22+
; CHECK-LINUX32-P9: # %bb.0: # %entry
23+
; CHECK-LINUX32-P9-NEXT: mflr r0
24+
; CHECK-LINUX32-P9-NEXT: stwu r1, -16(r1)
25+
; CHECK-LINUX32-P9-NEXT: stw r0, 20(r1)
26+
; CHECK-LINUX32-P9-NEXT: bl memcmp
27+
; CHECK-LINUX32-P9-NEXT: lwz r0, 20(r1)
28+
; CHECK-LINUX32-P9-NEXT: addi r1, r1, 16
29+
; CHECK-LINUX32-P9-NEXT: mtlr r0
30+
; CHECK-LINUX32-P9-NEXT: blr
31+
entry:
32+
%call = tail call i32 @memcmp(ptr noundef %ptr1, ptr noundef %ptr2, i32 noundef %num)
33+
ret i32 %call
34+
}
35+
36+
declare i32 @memcmp(ptr noundef captures(none), ptr noundef captures(none), i32 noundef) nounwind
37+
38+
39+
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc -verify-machineinstrs -mcpu=pwr9 -ppc-asm-full-reg-names \
3+
; RUN: -mtriple=powerpc64le-unknown-linux-gnu < %s | \
4+
; RUN: FileCheck %s --check-prefix=CHECK-LE-P9
5+
; RUN: llc -verify-machineinstrs -mcpu=pwr9 -ppc-asm-full-reg-names \
6+
; RUN: -mtriple=powerpc64-unknown-linux-gnu < %s | \
7+
; RUN: FileCheck %s --check-prefix=CHECK-BE-P9
8+
; RUN: llc -verify-machineinstrs -mcpu=pwr9 -ppc-asm-full-reg-names \
9+
; RUN: -mtriple=powerpc64-ibm-aix < %s | \
10+
; RUN: FileCheck %s --check-prefix=CHECK-AIX-64-P9
11+
12+
define noundef i32 @_Z11memcmp_testPKvS0_m(ptr noundef readonly captures(none) %ptr1, ptr noundef readonly captures(none) %ptr2, i64 noundef %num) nounwind {
13+
; CHECK-LE-P9-LABEL: _Z11memcmp_testPKvS0_m:
14+
; CHECK-LE-P9: # %bb.0: # %entry
15+
; CHECK-LE-P9-NEXT: mflr r0
16+
; CHECK-LE-P9-NEXT: stdu r1, -32(r1)
17+
; CHECK-LE-P9-NEXT: std r0, 48(r1)
18+
; CHECK-LE-P9-NEXT: bl memcmp
19+
; CHECK-LE-P9-NEXT: nop
20+
; CHECK-LE-P9-NEXT: addi r1, r1, 32
21+
; CHECK-LE-P9-NEXT: ld r0, 16(r1)
22+
; CHECK-LE-P9-NEXT: mtlr r0
23+
; CHECK-LE-P9-NEXT: blr
24+
;
25+
; CHECK-BE-P9-LABEL: _Z11memcmp_testPKvS0_m:
26+
; CHECK-BE-P9: # %bb.0: # %entry
27+
; CHECK-BE-P9-NEXT: mflr r0
28+
; CHECK-BE-P9-NEXT: stdu r1, -112(r1)
29+
; CHECK-BE-P9-NEXT: std r0, 128(r1)
30+
; CHECK-BE-P9-NEXT: bl memcmp
31+
; CHECK-BE-P9-NEXT: nop
32+
; CHECK-BE-P9-NEXT: addi r1, r1, 112
33+
; CHECK-BE-P9-NEXT: ld r0, 16(r1)
34+
; CHECK-BE-P9-NEXT: mtlr r0
35+
; CHECK-BE-P9-NEXT: blr
36+
;
37+
; CHECK-AIX-64-P9-LABEL: _Z11memcmp_testPKvS0_m:
38+
; CHECK-AIX-64-P9: # %bb.0: # %entry
39+
; CHECK-AIX-64-P9-NEXT: mflr r0
40+
; CHECK-AIX-64-P9-NEXT: stdu r1, -112(r1)
41+
; CHECK-AIX-64-P9-NEXT: std r0, 128(r1)
42+
; CHECK-AIX-64-P9-NEXT: bl .memcmp[PR]
43+
; CHECK-AIX-64-P9-NEXT: nop
44+
; CHECK-AIX-64-P9-NEXT: addi r1, r1, 112
45+
; CHECK-AIX-64-P9-NEXT: ld r0, 16(r1)
46+
; CHECK-AIX-64-P9-NEXT: mtlr r0
47+
; CHECK-AIX-64-P9-NEXT: blr
48+
entry:
49+
%call = tail call i32 @memcmp(ptr noundef %ptr1, ptr noundef %ptr2, i64 noundef %num)
50+
ret i32 %call
51+
}
52+
53+
declare i32 @memcmp(ptr noundef captures(none), ptr noundef captures(none), i64 noundef) nounwind
54+
55+

0 commit comments

Comments
 (0)