@@ -60,6 +60,39 @@ define i32 @strlen_test(ptr noundef %str) nounwind {
6060; CHECK-LINUX32-P9-NEXT: addi r1, r1, 16
6161; CHECK-LINUX32-P9-NEXT: mtlr r0
6262; CHECK-LINUX32-P9-NEXT: blr
63+ entry:
64+ %str.addr = alloca ptr , align 4
65+ store ptr %str , ptr %str.addr , align 4
66+ %0 = load ptr , ptr %str.addr , align 4
67+ %call = call i32 @strlen (ptr noundef %0 )
68+ ret i32 %call
69+ }
70+
71+ define i32 @strlen_test_fp_strict (ptr noundef %str ) nounwind {
72+ ; CHECK-AIX-32-P9-LABEL: strlen_test_fp_strict:
73+ ; CHECK-AIX-32-P9: # %bb.0: # %entry
74+ ; CHECK-AIX-32-P9-NEXT: mflr r0
75+ ; CHECK-AIX-32-P9-NEXT: stwu r1, -64(r1)
76+ ; CHECK-AIX-32-P9-NEXT: stw r0, 72(r1)
77+ ; CHECK-AIX-32-P9-NEXT: stw r3, 60(r1)
78+ ; CHECK-AIX-32-P9-NEXT: bl .___strlen[PR]
79+ ; CHECK-AIX-32-P9-NEXT: nop
80+ ; CHECK-AIX-32-P9-NEXT: addi r1, r1, 64
81+ ; CHECK-AIX-32-P9-NEXT: lwz r0, 8(r1)
82+ ; CHECK-AIX-32-P9-NEXT: mtlr r0
83+ ; CHECK-AIX-32-P9-NEXT: blr
84+ ;
85+ ; CHECK-LINUX32-P9-LABEL: strlen_test_fp_strict:
86+ ; CHECK-LINUX32-P9: # %bb.0: # %entry
87+ ; CHECK-LINUX32-P9-NEXT: mflr r0
88+ ; CHECK-LINUX32-P9-NEXT: stwu r1, -16(r1)
89+ ; CHECK-LINUX32-P9-NEXT: stw r0, 20(r1)
90+ ; CHECK-LINUX32-P9-NEXT: stw r3, 12(r1)
91+ ; CHECK-LINUX32-P9-NEXT: bl strlen
92+ ; CHECK-LINUX32-P9-NEXT: lwz r0, 20(r1)
93+ ; CHECK-LINUX32-P9-NEXT: addi r1, r1, 16
94+ ; CHECK-LINUX32-P9-NEXT: mtlr r0
95+ ; CHECK-LINUX32-P9-NEXT: blr
6396entry:
6497 %str.addr = alloca ptr , align 4
6598 store ptr %str , ptr %str.addr , align 4
0 commit comments