Added a Multiply and Divide node to the vector node
This does not actually work. You have to check b.is_zero(). For annoying reasons the 0 in this comparison calls the float3(const float *ptr) constructor...
the (float3) cast should not be necessary here.
You can also make an utility in the CodeBuilder to build a safe-divide.
that is correct at least.
It should be a static function and should take float3s as inputs. Also I think the loop does not make this code better compared to a version without a loop.
I suggest you just remove the llvm division generation for now. Otherwise you'd have to make the safe-divide work for this too, which is a bit more tricky.
Only two minor things missing, then this should be good to go :)
Do you actually make debug builds yourself? Can't test right now, but this should not work without () after is_zero.
Please use clang-format. It would automatically format the code according to our code style. There is a space missing here.