diff --git a/test_conformance/CMakeLists.txt b/test_conformance/CMakeLists.txt index 5d382cfc..156a8a28 100644 --- a/test_conformance/CMakeLists.txt +++ b/test_conformance/CMakeLists.txt @@ -65,6 +65,9 @@ set(CSV_FILES opencl_conformance_tests_full_no_math_or_conversions.csv opencl_conformance_tests_math.csv opencl_conformance_tests_quick.csv + opencl_conformance_tests_20_full.csv + opencl_conformance_tests_20_full_no_math_or_conversions.csv + opencl_conformance_tests_20_quick.csv ) set(PY_FILES run_conformance.py diff --git a/test_conformance/api/test_api_min_max.c b/test_conformance/api/test_api_min_max.c index fafa58f5..89b34c1d 100644 --- a/test_conformance/api/test_api_min_max.c +++ b/test_conformance/api/test_api_min_max.c @@ -1327,14 +1327,19 @@ int test_min_max_constant_buffer_size(cl_device_id deviceID, cl_context context, log_info("Reported max constant buffer size of %lld bytes.\n", maxSize); + // Limit test buffer size to 1/8 of CL_DEVICE_GLOBAL_MEM_SIZE error = clGetDeviceInfo(deviceID, CL_DEVICE_GLOBAL_MEM_SIZE, sizeof(maxGlobalSize), &maxGlobalSize, 0); test_error(error, "Unable to get CL_DEVICE_GLOBAL_MEM_SIZE"); + if (maxSize > maxGlobalSize / 8) maxSize = maxGlobalSize / 8; + error = clGetDeviceInfo(deviceID, CL_DEVICE_MAX_MEM_ALLOC_SIZE , sizeof(maxAllocSize), &maxAllocSize, 0); test_error(error, "Unable to get CL_DEVICE_MAX_MEM_ALLOC_SIZE "); + if (maxSize > maxAllocSize) maxSize = maxAllocSize; + /* Create a kernel to test with */ if( create_single_kernel_helper( context, &program, &kernel, 1, sample_const_arg_kernel, "sample_test" ) != 0 ) { @@ -1426,7 +1431,7 @@ int test_min_max_constant_buffer_size(cl_device_id deviceID, cl_context context, if (allocPassed) { if (currentSize < maxSize/PASSING_FRACTION) { - log_error("Failed to allocate at least 1/4 of the reported constant size.\n"); + log_error("Failed to allocate at least 1/8 of the reported constant size.\n"); return -1; } else if (currentSize != maxSize) { log_info("Passed at reduced size. (%lld of %lld bytes)\n", currentSize, maxSize); diff --git a/test_conformance/basic/test_constant.c b/test_conformance/basic/test_constant.c index ddc9e016..a36039a9 100644 --- a/test_conformance/basic/test_constant.c +++ b/test_conformance/basic/test_constant.c @@ -111,14 +111,20 @@ test_constant(cl_device_id device, cl_context context, cl_command_queue queue, i test_error( err, "Unable to get max constant buffer size" ); log_info("Device reports CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE %llu bytes.\n", maxSize); + + // Limit test buffer size to 1/4 of CL_DEVICE_GLOBAL_MEM_SIZE err = clGetDeviceInfo(device, CL_DEVICE_GLOBAL_MEM_SIZE, sizeof(maxGlobalSize), &maxGlobalSize, 0); test_error(err, "Unable to get CL_DEVICE_GLOBAL_MEM_SIZE"); + if (maxSize > maxGlobalSize / 4) maxSize = maxGlobalSize / 4; + err = clGetDeviceInfo(device, CL_DEVICE_MAX_MEM_ALLOC_SIZE , sizeof(maxAllocSize), &maxAllocSize, 0); test_error(err, "Unable to get CL_DEVICE_MAX_MEM_ALLOC_SIZE "); + if (maxSize > maxAllocSize) maxSize = maxAllocSize; + maxSize/=4; num_ints = (size_t)maxSize/sizeof(cl_int); num_floats = (size_t)maxSize/sizeof(cl_float); diff --git a/test_conformance/compatibility/test_conformance/api/test_api_min_max.c b/test_conformance/compatibility/test_conformance/api/test_api_min_max.c index bfbb2e87..8393f230 100644 --- a/test_conformance/compatibility/test_conformance/api/test_api_min_max.c +++ b/test_conformance/compatibility/test_conformance/api/test_api_min_max.c @@ -496,6 +496,7 @@ int test_min_max_mem_alloc_size(cl_device_id deviceID, cl_context context, cl_co if (memSize > (cl_ulong)SIZE_MAX) { memSize = (cl_ulong)SIZE_MAX; } + if( maxAllocSize < requiredAllocSize) { log_error( "ERROR: Reported max allocation size is less than required %lldMB! (%llu or %lluMB, from a total mem size of %lldMB)\n", (requiredAllocSize / 1024) / 1024, maxAllocSize, (maxAllocSize / 1024)/1024, (memSize / 1024)/1024 ); @@ -503,10 +504,12 @@ int test_min_max_mem_alloc_size(cl_device_id deviceID, cl_context context, cl_co } requiredAllocSize = ((memSize / 4) > (1024 * 1024 * 1024)) ? 1024 * 1024 * 1024 : memSize / 4; + if (gIsEmbedded) requiredAllocSize = (requiredAllocSize < 1 * 1024 * 1024) ? 1 * 1024 * 1024 : requiredAllocSize; else requiredAllocSize = (requiredAllocSize < 128 * 1024 * 1024) ? 128 * 1024 * 1024 : requiredAllocSize; + if( maxAllocSize < requiredAllocSize ) { log_error( "ERROR: Reported max allocation size is less than required of total memory! (%llu or %lluMB, from a total mem size of %lluMB)\n", maxAllocSize, (maxAllocSize / 1024)/1024, (requiredAllocSize / 1024)/1024 ); @@ -519,7 +522,6 @@ int test_min_max_mem_alloc_size(cl_device_id deviceID, cl_context context, cl_co if ( memSize < maxAllocSize ) { log_info("Global memory size is less than max allocation size, using that.\n"); maxAllocSize = memSize; - } minSizeToTry = maxAllocSize/16; @@ -1320,14 +1322,19 @@ int test_min_max_constant_buffer_size(cl_device_id deviceID, cl_context context, log_info("Reported max constant buffer size of %lld bytes.\n", maxSize); + // Limit test buffer size to 1/8 of CL_DEVICE_GLOBAL_MEM_SIZE error = clGetDeviceInfo(deviceID, CL_DEVICE_GLOBAL_MEM_SIZE, sizeof(maxGlobalSize), &maxGlobalSize, 0); test_error(error, "Unable to get CL_DEVICE_GLOBAL_MEM_SIZE"); + if (maxSize > maxGlobalSize / 8) maxSize = maxGlobalSize / 8; + error = clGetDeviceInfo(deviceID, CL_DEVICE_MAX_MEM_ALLOC_SIZE , sizeof(maxAllocSize), &maxAllocSize, 0); test_error(error, "Unable to get CL_DEVICE_MAX_MEM_ALLOC_SIZE "); + if (maxSize > maxAllocSize) maxSize = maxAllocSize; + /* Create a kernel to test with */ if( create_single_kernel_helper( context, &program, &kernel, 1, sample_const_arg_kernel, "sample_test" ) != 0 ) { @@ -1418,7 +1425,7 @@ int test_min_max_constant_buffer_size(cl_device_id deviceID, cl_context context, if (allocPassed) { if (currentSize < maxSize/PASSING_FRACTION) { - log_error("Failed to allocate at least 1/4 of the reported constant size.\n"); + log_error("Failed to allocate at least 1/8 of the reported constant size.\n"); return -1; } else if (currentSize != maxSize) { log_info("Passed at reduced size. (%lld of %lld bytes)\n", currentSize, maxSize); diff --git a/test_conformance/compatibility/test_conformance/basic/test_constant.c b/test_conformance/compatibility/test_conformance/basic/test_constant.c index 27bff01f..2427b3aa 100644 --- a/test_conformance/compatibility/test_conformance/basic/test_constant.c +++ b/test_conformance/compatibility/test_conformance/basic/test_constant.c @@ -110,14 +110,20 @@ test_constant(cl_device_id device, cl_context context, cl_command_queue queue, i test_error( err, "Unable to get max constant buffer size" ); log_info("Device reports CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE %llu bytes.\n", maxSize); + + // Limit test buffer size to 1/4 of CL_DEVICE_GLOBAL_MEM_SIZE err = clGetDeviceInfo(device, CL_DEVICE_GLOBAL_MEM_SIZE, sizeof(maxGlobalSize), &maxGlobalSize, 0); test_error(err, "Unable to get CL_DEVICE_GLOBAL_MEM_SIZE"); + if (maxSize > maxGlobalSize / 4) maxSize = maxGlobalSize / 4; + err = clGetDeviceInfo(device, CL_DEVICE_MAX_MEM_ALLOC_SIZE , sizeof(maxAllocSize), &maxAllocSize, 0); test_error(err, "Unable to get CL_DEVICE_MAX_MEM_ALLOC_SIZE "); + if (maxSize > maxAllocSize) maxSize = maxAllocSize; + maxSize/=4; num_ints = (size_t)maxSize/sizeof(cl_int); num_floats = (size_t)maxSize/sizeof(cl_float); diff --git a/test_conformance/compatibility/test_conformance/basic/test_hostptr.c b/test_conformance/compatibility/test_conformance/basic/test_hostptr.c index fed42ff0..25fc0f74 100644 --- a/test_conformance/compatibility/test_conformance/basic/test_hostptr.c +++ b/test_conformance/compatibility/test_conformance/basic/test_hostptr.c @@ -223,7 +223,7 @@ test_hostptr(cl_device_id device, cl_context context, cl_command_queue queue, in log_info("Mapping the CL_MEM_USE_HOST_PTR image with clEnqueueMapImage...\n"); size_t row_pitch; lock_buffer = clEnqueueMapImage(queue, streams[5], CL_TRUE, - 0, origin, region, + CL_MAP_READ, origin, region, &row_pitch, NULL, 0, NULL, NULL, &err); test_error(err, "clEnqueueMapImage failed"); diff --git a/test_conformance/gl/test_images_read_common.cpp b/test_conformance/gl/test_images_read_common.cpp index 1d0529d5..44c0dc75 100644 --- a/test_conformance/gl/test_images_read_common.cpp +++ b/test_conformance/gl/test_images_read_common.cpp @@ -253,7 +253,7 @@ int test_cl_image_read( cl_context context, cl_command_queue queue, programPtr = kernelSource; if( create_single_kernel_helper( context, &program, &kernel, 1, - (const char **)&programPtr, "sample_test" ) ) + (const char **)&programPtr, "sample_test", "-cl-std=CL2.0" ) ) { return -1; } diff --git a/test_conformance/opencl_conformance_tests_20_full.csv b/test_conformance/opencl_conformance_tests_20_full.csv new file mode 100644 index 00000000..02062996 --- /dev/null +++ b/test_conformance/opencl_conformance_tests_20_full.csv @@ -0,0 +1,117 @@ +# +# OpenCL Conformance Test Suite (full version) +# + +# ######################################### +# Basic Information on the compute device +# ######################################### +Compute Info,computeinfo/computeinfo + +# ######################################### +# Basic operation tests +# ######################################### +Basic,basic/test_basic +API,api/test_api +Compiler,compiler/test_compiler + +# ######################################### +# Common mathematical functions +# ######################################### +Common Functions,commonfns/test_commonfns +Geometric Functions,geometrics/test_geometrics +Relationals,relationals/test_relationals + +# ######################################### +# General operation +# ######################################### +Thread Dimensions,thread_dimensions/test_thread_dimensions full* +Multiple Device/Context,multiple_device_context/test_multiples +Atomics,atomics/test_atomics +Profiling,profiling/test_profiling +Events,events/test_events +Allocations (single maximum),allocations/test_allocations single 5 all +Allocations (total maximum),allocations/test_allocations multiple 5 all +VecAlign, vec_align/test_vecalign +VecStep, vec_step/test_vecstep +Printf,printf/test_printf +Device Partitioning,device_partition/test_device_partition + +# ######################################### +# Buffers and images +# ######################################### +Buffers,buffers/test_buffers +Images (API Info),images/clGetInfo/test_cl_get_info +Images (Kernel Methods),images/kernel_image_methods/test_kernel_image_methods +Images (Kernel),images/kernel_read_write/test_image_streams CL_FILTER_NEAREST +Images (Kernel pitch),images/kernel_read_write/test_image_streams use_pitches CL_FILTER_NEAREST +Images (Kernel max size),images/kernel_read_write/test_image_streams max_images CL_FILTER_NEAREST +Images (clCopyImage),images/clCopyImage/test_cl_copy_images +Images (clCopyImage small),images/clCopyImage/test_cl_copy_images small_images +Images (clCopyImage max size),images/clCopyImage/test_cl_copy_images max_images +Images (clReadWriteImage),images/clReadWriteImage/test_cl_read_write_images +Images (clReadWriteImage pitch),images/clReadWriteImage/test_cl_read_write_images use_pitches +Images (clReadWriteImage max size),images/clReadWriteImage/test_cl_read_write_images max_images +Images (clFillImage),images/clFillImage/test_cl_fill_images +Images (clFillImage pitch),images/clFillImage/test_cl_fill_images use_pitches +Images (clFillImage max size),images/clFillImage/test_cl_fill_images max_images +Images (Samplerless),images/samplerlessReads/test_samplerless_reads +Images (Samplerless pitch),images/samplerlessReads/test_samplerless_reads use_pitches +Images (Samplerless max size),images/samplerlessReads/test_samplerless_reads max_images +Mem (Host Flags),mem_host_flags/test_mem_host_flags + +# ######################################### +# Headers +# ######################################### +Headers (cl_typen), headers/test_headers +Headers (cl.h standalone), headers/test_cl_h +Headers (cl_platform.h standalone), headers/test_cl_platform_h +Headers (cl_gl.h standalone), headers/test_cl_gl_h +Headers (opencl.h standalone), headers/test_opencl_h + +# ######################################### +# CPU is required to pass linear and normalized image filtering +# ######################################### +CL_DEVICE_TYPE_CPU, Images (Kernel CL_FILTER_LINEAR),images/kernel_read_write/test_image_streams CL_FILTER_LINEAR +CL_DEVICE_TYPE_CPU, Images (Kernel CL_FILTER_LINEAR pitch),images/kernel_read_write/test_image_streams use_pitches CL_FILTER_LINEAR +CL_DEVICE_TYPE_CPU, Images (Kernel CL_FILTER_LINEAR max size),images/kernel_read_write/test_image_streams max_images CL_FILTER_LINEAR + +# ######################################### +# OpenGL/CL interaction +# ######################################### +OpenCL-GL Sharing,gl/test_gl + +# ######################################### +# Thorough math and conversions tests +# ######################################### +Select,select/test_select +Conversions,conversions/test_conversions +Contractions,contractions/contractions +Math,math_brute_force/bruteforce +Integer Ops,integer_ops/test_integer_ops +Half Ops,half/Test_half + +# ######################################### +# Compatibility with Previous Versions +# ######################################### +Basic 1.2,compatibility/test_conformance/basic/test_basic +API 1.2,compatibility/test_conformance/api/test_api + +##################################### +# OpenCL 2.0 tests +##################################### +C11 Atomics,c11_atomics/test_c11_atomics +Execution Model,device_execution/test_device_execution +Generic Address Space,generic_address_space/test_generic_address_space +Non Uniform Work Groups,non_uniform_work_group/test_non_uniform_work_group +Pipes,pipes/test_pipes +SVM,SVM/test_SVM +Workgroups,workgroups/test_workgroups + +######################################### +# Extensions +######################################### +SPIR,spir/test_spir +Mipmaps (Kernel),images/kernel_read_write/test_image_streams test_mipmaps CL_FILTER_NEAREST +Mipmaps (clCopyImage),images/clCopyImage/test_cl_copy_images test_mipmaps +Mipmaps (clReadWriteImage),images/clReadWriteImage/test_cl_read_write_images test_mipmaps +Subgroups,subgroups/test_subgroups \ No newline at end of file diff --git a/test_conformance/opencl_conformance_tests_20_full_no_math_or_conversions.csv b/test_conformance/opencl_conformance_tests_20_full_no_math_or_conversions.csv new file mode 100644 index 00000000..15d829aa --- /dev/null +++ b/test_conformance/opencl_conformance_tests_20_full_no_math_or_conversions.csv @@ -0,0 +1,92 @@ +# +# OpenCL Conformance Test Suite (full version) +# + +# ######################################### +# Basic Information on the compute device +# ######################################### +Compute Info,computeinfo/computeinfo + +# ######################################### +# Basic operation tests +# ######################################### +Basic,basic/test_basic +API,api/test_api +Compiler,compiler/test_compiler + +# ######################################### +# Common mathematical functions +# ######################################### +Common Functions,commonfns/test_commonfns +Geometric Functions,geometrics/test_geometrics +Relationals,relationals/test_relationals + +# ######################################### +# General operation +# ######################################### +Thread Dimensions,thread_dimensions/test_thread_dimensions full* +Multiple Device/Context,multiple_device_context/test_multiples +Atomics,atomics/test_atomics +Profiling,profiling/test_profiling +Events,events/test_events +Allocations (single maximum),allocations/test_allocations single 5 all +Allocations (total maximum),allocations/test_allocations multiple 5 all +VecAlign, vec_align/test_vecalign +VecStep, vec_step/test_vecstep + +# ######################################### +# Buffers and images +# ######################################### +Buffers,buffers/test_buffers +Images (API Info),images/clGetInfo/test_cl_get_info +Images (Kernel Methods),images/kernel_image_methods/test_kernel_image_methods +Images (Kernel),images/kernel_read_write/test_image_streams CL_FILTER_NEAREST +Images (Kernel pitch),images/kernel_read_write/test_image_streams use_pitches CL_FILTER_NEAREST +Images (Kernel max size),images/kernel_read_write/test_image_streams max_images CL_FILTER_NEAREST +Images (clCopyImage),images/clCopyImage/test_cl_copy_images +Images (clCopyImage small),images/clCopyImage/test_cl_copy_images small_images +Images (clCopyImage max size),images/clCopyImage/test_cl_copy_images max_images +Images (clReadWriteImage),images/clReadWriteImage/test_cl_read_write_images +Images (clReadWriteImage pitch),images/clReadWriteImage/test_cl_read_write_images use_pitches +Images (clReadWriteImage max size),images/clReadWriteImage/test_cl_read_write_images max_images +Images (clFillImage),images/clFillImage/test_cl_fill_images +Images (clFillImage pitch),images/clFillImage/test_cl_fill_images use_pitches +Images (clFillImage max size),images/clFillImage/test_cl_fill_images max_images +Images (Samplerless),images/samplerlessReads/test_samplerless_reads +Images (Samplerless pitch),images/samplerlessReads/test_samplerless_reads use_pitches +Images (Samplerless max size),images/samplerlessReads/test_samplerless_reads max_images +Mem (Host Flags),mem_host_flags/test_mem_host_flags + +# ######################################### +# Headers +# ######################################### +Headers (cl_typen), headers/test_headers +Headers (cl.h standalone), headers/test_cl_h +Headers (cl_platform.h standalone), headers/test_cl_platform_h +Headers (cl_gl.h standalone), headers/test_cl_gl_h +Headers (opencl.h standalone), headers/test_opencl_h +Headers (cl.h standalone C99), headers/test_cl_h_c99 +Headers (cl_platform.h standalone C99), headers/test_cl_platform_h_c99 +Headers (cl_gl.h standalone C99), headers/test_cl_gl_h_c99 +Headers (opencl.h standalone C99), headers/test_opencl_h_c99 + +# ######################################### +# CPU is required to pass linear and normalized image filtering +# ######################################### +CL_DEVICE_TYPE_CPU, Images (Kernel CL_FILTER_LINEAR),images/kernel_read_write/test_image_streams CL_FILTER_LINEAR +CL_DEVICE_TYPE_CPU, Images (Kernel CL_FILTER_LINEAR pitch),images/kernel_read_write/test_image_streams use_pitches CL_FILTER_LINEAR +CL_DEVICE_TYPE_CPU, Images (Kernel CL_FILTER_LINEAR max size),images/kernel_read_write/test_image_streams max_images CL_FILTER_LINEAR + +# ######################################### +# OpenGL/CL interaction +# ######################################### +OpenCL-GL Sharing,gl/test_gl + +# ######################################### +# Thorough math and conversions tests +# ######################################### +Select,select/test_select +Contractions,contractions/contractions +Integer Ops,integer_ops/test_integer_ops +Half Ops,half/Test_half + diff --git a/test_conformance/opencl_conformance_tests_20_quick.csv b/test_conformance/opencl_conformance_tests_20_quick.csv new file mode 100644 index 00000000..f0589ca8 --- /dev/null +++ b/test_conformance/opencl_conformance_tests_20_quick.csv @@ -0,0 +1,90 @@ +# +# OpenCL Conformance Test Suite (quick version) +# The quick version skips some long-running image tests, runs a shorter math test, +# and does not run the conversion test. +# + +# ######################################### +# Basic Information on the compute device +# ######################################### +Compute Info,computeinfo/computeinfo + +# ######################################### +# Basic operation tests +# ######################################### +Basic,basic/test_basic +API,api/test_api +Compiler,compiler/test_compiler + +# ######################################### +# Common mathematical functions +# ######################################### +Common Functions,commonfns/test_commonfns +Geometric Functions,geometrics/test_geometrics +Relationals,relationals/test_relationals + +# ######################################### +# General operation +# ######################################### +Thread Dimensions,thread_dimensions/test_thread_dimensions quick* +#Multiple Device/Context,multiple_device_context/test_multiples +Atomics,atomics/test_atomics +Profiling,profiling/test_profiling +Events,events/test_events +Allocations (single maximum),allocations/test_allocations single 5 all +Allocations (total maximum),allocations/test_allocations multiple 5 all +Printf,printf/test_printf +Device Partitioning,device_partition/test_device_partition + +# ######################################### +# Buffers and images +# ######################################### +Buffers,buffers/test_buffers +Images (API Info),images/clGetInfo/test_cl_get_info +Images (Kernel Methods),images/kernel_image_methods/test_kernel_image_methods +Images (Kernel),images/kernel_read_write/test_image_streams CL_FILTER_NEAREST +Images (Kernel pitch),images/kernel_read_write/test_image_streams use_pitches CL_FILTER_NEAREST +Images (Kernel max size),images/kernel_read_write/test_image_streams max_images CL_FILTER_NEAREST +Images (clCopyImage),images/clCopyImage/test_cl_copy_images +Images (clCopyImage max size),images/clCopyImage/test_cl_copy_images max_images +Images (clReadWriteImage),images/clReadWriteImage/test_cl_read_write_images +Images (clReadWriteImage pitch),images/clReadWriteImage/test_cl_read_write_images use_pitches +Images (clReadWriteImage max size),images/clReadWriteImage/test_cl_read_write_images max_images +Images (clFillImage),images/clFillImage/test_cl_fill_images +Images (clFillImage pitch),images/clFillImage/test_cl_fill_images use_pitches +Images (clFillImage max size),images/clFillImage/test_cl_fill_images max_images +Images (Samplerless),images/samplerlessReads/test_samplerless_reads +Images (Samplerless pitch),images/samplerlessReads/test_samplerless_reads use_pitches +Images (Samplerless max size),images/samplerlessReads/test_samplerless_reads max_images +Mem (Host Flags),mem_host_flags/test_mem_host_flags + +# ######################################### +# Headers +# ######################################### +Headers (cl_typen), headers/test_headers +Headers (cl.h standalone), headers/test_cl_h +Headers (cl_platform.h standalone), headers/test_cl_platform_h +Headers (cl_gl.h standalone), headers/test_cl_gl_h +Headers (opencl.h standalone), headers/test_opencl_h + +# ######################################### +# CPU is required to pass linear and normalized image filtering +# ######################################### +CL_DEVICE_TYPE_CPU, Images (Kernel CL_FILTER_LINEAR),images/kernel_read_write/test_image_streams CL_FILTER_LINEAR +CL_DEVICE_TYPE_CPU, Images (Kernel CL_FILTER_LINEAR pitch),images/kernel_read_write/test_image_streams use_pitches CL_FILTER_LINEAR +CL_DEVICE_TYPE_CPU, Images (Kernel CL_FILTER_LINEAR max size),images/kernel_read_write/test_image_streams max_images CL_FILTER_LINEAR + +# ######################################### +# OpenGL/CL interaction +# ######################################### +OpenCL-GL Sharing,gl/test_gl + +# ######################################### +# Thorough math and conversions tests +# ######################################### +Select,select/test_select +#Conversions,conversions/test_conversions +Contractions,contractions/contractions +Math,math_brute_force/bruteforce -w +Integer Ops,integer_ops/test_integer_ops integer_* quick_* +Half Ops,half/Test_half -w