Fix createOpUndef tests.

If we get a Nan from the OpFMul %f32 %undef %c_f32_0 then zero that
out as well.
diff --git a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
index 0e731a2..6534693 100644
--- a/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
+++ b/external/vulkancts/modules/vulkan/spirv_assembly/vktSpvAsmInstructionTests.cpp
@@ -6726,8 +6726,10 @@
 		"%label_testfun = OpLabel\n"
 		"%undef = OpUndef %f32\n"
 		"%zero = OpFMul %f32 %undef %c_f32_0\n"
+		"%is_nan = OpIsNan %bool %zero\n" //OpUndef may result in NaN which may turn %zero into Nan.
+		"%actually_zero = OpSelect %f32 %is_nan %c_f32_0 %zero\n"
 		"%a = OpVectorExtractDynamic %f32 %param1 %c_i32_0\n"
-		"%b = OpFAdd %f32 %a %zero\n"
+		"%b = OpFAdd %f32 %a %actually_zero\n"
 		"%ret = OpVectorInsertDynamic %v4f32 %param1 %b %c_i32_0\n"
 		"OpReturnValue %ret\n"
 		"OpFunctionEnd\n"
@@ -6770,14 +6772,22 @@
 		"%zero_1 = OpVectorExtractDynamic %f32 %vzero %c_i32_1\n"
 		"%zero_2 = OpVectorExtractDynamic %f32 %vzero %c_i32_2\n"
 		"%zero_3 = OpVectorExtractDynamic %f32 %vzero %c_i32_3\n"
+		"%is_nan_0 = OpIsNan %bool %zero_0\n"
+		"%is_nan_1 = OpIsNan %bool %zero_1\n"
+		"%is_nan_2 = OpIsNan %bool %zero_2\n"
+		"%is_nan_3 = OpIsNan %bool %zero_3\n"
+		"%actually_zero_0 = OpSelect %f32 %is_nan_0 %c_f32_0 %zero_0\n"
+		"%actually_zero_1 = OpSelect %f32 %is_nan_0 %c_f32_0 %zero_1\n"
+		"%actually_zero_2 = OpSelect %f32 %is_nan_0 %c_f32_0 %zero_2\n"
+		"%actually_zero_3 = OpSelect %f32 %is_nan_0 %c_f32_0 %zero_3\n"
 		"%param1_0 = OpVectorExtractDynamic %f32 %param1 %c_i32_0\n"
 		"%param1_1 = OpVectorExtractDynamic %f32 %param1 %c_i32_1\n"
 		"%param1_2 = OpVectorExtractDynamic %f32 %param1 %c_i32_2\n"
 		"%param1_3 = OpVectorExtractDynamic %f32 %param1 %c_i32_3\n"
-		"%sum_0 = OpFAdd %f32 %param1_0 %zero_0\n"
-		"%sum_1 = OpFAdd %f32 %param1_1 %zero_1\n"
-		"%sum_2 = OpFAdd %f32 %param1_2 %zero_2\n"
-		"%sum_3 = OpFAdd %f32 %param1_3 %zero_3\n"
+		"%sum_0 = OpFAdd %f32 %param1_0 %actually_zero_0\n"
+		"%sum_1 = OpFAdd %f32 %param1_1 %actually_zero_1\n"
+		"%sum_2 = OpFAdd %f32 %param1_2 %actually_zero_2\n"
+		"%sum_3 = OpFAdd %f32 %param1_3 %actually_zero_3\n"
 		"%ret3 = OpVectorInsertDynamic %v4f32 %param1 %sum_3 %c_i32_3\n"
 		"%ret2 = OpVectorInsertDynamic %v4f32 %ret3 %sum_2 %c_i32_2\n"
 		"%ret1 = OpVectorInsertDynamic %v4f32 %ret2 %sum_1 %c_i32_1\n"
@@ -6800,14 +6810,22 @@
 		"%zero_1 = OpCompositeExtract %f32 %mzero 0 1\n"
 		"%zero_2 = OpCompositeExtract %f32 %mzero 1 0\n"
 		"%zero_3 = OpCompositeExtract %f32 %mzero 1 1\n"
+		"%is_nan_0 = OpIsNan %bool %zero_0\n"
+		"%is_nan_1 = OpIsNan %bool %zero_1\n"
+		"%is_nan_2 = OpIsNan %bool %zero_2\n"
+		"%is_nan_3 = OpIsNan %bool %zero_3\n"
+		"%actually_zero_0 = OpSelect %f32 %is_nan_0 %c_f32_0 %zero_0\n"
+		"%actually_zero_1 = OpSelect %f32 %is_nan_0 %c_f32_0 %zero_1\n"
+		"%actually_zero_2 = OpSelect %f32 %is_nan_0 %c_f32_0 %zero_2\n"
+		"%actually_zero_3 = OpSelect %f32 %is_nan_0 %c_f32_0 %zero_3\n"
 		"%param1_0 = OpVectorExtractDynamic %f32 %param1 %c_i32_0\n"
 		"%param1_1 = OpVectorExtractDynamic %f32 %param1 %c_i32_1\n"
 		"%param1_2 = OpVectorExtractDynamic %f32 %param1 %c_i32_2\n"
 		"%param1_3 = OpVectorExtractDynamic %f32 %param1 %c_i32_3\n"
-		"%sum_0 = OpFAdd %f32 %param1_0 %zero_0\n"
-		"%sum_1 = OpFAdd %f32 %param1_1 %zero_1\n"
-		"%sum_2 = OpFAdd %f32 %param1_2 %zero_2\n"
-		"%sum_3 = OpFAdd %f32 %param1_3 %zero_3\n"
+		"%sum_0 = OpFAdd %f32 %param1_0 %actually_zero_0\n"
+		"%sum_1 = OpFAdd %f32 %param1_1 %actually_zero_1\n"
+		"%sum_2 = OpFAdd %f32 %param1_2 %actually_zero_2\n"
+		"%sum_3 = OpFAdd %f32 %param1_3 %actually_zero_3\n"
 		"%ret3 = OpVectorInsertDynamic %v4f32 %param1 %sum_3 %c_i32_3\n"
 		"%ret2 = OpVectorInsertDynamic %v4f32 %ret3 %sum_2 %c_i32_2\n"
 		"%ret1 = OpVectorInsertDynamic %v4f32 %ret2 %sum_1 %c_i32_1\n"