@@ -52,4 +52,51 @@ entry:
52
52
53
53
declare i32 @memcmp (ptr noundef captures(none), ptr noundef captures(none), i64 noundef) nounwind
54
54
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
+ }
55
101
102
+ declare i64 @strlen (ptr noundef) nounwind
0 commit comments