1 // 2 // Copyright (c) 2017-2022 The Khronos Group Inc. 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 // 16 #include "harness/errorHelpers.h" 17 #include "harness/kernelHelpers.h" 18 #include "harness/typeWrappers.h" 19 #include "harness/testHarness.h" 20 #include "harness/mt19937.h" 21 22 23 // The number of errors to print out for each test 24 #define MAX_ERRORS_TO_PRINT 10 25 26 extern const size_t vector_aligns[]; 27 28 extern int create_program_and_kernel(const char *source, const char *kernel_name, cl_program *program_ret, cl_kernel *kernel_ret); 29 extern void fill_test_values( cl_long *outBufferA, cl_long *outBufferB, size_t numElements, MTdata d ); 30 31 32 extern int test_popcount(cl_device_id device, cl_context context, cl_command_queue queue, int num_elements); 33 extern int test_integer_clz(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 34 extern int test_integer_ctz(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 35 extern int test_integer_hadd(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 36 extern int test_integer_rhadd(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 37 extern int test_integer_mul_hi(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 38 extern int test_integer_rotate(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 39 extern int test_integer_clamp(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 40 extern int test_integer_mad_sat(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 41 extern int test_integer_mad_hi(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 42 extern int test_integer_min(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 43 extern int test_integer_max(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 44 extern int test_integer_upsample(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 45 46 extern int test_integer_addAssign(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 47 extern int test_integer_subtractAssign(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 48 extern int test_integer_multiplyAssign(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 49 extern int test_integer_divideAssign(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 50 extern int test_integer_moduloAssign(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 51 extern int test_integer_andAssign(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 52 extern int test_integer_orAssign(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 53 extern int test_integer_exclusiveOrAssign(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 54 55 extern int test_integer_abs(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 56 extern int test_integer_abs_diff(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 57 extern int test_integer_add_sat(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 58 extern int test_integer_sub_sat(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 59 60 extern int test_integer_mul24(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 61 extern int test_integer_mad24(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 62 63 extern int test_extended_bit_ops_extract(cl_device_id device_id, 64 cl_context context, 65 cl_command_queue commands, 66 int num_elements); 67 extern int test_extended_bit_ops_insert(cl_device_id device_id, 68 cl_context context, 69 cl_command_queue commands, 70 int num_elements); 71 extern int test_extended_bit_ops_reverse(cl_device_id device_id, 72 cl_context context, 73 cl_command_queue commands, 74 int num_elements); 75 76 extern int test_long_math(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 77 extern int test_long_logic(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 78 extern int test_long_shift(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 79 extern int test_long_compare(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 80 extern int test_ulong_math(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 81 extern int test_ulong_logic(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 82 extern int test_ulong_shift(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 83 extern int test_ulong_compare(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 84 85 extern int test_int_math(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 86 extern int test_int_logic(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 87 extern int test_int_shift(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 88 extern int test_int_compare(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 89 extern int test_uint_math(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 90 extern int test_uint_logic(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 91 extern int test_uint_shift(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 92 extern int test_uint_compare(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 93 94 extern int test_short_math(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 95 extern int test_short_logic(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 96 extern int test_short_shift(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 97 extern int test_short_compare(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 98 extern int test_ushort_math(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 99 extern int test_ushort_logic(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 100 extern int test_ushort_shift(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 101 extern int test_ushort_compare(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 102 103 extern int test_char_math(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 104 extern int test_char_logic(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 105 extern int test_char_shift(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 106 extern int test_char_compare(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 107 extern int test_uchar_math(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 108 extern int test_uchar_logic(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 109 extern int test_uchar_shift(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 110 extern int test_uchar_compare(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 111 112 113 extern int test_quick_long_math(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 114 extern int test_quick_long_logic(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 115 extern int test_quick_long_shift(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 116 extern int test_quick_long_compare(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 117 extern int test_quick_ulong_math(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 118 extern int test_quick_ulong_logic(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 119 extern int test_quick_ulong_shift(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 120 extern int test_quick_ulong_compare(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 121 122 extern int test_quick_int_math(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 123 extern int test_quick_int_logic(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 124 extern int test_quick_int_shift(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 125 extern int test_quick_int_compare(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 126 extern int test_quick_uint_math(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 127 extern int test_quick_uint_logic(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 128 extern int test_quick_uint_shift(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 129 extern int test_quick_uint_compare(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 130 131 extern int test_quick_short_math(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 132 extern int test_quick_short_logic(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 133 extern int test_quick_short_shift(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 134 extern int test_quick_short_compare(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 135 extern int test_quick_ushort_math(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 136 extern int test_quick_ushort_logic(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 137 extern int test_quick_ushort_shift(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 138 extern int test_quick_ushort_compare(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 139 140 extern int test_quick_char_math(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 141 extern int test_quick_char_logic(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 142 extern int test_quick_char_shift(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 143 extern int test_quick_char_compare(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 144 extern int test_quick_uchar_math(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 145 extern int test_quick_uchar_logic(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 146 extern int test_quick_uchar_shift(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 147 extern int test_quick_uchar_compare(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 148 149 extern int test_unary_ops_full(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 150 extern int test_unary_ops_increment(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 151 extern int test_unary_ops_decrement(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 152 153 extern int test_vector_scalar(cl_device_id deviceID, cl_context context, cl_command_queue queue, int num_elements); 154 155 extern int test_integer_dot_product(cl_device_id deviceID, cl_context context, 156 cl_command_queue queue, int num_elements); 157