At first, I was suspicious of implementing `all()` using multiplication, but that seems to be what the native compiler does...
``` float4 main() : sv_target { float4 a = {1, 1, 1, 0}; float4 b = {1e20, 1e20, 1e20, 0};
return float4(all(a), all(b), -1, -1); } ```
this actually returns `(0, 1, -1, -1)` both in native and using this patch, so it is correct in giving the incorrect result.