@@ -203,10 +203,24 @@ end
203203 Vec (MM {W,X} (floattype (Val {W} ())(getfield (i, :i ) % pick_integer (Val {W} (), I))))
204204@inline vfdiv (i:: MM , j:: T ) where {T<: Real } = float (i) / j
205205@inline vfdiv (j:: T , i:: MM ) where {T<: Real } = j / float (i)
206+
206207@inline vfdiv_fast (i:: MM , j:: MM ) = vfdiv_fast (float (i), float (j))
207208@inline vfdiv_fast (i:: MM , j:: T ) where {T<: Real } = vfdiv_fast (float (i), j)
208209@inline vfdiv_fast (j:: T , i:: MM ) where {T<: Real } = vfdiv_fast (j, float (i))
209210
211+ @inline vfdiv (x:: AbstractSIMDVector{W} , y:: VectorizationBase.MM{W} ) where {W} =
212+ x / float (y)
213+ @inline vfdiv (y:: VectorizationBase.MM{W} , x:: AbstractSIMDVector{W} ) where {W} =
214+ float (y) / x
215+ @inline vfdiv_fast (
216+ x:: AbstractSIMDVector{W} ,
217+ y:: VectorizationBase.MM{W}
218+ ) where {W} = vfiv_fast (x, float (y))
219+ @inline vfdiv_fast (
220+ y:: VectorizationBase.MM{W} ,
221+ x:: AbstractSIMDVector{W}
222+ ) where {W} = vfdiv_fast (float (y), x)
223+
210224@inline vfdiv (i:: MM , j:: VecUnroll{N,W,T,V} ) where {N,W,T,V} = float (i) / j
211225@inline vfdiv (j:: VecUnroll{N,W,T,V} , i:: MM ) where {N,W,T,V} = j / float (i)
212226
0 commit comments