@@ -226,34 +226,28 @@ function avx_loopset(instr, ops, arf, AM, LB, vargs)
226
226
num_params = extract_external_functions! (ls, num_params)
227
227
ls
228
228
end
229
- function avx_body (UT, instr, ops, arf, AM, LB, vargs)
230
- ls = avx_loopset (instr, ops, arf, AM, LB, vargs)
229
+ function avx_body (ls, UT)
231
230
U, T = UT
232
231
q = iszero (U) ? lower (ls) : lower (ls, U, T)
233
232
length (ls. outer_reductions) == 0 ? push! (q. args, nothing ) : push! (q. args, loopset_return_value (ls, Val (true )))
234
233
q
235
234
end
236
235
237
- function _avx_loopset (:: Val{UT} , :: Type{OPS} , :: Type{ARF} , :: Type{AM} , lb:: LB , vargs... ) where {UT, OPS, ARF, AM, LB}
238
- OPSsv = OPS. parameters
236
+ function _avx_loopset_debug (:: Type{OPS} , :: Type{ARF} , :: Type{AM} , :: Type{LB} , vargs... ) where {UT, OPS, ARF, AM, LB}
237
+ _avx_loopset (OPS. parameters, ARF. parameters, AM. parameters, LB. parameters, typeof .(vargs))
238
+ end
239
+ function _avx_loopset (OPSsv, ARFsv, AMsv, LBsv, vargs) where {UT, OPS, ARF, AM, LB}
239
240
nops = length (OPSsv) ÷ 3
240
241
instr = Instruction[Instruction (OPSsv[3 i+ 1 ], OPSsv[3 i+ 2 ]) for i ∈ 0 : nops- 1 ]
241
242
ops = OperationStruct[ OPSsv[3 i] for i ∈ 1 : nops ]
242
243
avx_loopset (
243
244
instr, ops,
244
- ArrayRefStruct[ARF . parameters ... ],
245
- AM . parameters, LB . parameters, typeof .( vargs)
245
+ ArrayRefStruct[ARFsv ... ],
246
+ AMsv, LBsv, vargs
246
247
)
247
248
end
248
249
@generated function _avx_! (:: Val{UT} , :: Type{OPS} , :: Type{ARF} , :: Type{AM} , lb:: LB , vargs... ) where {UT, OPS, ARF, AM, LB}
249
- OPSsv = OPS. parameters
250
- nops = length (OPSsv) ÷ 3
251
- instr = Instruction[Instruction (OPSsv[3 i+ 1 ], OPSsv[3 i+ 2 ]) for i ∈ 0 : nops- 1 ]
252
- ops = OperationStruct[ OPSsv[3 i] for i ∈ 1 : nops ]
253
- avx_body (
254
- UT, instr, ops,
255
- ArrayRefStruct[ARF. parameters... ],
256
- AM. parameters, LB. parameters, vargs
257
- )
250
+ ls = _avx_loopset (OPS. parameters, ARF. parameters, AM. parameters, LB. parameters, vargs)
251
+ avx_body (ls, UT)
258
252
end
259
253
0 commit comments