Add test for -cl-fp32-correctly-rounded-divide-sqrt to spir subtest.
diff --git a/test_conformance/spir/main.cpp b/test_conformance/spir/main.cpp
index 9729db3..b44c8cb 100644
--- a/test_conformance/spir/main.cpp
+++ b/test_conformance/spir/main.cpp
@@ -4136,6 +4136,18 @@
         "math_kernel3.cospi_float3",
         "math_kernel2.cospi_float2",
         "math_kernel.cospi_float",
+        "math_kernel4.div_float4",
+        "math_kernel16.div_float16",
+        "math_kernel8.div_float8",
+        "math_kernel2.div_float2",
+        "math_kernel3.div_float3",
+        "math_kernel.div_float",
+        "math_kernel4.div_cr_float4",
+        "math_kernel16.div_cr_float16",
+        "math_kernel8.div_cr_float8",
+        "math_kernel2.div_cr_float2",
+        "math_kernel3.div_cr_float3",
+        "math_kernel.div_cr_float",
         "math_kernel16.exp_float16",
         "math_kernel4.exp_float4",
         "math_kernel3.exp_float3",
@@ -4478,6 +4490,12 @@
         "math_kernel2.sqrt_float2",
         "math_kernel3.sqrt_float3",
         "math_kernel.sqrt_float",
+        "math_kernel4.sqrt_cr_float4",
+        "math_kernel16.sqrt_cr_float16",
+        "math_kernel8.sqrt_cr_float8",
+        "math_kernel2.sqrt_cr_float2",
+        "math_kernel3.sqrt_cr_float3",
+        "math_kernel.sqrt_cr_float",
         "math_kernel8.tan_float8",
         "math_kernel16.tan_float16",
         "math_kernel4.tan_float4",
diff --git a/test_conformance/spir/math_brute_force.zip b/test_conformance/spir/math_brute_force.zip
index b27a424..8a2428c 100644
--- a/test_conformance/spir/math_brute_force.zip
+++ b/test_conformance/spir/math_brute_force.zip
Binary files differ
diff --git a/test_conformance/spir/run_build_test.cpp b/test_conformance/spir/run_build_test.cpp
index c00fcf8..684226a 100644
--- a/test_conformance/spir/run_build_test.cpp
+++ b/test_conformance/spir/run_build_test.cpp
@@ -38,7 +38,7 @@
 #include "datagen.h"
 #include "run_services.h"
 #include "run_build_test.h"
-
+#include <CL/cl.h>
 //
 // Task
 //
@@ -366,15 +366,33 @@
     create_context_and_queue(device, &context, &queue);
     clProgramWrapper clprog = create_program_from_cl(context, cl_file_path);
     clProgramWrapper bcprog = create_program_from_bc(context, bc_file);
+    std::string bcoptions = "-x spir -spir-std=1.2 -cl-kernel-arg-info";
+    std::string cloptions = "-cl-kernel-arg-info";
+
+    cl_device_fp_config gFloatCapabilities = 0;
+    cl_int err;
+    if ((err = clGetDeviceInfo(device, CL_DEVICE_SINGLE_FP_CONFIG, sizeof(gFloatCapabilities), &gFloatCapabilities, NULL)))
+    {
+      log_info("Unable to get device CL_DEVICE_SINGLE_FP_CONFIG. (%d)\n", err);
+    }
+
+    if (strstr(test_name, "div_cr") || strstr(test_name, "sqrt_cr")) {
+      if ((gFloatCapabilities & CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT) == 0)
+        return;
+      else {
+        bcoptions += " -cl-fp32-correctly-rounded-divide-sqrt";
+        cloptions += " -cl-fp32-correctly-rounded-divide-sqrt";
+      }
+    }
 
     // Building the programs.
-    BuildTask clBuild(clprog, device, "-cl-kernel-arg-info");
+    BuildTask clBuild(clprog, device, cloptions.c_str());
     if (!clBuild.execute()) {
         std::cerr << clBuild.getErrorLog() << std::endl;
         return false;
     }
 
-    SpirBuildTask bcBuild(bcprog, device, "-x spir -spir-std=1.2 -cl-kernel-arg-info");
+    SpirBuildTask bcBuild(bcprog, device, bcoptions.c_str());
     if (!bcBuild.execute()) {
         std::cerr << bcBuild.getErrorLog() << std::endl;
         return false;