Skip to content

Commit ed2b7b7

Browse files
committed
[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 df5097d commit ed2b7b7

File tree

2 files changed

+85
-0
lines changed

2 files changed

+85
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
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+
6+
define i32 @memcmp_test(ptr nocapture noundef readonly %ptr1, ptr nocapture noundef readonly %ptr2, i32 noundef %num) local_unnamed_addr {
7+
; CHECK-AIX-32-P9-LABEL: memcmp_test:
8+
; CHECK-AIX-32-P9: # %bb.0: # %entry
9+
; CHECK-AIX-32-P9-NEXT: mflr r0
10+
; CHECK-AIX-32-P9-NEXT: stwu r1, -64(r1)
11+
; CHECK-AIX-32-P9-NEXT: stw r0, 72(r1)
12+
; CHECK-AIX-32-P9-NEXT: bl .memcmp[PR]
13+
; CHECK-AIX-32-P9-NEXT: nop
14+
; CHECK-AIX-32-P9-NEXT: addi r1, r1, 64
15+
; CHECK-AIX-32-P9-NEXT: lwz r0, 8(r1)
16+
; CHECK-AIX-32-P9-NEXT: mtlr r0
17+
; CHECK-AIX-32-P9-NEXT: blr
18+
entry:
19+
%call = tail call i32 @memcmp(ptr noundef %ptr1, ptr noundef %ptr2, i32 noundef %num)
20+
ret i32 %call
21+
}
22+
23+
declare i32 @memcmp(ptr noundef captures(none), ptr noundef captures(none), i32 noundef) local_unnamed_addr
24+
25+
26+
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
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) local_unnamed_addr {
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: .cfi_def_cfa_offset 32
19+
; CHECK-LE-P9-NEXT: .cfi_offset lr, 16
20+
; CHECK-LE-P9-NEXT: bl memcmp
21+
; CHECK-LE-P9-NEXT: nop
22+
; CHECK-LE-P9-NEXT: addi r1, r1, 32
23+
; CHECK-LE-P9-NEXT: ld r0, 16(r1)
24+
; CHECK-LE-P9-NEXT: mtlr r0
25+
; CHECK-LE-P9-NEXT: blr
26+
;
27+
; CHECK-BE-P9-LABEL: _Z11memcmp_testPKvS0_m:
28+
; CHECK-BE-P9: # %bb.0: # %entry
29+
; CHECK-BE-P9-NEXT: mflr r0
30+
; CHECK-BE-P9-NEXT: stdu r1, -112(r1)
31+
; CHECK-BE-P9-NEXT: std r0, 128(r1)
32+
; CHECK-BE-P9-NEXT: .cfi_def_cfa_offset 112
33+
; CHECK-BE-P9-NEXT: .cfi_offset lr, 16
34+
; CHECK-BE-P9-NEXT: bl memcmp
35+
; CHECK-BE-P9-NEXT: nop
36+
; CHECK-BE-P9-NEXT: addi r1, r1, 112
37+
; CHECK-BE-P9-NEXT: ld r0, 16(r1)
38+
; CHECK-BE-P9-NEXT: mtlr r0
39+
; CHECK-BE-P9-NEXT: blr
40+
;
41+
; CHECK-AIX-64-P9-LABEL: _Z11memcmp_testPKvS0_m:
42+
; CHECK-AIX-64-P9: # %bb.0: # %entry
43+
; CHECK-AIX-64-P9-NEXT: mflr r0
44+
; CHECK-AIX-64-P9-NEXT: stdu r1, -112(r1)
45+
; CHECK-AIX-64-P9-NEXT: std r0, 128(r1)
46+
; CHECK-AIX-64-P9-NEXT: bl .memcmp[PR]
47+
; CHECK-AIX-64-P9-NEXT: nop
48+
; CHECK-AIX-64-P9-NEXT: addi r1, r1, 112
49+
; CHECK-AIX-64-P9-NEXT: ld r0, 16(r1)
50+
; CHECK-AIX-64-P9-NEXT: mtlr r0
51+
; CHECK-AIX-64-P9-NEXT: blr
52+
entry:
53+
%call = tail call i32 @memcmp(ptr noundef %ptr1, ptr noundef %ptr2, i64 noundef %num)
54+
ret i32 %call
55+
}
56+
57+
declare i32 @memcmp(ptr noundef captures(none), ptr noundef captures(none), i64 noundef) local_unnamed_addr
58+
59+

0 commit comments

Comments
 (0)