@@ -43,3 +43,33 @@ define float @f6(float %val, i32 %a) {
4343 %call = tail call fast float @llvm.ldexp.f32 (float %val , i32 %a )
4444 ret float %call
4545}
46+
47+ @dst = global [512 x i8 ] zeroinitializer , align 1
48+ @src = global [512 x i8 ] zeroinitializer , align 1
49+
50+ ; FIXME: Wrong and probably needs a # prefix
51+ define void @call__arm_sc_memcpy (i64 noundef %n ) #0 {
52+ ; CHECK-LABEL: "#call__arm_sc_memcpy":
53+ ; CHECK: bl __arm_sc_memcpy
54+
55+ tail call void @llvm.memcpy.p0.p0.i64 (ptr align 1 @dst , ptr nonnull align 1 @src , i64 %n , i1 false )
56+ ret void
57+ }
58+
59+ ; FIXME: Wrong and probably needs a # prefix
60+ define void @call__arm_sc_memmove (i64 noundef %n ) #0 {
61+ ; CHECK-LABEL: "#call__arm_sc_memmove":
62+ ; CHECK: bl __arm_sc_memmove
63+ tail call void @llvm.memmove.p0.p0.i64 (ptr align 1 @dst , ptr nonnull align 1 @src , i64 %n , i1 false )
64+ ret void
65+ }
66+
67+ ; FIXME: Wrong and probably needs a # prefix
68+ define void @call__arm_sc_memset (i64 noundef %n ) #0 {
69+ ; CHECK-LABEL: "#call__arm_sc_memset":
70+ ; CHECK: bl __arm_sc_memset
71+ tail call void @llvm.memset.p0.i64 (ptr align 1 @dst , i8 2 , i64 %n , i1 false )
72+ ret void
73+ }
74+
75+ attributes #0 = { nounwind "aarch64_pstate_sm_enabled" "target-features" ="+sme2" }
0 commit comments