* math_brute_force: Fix -Wformat warnings
The main sources of warnings were:
* Printing of 64-bit types, which is now done using the `PRI*64`
macros from <cinttypes> to ensure portability across 32 and 64-bit
builds.
* Printing of `size_t` types that lacked a `z` length modifier.
* Printing of values with a `z` length modifier that weren't a
`size_t` type.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
* [NFC] math_brute_force: clang-format after -Wformat changes
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
The "succeed" variables are never read and they don't seem to serve
any purpose that's not already provided by the "fail" variables.
In `add_index_bin_test` the "fail" variable is also set but unused,
but that may require an actual fix, so leaving that out of this
commit.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Add some clang-format off/on comments to keep lists and kernel code
readable.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Fix a `-Wsign-compare` warning in the `run()` function, which resulted
in many repeated warnings when compiling with `-Wall` due to the many
template instantiations.
Both `clGetKernelSubGroupInfo` queries return a `size_t`, so it is
unclear why the results of these queries were being cast to `int`.
The `dynsc` uses don't seem to work with negative values, so make the
field unsigned.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
* SVM: Fix memory allocation size.
9ad48998 generally made memory allocation and mapping consistent with a
size of size_t. Apply that fix to the final two allocations.
* check-format fixes
Co-authored-by: spauls <spauls@qti.qualcomm.com>
* Make InitFloatCoords suitable for all image types
Contributes #616
* Create common functions neutral for image types
Remove 3D specific code from common test_read_image so using
it for other image types is simpler in following patches
Contributes #616
* Removing unused code
Tidying commented out or unnecessary code
Contributes #616
Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com>
* Restoring 'lod' variable name
Contributes #616
* Default cases to handle unsupported image types
Contributes #616
* Resolving build issues
Contributes #616
* Fix formatting
Contributes #616
* Using TEST_FAIL as an error code.
Contributes #616
* Add static keyword, improve error handling
Contributes #616
* Fix build errors with least disruption
Contributes #616
Signed-off-by: Ellen Norris-Thompson <ellen.norris-thompson@arm.com>
Factor out a macro to set module-specific compilation flags for
GNU-like compilers. This simplifies setting compilation flags per
test.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
math_brute_force compiles cleanly with `-Wall` currently, so avoid
regressing from that state. Ideally we would enable `-Wall` in the
top-level CMakeLists.txt, but other tests do not compile cleanly with
`-Wall` yet.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Improve the design of the MTdataHolder wrapper:
* Make it a class instead of a struct with a private member, to make
it clearer that there is no direct access to the MTdata member.
* Make the 1-arg constructor `explicit` to avoid unintended
conversions.
* Forbid copy construction/assignment as MTdataHolder is never
initialised from an MTdataHolder object in the codebase.
* Define move construction/assignment as per the "rule of five".
Use the MTdataHolder class throughout math_brute_force, to simplify
code by avoiding manual resource management.
Original patch by Marco Antognini.
Signed-off-by: Marco Antognini <marco.antognini@arm.com>
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Signed-off-by: Marco Antognini <marco.antognini@arm.com>
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
* Fix "‘nadj’ may be used uninitialized in this function
[-Werror=maybe-uninitialized]".
* Fix "specified bound 4096 equals destination size
[-Werror=stringop-truncation]".
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
The "Ninja" CMake generator does not support multiple configurations,
i.e. it does not support use of the '--config' option when running
'cmake --build'. As such, the default configuration (i.e. Debug)
was getting used for all builds.
Use the CMAKE_BUILD_TYPE variable instead, so that we do release
builds, but change one build (ubuntu-20.04 aarch64) to use Debug
as its build type, to keep some build coverage for asserts, etc.
For Vulkan-Loader and OpenCL-ICD-Loader, we do release builds
unconditionally, as we assume there is no need in the CI workflow
to actually run the binaries that are built, and therefore no need
for any additional debug info.
Signed-off-by: Stuart Brady <stuart.brady@arm.com>
Without const, these variables would be flagged up by
`-Wunused-variable`.
Drop `struct` from the declarations as that is not needed in C++.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Use the print function from futures for Python 3 compatibility,
remove an unreachable statement, remove unused imports, and add
a missing sys.exit call when opening the log file fails.
Signed-off-by: Stuart Brady <stuart.brady@arm.com>
The condition inside the assert is dropped in Release builds, so
`num_printed` becomes unused.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Remove unused variables throughout the code base and enable the
`-Wunused-variable` warning flag globally to prevent new unused
variable issues being introduced in the future.
This is mostly a non-functional change, with one exception:
- In `test_conformance/api/test_kernel_arg_info.cpp`, an error check
of the clGetDeviceInfo return value was added.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Fix whitespace issues and remove superfluous parens in the
run_conformance.py script. This addresses 288 out of the 415
issues reported by pylint.
Signed-off-by: Stuart Brady <stuart.brady@arm.com>
* Use size_t instead of cl_int
Memory is allocated for cl_int,
but mapped as size_t.
Use size_t instead of cl_int during
allocation and mapping for consistency.
* Use size_t instead of cl_int
Memory is allocated for cl_int,
but mapped as size_t.
Use size_t instead of cl_int during
allocation and mapping for consistency.
* Use size_t instead of cl_int
Memory is allocated for cl_int,
but mapped as size_t.
Use size_t instead of cl_int during
allocation and mapping for consistency.
* Remove test_half changes.
Remove test_half changes from other fix
that got included in this commit.
* Final formatting fix.
test_error returns the err given as the first argument. As the
run_test function returns a bool, we end up returning true (meaning
pass) when an api function fails.
Instead return explicitly false (meaning fail).
* Initial command-buffer tests
Introduce some basic testing of the
[cl_khr_command_buffer](https://www.khronos.org/registry/OpenCL/specs/3.0-unified/html/OpenCL_Ext.html#cl_khr_command_buffer)
extension. This is intended as a starting point from which we can iteratively build up tests
for the extension collaboratively.
* Move tests into derived classes
* Move tests from methods into derived classes implementing
a `Run()` interface.
* Fix memory leak when command_buffer isn't freed when a test
is skipped.
* Print correct error code for
`CL_DEVICE_COMMAND_BUFFER_CAPABILITIES_KHR`
* Pass `nullptr` for queue parameter to command recording entry-points
* Define command-buffer type wrapper
Other OpenCL object have a wrapper to reference count their use
and free the wrapped object. The command-buffer object can't use
the generic type wrappers which are templated on the appropriate
release/retain function, as the release/retain functions are
queried at runtime.
Instead, define our own command-buffer wrapper class where a base
object is passed on construction which contains function pointers
to the release/retain functions that can be used in the wrapper.
* Use create_single_kernel_helper_create_program
Use `create_single_kernel_helper_create_program` rather than
hardcoding `clCreateProgramWithSource` to allow for other types
of program input.
Also fix bug using wrong enum for passing properties on command-buffer
creation, should be `CL_COMMAND_BUFFER_FLAGS_KHR`
* Add out-of-order command-buffer test
Introduce a basic test for checking sync-point use
with out-of-order command-buffers.
This also includes better checking of required queue properties.
Commit 9666ca3c ("[NFC] Fix sign-compare warnings in math_brute_force
(#1467)", 2022-08-23) inadvertently changed the semantics of the if
condition. The `i > gEndTestNumber` comparison was relying on
`gEndTestNumber` being promoted to unsigned. When casting `i` to
`int32_t`, this promotion no longer happens and as a result any tests
given on the command line were being skipped.
Use an unsigned type for `gStartTestNumber` and `gEndTestNumber` to
eliminate the casts and any implicit conversions between signed and
unsigned types.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Simplify code by avoiding manual resource management.
This commit only modifies tests that use one queue per thread. The
other unmodified tests are single-threaded and use the global
`gQueue`.
Original patch by Marco Antognini.
Signed-off-by: Marco Antognini <marco.antognini@arm.com>
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Fixes a missing-field-initializers warning. The original intent was
most likely to initialize both fields (similar to other functions in
this file), but a `,` was missed.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
When verification of the computed result fails, the test would still
report as "passed". This is because `s_test_fail` is only written to
and never read.
Fix the immediate issue by returning a failure value and incrementing
`gFailCount` if any error was detected. The error handling can be
improved further, but I'm leaving that out of the scope of this fix.
Fixes https://github.com/KhronosGroup/OpenCL-CTS/issues/1445
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Remove the `offset` field from both structures, because it was always
set to the global `gMinVectorSizeIndex`.
Improve documentation and rename some variables:
- `i` becomes `vectorSize`;
- `kernel_count` becomes `threadCount`.
Original patch by Marco Antognini.
Signed-off-by: Marco Antognini <marco.antognini@arm.com>
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Move the main `BuildKernelInfo` definition into `common.h` to reduce
code duplication.
Some tests (e.g. `i_unary_double.cpp`) use a different struct; rename
those structs to `BuildKernelInfo2` for now to avoid ambiguity.
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
Simplify code by avoiding manual resource management.
This allows removing clReleaseProgram from `MakeKernels` to reduce
behavioral differences between `MakeKernels` and `MakeKernel`.
Original patch by Marco Antognini.
Signed-off-by: Marco Antognini <marco.antognini@arm.com>
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
* Update cl_khr_extended_async_copies tests to the latest version of the extension
Update the 2D and 3D extended async copies tests. Previously they were based on
an older provisional version of the extension.
Also update the variable names to only use 'stride' to refer to the actual
stride values. Previously the tests used 'stride' to refer to the end of one
line or plane and the start of the next. This is not the commonly understood
meaning.
* Address cl_khr_extended_async_copies PR feedback
* Remove unnecessary parenthesis in kernel code
* Make variables `const` and rearrange so that we can reuse
variables, rather than repeating expressions.
* Add in missing vector size of 3 for 2D tests
* Use C++ String literals for kernel code
Rather than C strings use C++11 string literals to define the
kernel code in the extended async-copy tests. Doing this makes
the kernel code more readable.
Co-authored-by: Ewan Crawford <ewan@codeplay.com>