@@ -61,41 +61,32 @@ declare void @llvm.assume(i1) #0
61
61
62
62
attributes #0 = { nounwind willreturn }
63
63
64
- %struct.data = type { ptr , ptr }
65
-
66
- define void @test2 (ptr nocapture readonly %d ) {
64
+ define void @test2 (ptr noalias %a , ptr noalias %b ) {
67
65
; CHECK-LABEL: define void @test2(
68
- ; CHECK-SAME: ptr readonly captures(none) [[D :%.*]]) {
66
+ ; CHECK-SAME: ptr noalias [[A:%.*]], ptr noalias [[B :%.*]]) {
69
67
; CHECK-NEXT: [[ENTRY:.*:]]
70
- ; CHECK-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT_DATA:%.*]], ptr [[D]], i64 0, i32 1
71
- ; CHECK-NEXT: [[TMP0:%.*]] = load ptr, ptr [[B]], align 8
72
- ; CHECK-NEXT: [[PTRINT:%.*]] = ptrtoint ptr [[TMP0]] to i64
68
+ ; CHECK-NEXT: [[PTRINT:%.*]] = ptrtoint ptr [[A]] to i64
73
69
; CHECK-NEXT: [[MASKEDPTR:%.*]] = and i64 [[PTRINT]], 31
74
70
; CHECK-NEXT: [[MASKCOND:%.*]] = icmp eq i64 [[MASKEDPTR]], 0
75
- ; CHECK-NEXT: [[TMP1:%.*]] = load ptr, ptr [[D]], align 8
76
- ; CHECK-NEXT: [[PTRINT2:%.*]] = ptrtoint ptr [[TMP1]] to i64
71
+ ; CHECK-NEXT: [[PTRINT2:%.*]] = ptrtoint ptr [[B]] to i64
77
72
; CHECK-NEXT: [[MASKEDPTR3:%.*]] = and i64 [[PTRINT2]], 31
78
73
; CHECK-NEXT: [[MASKCOND4:%.*]] = icmp eq i64 [[MASKEDPTR3]], 0
79
- ; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_MEMCHECK:.*]]
80
- ; CHECK: [[VECTOR_MEMCHECK]]:
81
- ; CHECK-NEXT: [[TMP2:%.*]] = sub i64 [[PTRINT2]], [[PTRINT]]
82
- ; CHECK-NEXT: [[DIFF_CHECK:%.*]] = icmp ult i64 [[TMP2]], 16
83
- ; CHECK-NEXT: br i1 [[DIFF_CHECK]], label %[[SCALAR_PH]], label %[[VECTOR_PH:.*]]
74
+ ; CHECK-NEXT: br i1 false, label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
84
75
; CHECK: [[VECTOR_PH]]:
85
76
; CHECK-NEXT: br label %[[VECTOR_BODY:.*]]
86
77
; CHECK: [[VECTOR_BODY]]:
87
78
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
88
79
; CHECK-NEXT: tail call void @llvm.assume(i1 [[MASKCOND]])
89
80
; CHECK-NEXT: tail call void @llvm.assume(i1 [[MASKCOND]])
90
- ; CHECK-NEXT: [[TMP3:%.*]] = getelementptr inbounds float, ptr [[TMP0 ]], i64 [[INDEX]]
81
+ ; CHECK-NEXT: [[TMP3:%.*]] = getelementptr inbounds float, ptr [[A ]], i64 [[INDEX]]
91
82
; CHECK-NEXT: [[TMP4:%.*]] = getelementptr inbounds float, ptr [[TMP3]], i32 2
92
83
; CHECK-NEXT: [[WIDE_LOAD:%.*]] = load <2 x float>, ptr [[TMP3]], align 4
93
84
; CHECK-NEXT: [[WIDE_LOAD1:%.*]] = load <2 x float>, ptr [[TMP4]], align 4
94
85
; CHECK-NEXT: [[TMP5:%.*]] = fadd <2 x float> [[WIDE_LOAD]], splat (float 1.000000e+00)
95
86
; CHECK-NEXT: [[TMP6:%.*]] = fadd <2 x float> [[WIDE_LOAD1]], splat (float 1.000000e+00)
96
87
; CHECK-NEXT: tail call void @llvm.assume(i1 [[MASKCOND4]])
97
88
; CHECK-NEXT: tail call void @llvm.assume(i1 [[MASKCOND4]])
98
- ; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds float, ptr [[TMP1 ]], i64 [[INDEX]]
89
+ ; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds float, ptr [[B ]], i64 [[INDEX]]
99
90
; CHECK-NEXT: [[TMP8:%.*]] = getelementptr inbounds float, ptr [[TMP7]], i32 2
100
91
; CHECK-NEXT: store <2 x float> [[TMP5]], ptr [[TMP7]], align 4
101
92
; CHECK-NEXT: store <2 x float> [[TMP6]], ptr [[TMP8]], align 4
@@ -107,13 +98,10 @@ define void @test2(ptr nocapture readonly %d) {
107
98
; CHECK: [[SCALAR_PH]]:
108
99
;
109
100
entry:
110
- %b = getelementptr inbounds %struct.data , ptr %d , i64 0 , i32 1
111
- %0 = load ptr , ptr %b , align 8
112
- %ptrint = ptrtoint ptr %0 to i64
101
+ %ptrint = ptrtoint ptr %a to i64
113
102
%maskedptr = and i64 %ptrint , 31
114
103
%maskcond = icmp eq i64 %maskedptr , 0
115
- %1 = load ptr , ptr %d , align 8
116
- %ptrint2 = ptrtoint ptr %1 to i64
104
+ %ptrint2 = ptrtoint ptr %b to i64
117
105
%maskedptr3 = and i64 %ptrint2 , 31
118
106
%maskcond4 = icmp eq i64 %maskedptr3 , 0
119
107
br label %for.body
@@ -122,11 +110,11 @@ entry:
122
110
for.body: ; preds = %for.body, %entry
123
111
%indvars.iv = phi i64 [ 0 , %entry ], [ %indvars.iv.next , %for.body ]
124
112
tail call void @llvm.assume (i1 %maskcond )
125
- %arrayidx = getelementptr inbounds float , ptr %0 , i64 %indvars.iv
113
+ %arrayidx = getelementptr inbounds float , ptr %a , i64 %indvars.iv
126
114
%2 = load float , ptr %arrayidx , align 4
127
115
%add = fadd float %2 , 1 .000000e+00
128
116
tail call void @llvm.assume (i1 %maskcond4 )
129
- %arrayidx5 = getelementptr inbounds float , ptr %1 , i64 %indvars.iv
117
+ %arrayidx5 = getelementptr inbounds float , ptr %b , i64 %indvars.iv
130
118
store float %add , ptr %arrayidx5 , align 4
131
119
%indvars.iv.next = add nuw nsw i64 %indvars.iv , 1
132
120
%exitcond = icmp eq i64 %indvars.iv , 1599
0 commit comments