Have you already tried some approach that we can compare to?
A straightforward implementation:
function dot3(x, y, z)
s = zero(promote_type(eltype(x), eltype(y), eltype(z)))
@simd for i in eachindex(x, y, z)
s += x[i] * y[i] * z[i]
end
return s
end
I am getting
julia> x = rand(1000); y = rand(1000); z = rand(1000);
julia> @btime dot3($x, $y, $z);
118.453 ns (0 allocations: 0 bytes)