CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
170 lines
5.1 KiB
C++
170 lines
5.1 KiB
C++
/*
|
|
* Copyright (c) Advanced Micro Devices, Inc., or its affiliates.
|
|
*
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
#include <hip_test_common.hh>
|
|
|
|
class Dummy {
|
|
public:
|
|
__device__ Dummy() {}
|
|
__device__ ~Dummy() {}
|
|
};
|
|
|
|
/* int atomicAnd(int* address, int val) */
|
|
__global__ void atomicAnd_int_v1(int* address, int* result) { *result = atomicAnd(&address, 1234); }
|
|
|
|
__global__ void atomicAnd_int_v2(int* address, int* result) {
|
|
*result = atomicAnd(address, address);
|
|
}
|
|
|
|
__global__ void atomicAnd_int_v3(int* address, int* result) { *result = atomicAnd(1234, 1234); }
|
|
|
|
__global__ void atomicAnd_int_v4(Dummy* address, int* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_int_v5(char* address, int* result) { *result = atomicAnd(address, 1234); }
|
|
|
|
__global__ void atomicAnd_int_v6(short* address, int* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_int_v7(long* address, int* result) { *result = atomicAnd(address, 1234); }
|
|
|
|
__global__ void atomicAnd_int_v8(long long* address, int* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_int_v9(float* address, int* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_int_v10(double* address, int* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
/* unsigned int atomicAnd(unsigned int* address, unsigned int val) */
|
|
__global__ void atomicAnd_uint_v1(unsigned int* address, unsigned int* result) {
|
|
*result = atomicAnd(&address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_uint_v2(unsigned int* address, unsigned int* result) {
|
|
*result = atomicAnd(address, address);
|
|
}
|
|
|
|
__global__ void atomicAnd_uint_v3(unsigned int* address, unsigned int* result) {
|
|
*result = atomicAnd(1234, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_uint_v4(Dummy* address, unsigned int* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_uint_v5(char* address, unsigned int* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_uint_v6(short* address, unsigned int* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_uint_v7(long* address, unsigned int* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_uint_v8(long long* address, unsigned int* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_uint_v9(float* address, unsigned int* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_uint_v10(double* address, unsigned int* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
/* atomicAnd(unsigned long* address, unsigned long val) */
|
|
__global__ void atomicAnd_ulong_v1(unsigned long* address, unsigned long* result) {
|
|
*result = atomicAnd(&address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulong_v2(unsigned long* address, unsigned long* result) {
|
|
*result = atomicAnd(address, address);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulong_v3(unsigned long* address, unsigned long* result) {
|
|
*result = atomicAnd(1234, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulong_v4(Dummy* address, unsigned long* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulong_v5(char* address, unsigned long* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulong_v6(short* address, unsigned long* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulong_v7(long* address, unsigned long* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulong_v8(long long* address, unsigned long* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulong_v9(float* address, unsigned long* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulong_v10(double* address, unsigned long* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
/* atomicAnd(unsigned long long* address, unsigned long long val) */
|
|
__global__ void atomicAnd_ulonglong_v1(unsigned long long* address, unsigned long long* result) {
|
|
*result = atomicAnd(&address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulonglong_v2(unsigned long long* address, unsigned long long* result) {
|
|
*result = atomicAnd(address, address);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulonglong_v3(unsigned long long* address, unsigned long long* result) {
|
|
*result = atomicAnd(1234, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulonglong_v4(Dummy* address, unsigned long long* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulonglong_v5(char* address, unsigned long long* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulonglong_v6(short* address, unsigned long long* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulonglong_v7(long* address, unsigned long long* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulonglong_v8(long long* address, unsigned long long* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulonglong_v9(float* address, unsigned long long* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|
|
|
|
__global__ void atomicAnd_ulonglong_v10(double* address, unsigned long long* result) {
|
|
*result = atomicAnd(address, 1234);
|
|
}
|