@@ -117,8 +117,15 @@ entry:
117
117
define float @fadd_f32_strict (<4 x float > %vec ) {
118
118
; CHECK-LABEL: @fadd_f32_strict(
119
119
; CHECK-NEXT: entry:
120
- ; CHECK-NEXT: [[R:%.*]] = call float @llvm.experimental.vector.reduce.fadd.f32.f32.v4f32(float undef, <4 x float> [[VEC:%.*]])
121
- ; CHECK-NEXT: ret float [[R]]
120
+ ; CHECK-NEXT: [[TMP0:%.*]] = extractelement <4 x float> [[VEC:%.*]], i32 0
121
+ ; CHECK-NEXT: [[BIN_RDX:%.*]] = fadd float undef, [[TMP0]]
122
+ ; CHECK-NEXT: [[TMP1:%.*]] = extractelement <4 x float> [[VEC]], i32 1
123
+ ; CHECK-NEXT: [[BIN_RDX1:%.*]] = fadd float [[BIN_RDX]], [[TMP1]]
124
+ ; CHECK-NEXT: [[TMP2:%.*]] = extractelement <4 x float> [[VEC]], i32 2
125
+ ; CHECK-NEXT: [[BIN_RDX2:%.*]] = fadd float [[BIN_RDX1]], [[TMP2]]
126
+ ; CHECK-NEXT: [[TMP3:%.*]] = extractelement <4 x float> [[VEC]], i32 3
127
+ ; CHECK-NEXT: [[BIN_RDX3:%.*]] = fadd float [[BIN_RDX2]], [[TMP3]]
128
+ ; CHECK-NEXT: ret float [[BIN_RDX3]]
122
129
;
123
130
entry:
124
131
%r = call float @llvm.experimental.vector.reduce.fadd.f32.v4f32 (float undef , <4 x float > %vec )
@@ -128,8 +135,15 @@ entry:
128
135
define float @fadd_f32_strict_accum (float %accum , <4 x float > %vec ) {
129
136
; CHECK-LABEL: @fadd_f32_strict_accum(
130
137
; CHECK-NEXT: entry:
131
- ; CHECK-NEXT: [[R:%.*]] = call float @llvm.experimental.vector.reduce.fadd.f32.f32.v4f32(float [[ACCUM:%.*]], <4 x float> [[VEC:%.*]])
132
- ; CHECK-NEXT: ret float [[R]]
138
+ ; CHECK-NEXT: [[TMP0:%.*]] = extractelement <4 x float> [[VEC:%.*]], i32 0
139
+ ; CHECK-NEXT: [[BIN_RDX:%.*]] = fadd float [[ACCUM:%.*]], [[TMP0]]
140
+ ; CHECK-NEXT: [[TMP1:%.*]] = extractelement <4 x float> [[VEC]], i32 1
141
+ ; CHECK-NEXT: [[BIN_RDX1:%.*]] = fadd float [[BIN_RDX]], [[TMP1]]
142
+ ; CHECK-NEXT: [[TMP2:%.*]] = extractelement <4 x float> [[VEC]], i32 2
143
+ ; CHECK-NEXT: [[BIN_RDX2:%.*]] = fadd float [[BIN_RDX1]], [[TMP2]]
144
+ ; CHECK-NEXT: [[TMP3:%.*]] = extractelement <4 x float> [[VEC]], i32 3
145
+ ; CHECK-NEXT: [[BIN_RDX3:%.*]] = fadd float [[BIN_RDX2]], [[TMP3]]
146
+ ; CHECK-NEXT: ret float [[BIN_RDX3]]
133
147
;
134
148
entry:
135
149
%r = call float @llvm.experimental.vector.reduce.fadd.f32.v4f32 (float %accum , <4 x float > %vec )
@@ -169,8 +183,15 @@ entry:
169
183
define float @fmul_f32_strict (<4 x float > %vec ) {
170
184
; CHECK-LABEL: @fmul_f32_strict(
171
185
; CHECK-NEXT: entry:
172
- ; CHECK-NEXT: [[R:%.*]] = call float @llvm.experimental.vector.reduce.fmul.f32.f32.v4f32(float undef, <4 x float> [[VEC:%.*]])
173
- ; CHECK-NEXT: ret float [[R]]
186
+ ; CHECK-NEXT: [[TMP0:%.*]] = extractelement <4 x float> [[VEC:%.*]], i32 0
187
+ ; CHECK-NEXT: [[BIN_RDX:%.*]] = fmul float undef, [[TMP0]]
188
+ ; CHECK-NEXT: [[TMP1:%.*]] = extractelement <4 x float> [[VEC]], i32 1
189
+ ; CHECK-NEXT: [[BIN_RDX1:%.*]] = fmul float [[BIN_RDX]], [[TMP1]]
190
+ ; CHECK-NEXT: [[TMP2:%.*]] = extractelement <4 x float> [[VEC]], i32 2
191
+ ; CHECK-NEXT: [[BIN_RDX2:%.*]] = fmul float [[BIN_RDX1]], [[TMP2]]
192
+ ; CHECK-NEXT: [[TMP3:%.*]] = extractelement <4 x float> [[VEC]], i32 3
193
+ ; CHECK-NEXT: [[BIN_RDX3:%.*]] = fmul float [[BIN_RDX2]], [[TMP3]]
194
+ ; CHECK-NEXT: ret float [[BIN_RDX3]]
174
195
;
175
196
entry:
176
197
%r = call float @llvm.experimental.vector.reduce.fmul.f32.v4f32 (float undef , <4 x float > %vec )
@@ -180,8 +201,15 @@ entry:
180
201
define float @fmul_f32_strict_accum (float %accum , <4 x float > %vec ) {
181
202
; CHECK-LABEL: @fmul_f32_strict_accum(
182
203
; CHECK-NEXT: entry:
183
- ; CHECK-NEXT: [[R:%.*]] = call float @llvm.experimental.vector.reduce.fmul.f32.f32.v4f32(float [[ACCUM:%.*]], <4 x float> [[VEC:%.*]])
184
- ; CHECK-NEXT: ret float [[R]]
204
+ ; CHECK-NEXT: [[TMP0:%.*]] = extractelement <4 x float> [[VEC:%.*]], i32 0
205
+ ; CHECK-NEXT: [[BIN_RDX:%.*]] = fmul float [[ACCUM:%.*]], [[TMP0]]
206
+ ; CHECK-NEXT: [[TMP1:%.*]] = extractelement <4 x float> [[VEC]], i32 1
207
+ ; CHECK-NEXT: [[BIN_RDX1:%.*]] = fmul float [[BIN_RDX]], [[TMP1]]
208
+ ; CHECK-NEXT: [[TMP2:%.*]] = extractelement <4 x float> [[VEC]], i32 2
209
+ ; CHECK-NEXT: [[BIN_RDX2:%.*]] = fmul float [[BIN_RDX1]], [[TMP2]]
210
+ ; CHECK-NEXT: [[TMP3:%.*]] = extractelement <4 x float> [[VEC]], i32 3
211
+ ; CHECK-NEXT: [[BIN_RDX3:%.*]] = fmul float [[BIN_RDX2]], [[TMP3]]
212
+ ; CHECK-NEXT: ret float [[BIN_RDX3]]
185
213
;
186
214
entry:
187
215
%r = call float @llvm.experimental.vector.reduce.fmul.f32.v4f32 (float %accum , <4 x float > %vec )
0 commit comments