@@ -746,3 +746,45 @@ define void @fixed_scalable_neg(ptr %ptr) vscale_range(1, 2) {
746
746
store <4 x i64 > zeroinitializer , ptr %ptr
747
747
ret void
748
748
}
749
+
750
+ define void @memset_different_attributes_1 (i1 %c , ptr %ptr ) {
751
+ ; CHECK-LABEL: @memset_different_attributes_1(
752
+ ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr [[PTR:%.*]], i8 0, i64 20, i1 false)
753
+ ; CHECK-NEXT: br i1 [[C:%.*]], label [[IF:%.*]], label [[END:%.*]]
754
+ ; CHECK: if:
755
+ ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr dereferenceable(20) [[PTR]], i8 0, i64 20, i1 false)
756
+ ; CHECK-NEXT: br label [[END]]
757
+ ; CHECK: end:
758
+ ; CHECK-NEXT: ret void
759
+ ;
760
+ call void @llvm.memset.p0.i64 (ptr %ptr , i8 0 , i64 20 , i1 false )
761
+ br i1 %c , label %if , label %end
762
+
763
+ if:
764
+ call void @llvm.memset.p0.i64 (ptr dereferenceable (20 ) %ptr , i8 0 , i64 20 , i1 false )
765
+ br label %end
766
+
767
+ end:
768
+ ret void
769
+ }
770
+
771
+ define void @memset_different_attributes_2 (i1 %c , ptr %ptr ) {
772
+ ; CHECK-LABEL: @memset_different_attributes_2(
773
+ ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr dereferenceable(20) [[PTR:%.*]], i8 0, i64 20, i1 false)
774
+ ; CHECK-NEXT: br i1 [[C:%.*]], label [[IF:%.*]], label [[END:%.*]]
775
+ ; CHECK: if:
776
+ ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr [[PTR]], i8 0, i64 20, i1 false)
777
+ ; CHECK-NEXT: br label [[END]]
778
+ ; CHECK: end:
779
+ ; CHECK-NEXT: ret void
780
+ ;
781
+ call void @llvm.memset.p0.i64 (ptr dereferenceable (20 ) %ptr , i8 0 , i64 20 , i1 false )
782
+ br i1 %c , label %if , label %end
783
+
784
+ if:
785
+ call void @llvm.memset.p0.i64 (ptr %ptr , i8 0 , i64 20 , i1 false )
786
+ br label %end
787
+
788
+ end:
789
+ ret void
790
+ }
0 commit comments