@@ -52,4 +52,51 @@ entry:
5252
5353declare i32 @memcmp (ptr noundef captures(none), ptr noundef captures(none), i64 noundef) nounwind
5454
55+ define i64 @strlen_test (ptr noundef %str ) nounwind {
56+ ; CHECK-LE-P9-LABEL: strlen_test:
57+ ; CHECK-LE-P9: # %bb.0: # %entry
58+ ; CHECK-LE-P9-NEXT: mflr r0
59+ ; CHECK-LE-P9-NEXT: stdu r1, -48(r1)
60+ ; CHECK-LE-P9-NEXT: std r0, 64(r1)
61+ ; CHECK-LE-P9-NEXT: std r3, 40(r1)
62+ ; CHECK-LE-P9-NEXT: bl strlen
63+ ; CHECK-LE-P9-NEXT: nop
64+ ; CHECK-LE-P9-NEXT: addi r1, r1, 48
65+ ; CHECK-LE-P9-NEXT: ld r0, 16(r1)
66+ ; CHECK-LE-P9-NEXT: mtlr r0
67+ ; CHECK-LE-P9-NEXT: blr
68+ ;
69+ ; CHECK-BE-P9-LABEL: strlen_test:
70+ ; CHECK-BE-P9: # %bb.0: # %entry
71+ ; CHECK-BE-P9-NEXT: mflr r0
72+ ; CHECK-BE-P9-NEXT: stdu r1, -128(r1)
73+ ; CHECK-BE-P9-NEXT: std r0, 144(r1)
74+ ; CHECK-BE-P9-NEXT: std r3, 120(r1)
75+ ; CHECK-BE-P9-NEXT: bl strlen
76+ ; CHECK-BE-P9-NEXT: nop
77+ ; CHECK-BE-P9-NEXT: addi r1, r1, 128
78+ ; CHECK-BE-P9-NEXT: ld r0, 16(r1)
79+ ; CHECK-BE-P9-NEXT: mtlr r0
80+ ; CHECK-BE-P9-NEXT: blr
81+ ;
82+ ; CHECK-AIX-64-P9-LABEL: strlen_test:
83+ ; CHECK-AIX-64-P9: # %bb.0: # %entry
84+ ; CHECK-AIX-64-P9-NEXT: mflr r0
85+ ; CHECK-AIX-64-P9-NEXT: stdu r1, -128(r1)
86+ ; CHECK-AIX-64-P9-NEXT: std r0, 144(r1)
87+ ; CHECK-AIX-64-P9-NEXT: std r3, 120(r1)
88+ ; CHECK-AIX-64-P9-NEXT: bl .strlen[PR]
89+ ; CHECK-AIX-64-P9-NEXT: nop
90+ ; CHECK-AIX-64-P9-NEXT: addi r1, r1, 128
91+ ; CHECK-AIX-64-P9-NEXT: ld r0, 16(r1)
92+ ; CHECK-AIX-64-P9-NEXT: mtlr r0
93+ ; CHECK-AIX-64-P9-NEXT: blr
94+ entry:
95+ %str.addr = alloca ptr , align 8
96+ store ptr %str , ptr %str.addr , align 8
97+ %0 = load ptr , ptr %str.addr , align 8
98+ %call = call i64 @strlen (ptr noundef %0 )
99+ ret i64 %call
100+ }
55101
102+ declare i64 @strlen (ptr noundef) nounwind
0 commit comments