@@ -28,8 +28,8 @@ define void @no_promote(ptr %arg) #1 {
28
28
; TUNIT-NEXT: bb:
29
29
; TUNIT-NEXT: [[TMP:%.*]] = alloca <4 x i64>, align 32
30
30
; TUNIT-NEXT: [[TMP2:%.*]] = alloca <4 x i64>, align 32
31
- ; TUNIT-NEXT: call void @llvm.memset.p0.i64(ptr noalias nocapture nofree noundef nonnull writeonly align 32 dereferenceable(32) [[TMP]], i8 noundef 0, i64 noundef 32, i1 noundef false)
32
- ; TUNIT-NEXT: call fastcc void @no_promote_avx2(ptr noalias nocapture nofree noundef nonnull writeonly align 32 dereferenceable(32) [[TMP2]], ptr noalias nocapture nofree noundef nonnull readonly align 32 dereferenceable(32) [[TMP]]) #[[ATTR3 :[0-9]+]]
31
+ ; TUNIT-NEXT: call void @llvm.memset.p0.i64(ptr noalias nocapture nofree noundef nonnull writeonly align 32 dereferenceable(32) [[TMP]], i8 noundef 0, i64 noundef 32, i1 noundef false) #[[ATTR3:[0-9]+]]
32
+ ; TUNIT-NEXT: call fastcc void @no_promote_avx2(ptr noalias nocapture nofree noundef nonnull writeonly align 32 dereferenceable(32) [[TMP2]], ptr noalias nocapture nofree noundef nonnull readonly align 32 dereferenceable(32) [[TMP]]) #[[ATTR4 :[0-9]+]]
33
33
; TUNIT-NEXT: [[TMP4:%.*]] = load <4 x i64>, ptr [[TMP2]], align 32
34
34
; TUNIT-NEXT: store <4 x i64> [[TMP4]], ptr [[ARG]], align 2
35
35
; TUNIT-NEXT: ret void
@@ -40,8 +40,8 @@ define void @no_promote(ptr %arg) #1 {
40
40
; CGSCC-NEXT: bb:
41
41
; CGSCC-NEXT: [[TMP:%.*]] = alloca <4 x i64>, align 32
42
42
; CGSCC-NEXT: [[TMP2:%.*]] = alloca <4 x i64>, align 32
43
- ; CGSCC-NEXT: call void @llvm.memset.p0.i64(ptr noalias nocapture nofree noundef nonnull writeonly align 32 dereferenceable(32) [[TMP]], i8 noundef 0, i64 noundef 32, i1 noundef false)
44
- ; CGSCC-NEXT: call fastcc void @no_promote_avx2(ptr noalias nocapture nofree noundef nonnull writeonly align 32 dereferenceable(32) [[TMP2]], ptr noalias nocapture nofree noundef nonnull readonly align 32 dereferenceable(32) [[TMP]]) #[[ATTR3 :[0-9]+]]
43
+ ; CGSCC-NEXT: call void @llvm.memset.p0.i64(ptr noalias nocapture nofree noundef nonnull writeonly align 32 dereferenceable(32) [[TMP]], i8 noundef 0, i64 noundef 32, i1 noundef false) #[[ATTR3:[0-9]+]]
44
+ ; CGSCC-NEXT: call fastcc void @no_promote_avx2(ptr noalias nocapture nofree noundef nonnull writeonly align 32 dereferenceable(32) [[TMP2]], ptr noalias nocapture nofree noundef nonnull readonly align 32 dereferenceable(32) [[TMP]]) #[[ATTR4 :[0-9]+]]
45
45
; CGSCC-NEXT: [[TMP4:%.*]] = load <4 x i64>, ptr [[TMP2]], align 32
46
46
; CGSCC-NEXT: store <4 x i64> [[TMP4]], ptr [[ARG]], align 2
47
47
; CGSCC-NEXT: ret void
@@ -80,9 +80,9 @@ define void @promote(ptr %arg) #0 {
80
80
; TUNIT-NEXT: bb:
81
81
; TUNIT-NEXT: [[TMP:%.*]] = alloca <4 x i64>, align 32
82
82
; TUNIT-NEXT: [[TMP2:%.*]] = alloca <4 x i64>, align 32
83
- ; TUNIT-NEXT: call void @llvm.memset.p0.i64(ptr noalias nocapture nofree noundef nonnull writeonly align 32 dereferenceable(32) [[TMP]], i8 noundef 0, i64 noundef 32, i1 noundef false)
83
+ ; TUNIT-NEXT: call void @llvm.memset.p0.i64(ptr noalias nocapture nofree noundef nonnull writeonly align 32 dereferenceable(32) [[TMP]], i8 noundef 0, i64 noundef 32, i1 noundef false) #[[ATTR3]]
84
84
; TUNIT-NEXT: [[TMP0:%.*]] = load <4 x i64>, ptr [[TMP]], align 32
85
- ; TUNIT-NEXT: call fastcc void @promote_avx2(ptr noalias nocapture nofree noundef nonnull writeonly align 32 dereferenceable(32) [[TMP2]], <4 x i64> [[TMP0]]) #[[ATTR3 ]]
85
+ ; TUNIT-NEXT: call fastcc void @promote_avx2(ptr noalias nocapture nofree noundef nonnull writeonly align 32 dereferenceable(32) [[TMP2]], <4 x i64> [[TMP0]]) #[[ATTR4 ]]
86
86
; TUNIT-NEXT: [[TMP4:%.*]] = load <4 x i64>, ptr [[TMP2]], align 32
87
87
; TUNIT-NEXT: store <4 x i64> [[TMP4]], ptr [[ARG]], align 2
88
88
; TUNIT-NEXT: ret void
@@ -93,9 +93,9 @@ define void @promote(ptr %arg) #0 {
93
93
; CGSCC-NEXT: bb:
94
94
; CGSCC-NEXT: [[TMP:%.*]] = alloca <4 x i64>, align 32
95
95
; CGSCC-NEXT: [[TMP2:%.*]] = alloca <4 x i64>, align 32
96
- ; CGSCC-NEXT: call void @llvm.memset.p0.i64(ptr noalias nocapture nofree noundef nonnull writeonly align 32 dereferenceable(32) [[TMP]], i8 noundef 0, i64 noundef 32, i1 noundef false)
96
+ ; CGSCC-NEXT: call void @llvm.memset.p0.i64(ptr noalias nocapture nofree noundef nonnull writeonly align 32 dereferenceable(32) [[TMP]], i8 noundef 0, i64 noundef 32, i1 noundef false) #[[ATTR3]]
97
97
; CGSCC-NEXT: [[TMP0:%.*]] = load <4 x i64>, ptr [[TMP]], align 32
98
- ; CGSCC-NEXT: call fastcc void @promote_avx2(ptr noalias nocapture nofree noundef nonnull writeonly align 32 dereferenceable(32) [[TMP2]], <4 x i64> [[TMP0]]) #[[ATTR3 ]]
98
+ ; CGSCC-NEXT: call fastcc void @promote_avx2(ptr noalias nocapture nofree noundef nonnull writeonly align 32 dereferenceable(32) [[TMP2]], <4 x i64> [[TMP0]]) #[[ATTR4 ]]
99
99
; CGSCC-NEXT: [[TMP4:%.*]] = load <4 x i64>, ptr [[TMP2]], align 32
100
100
; CGSCC-NEXT: store <4 x i64> [[TMP4]], ptr [[ARG]], align 2
101
101
; CGSCC-NEXT: ret void
@@ -120,10 +120,12 @@ attributes #2 = { argmemonly nounwind }
120
120
; TUNIT: attributes #[[ATTR0]] = { inlinehint mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "target-features"="+avx2" }
121
121
; TUNIT: attributes #[[ATTR1]] = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable }
122
122
; TUNIT: attributes #[[ATTR2:[0-9]+]] = { nocallback nofree nounwind willreturn memory(argmem: write) }
123
- ; TUNIT: attributes #[[ATTR3]] = { nofree nosync nounwind willreturn }
123
+ ; TUNIT: attributes #[[ATTR3]] = { memory(write) }
124
+ ; TUNIT: attributes #[[ATTR4]] = { nofree nosync nounwind willreturn }
124
125
;.
125
126
; CGSCC: attributes #[[ATTR0]] = { inlinehint mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "target-features"="+avx2" }
126
127
; CGSCC: attributes #[[ATTR1]] = { mustprogress nofree nosync nounwind willreturn memory(argmem: readwrite) uwtable }
127
128
; CGSCC: attributes #[[ATTR2:[0-9]+]] = { nocallback nofree nounwind willreturn memory(argmem: write) }
128
- ; CGSCC: attributes #[[ATTR3]] = { nounwind }
129
+ ; CGSCC: attributes #[[ATTR3]] = { memory(write) }
130
+ ; CGSCC: attributes #[[ATTR4]] = { nounwind }
129
131
;.
0 commit comments