/* Minimal declarations for CUDA support. Testing purposes only. */ #pragma once // Make this file work with nvcc, for testing compatibility. #ifndef __NVCC__ #define __constant__ __attribute__((constant)) #define __device__ __attribute__((device)) #define __global__ __attribute__((global)) #define __host__ __attribute__((host)) #define __shared__ __attribute__((shared)) #define __managed__ __attribute__((managed)) #define __launch_bounds__(...) __attribute__((launch_bounds(__VA_ARGS__))) struct dim3 { unsigned x, y, z; __host__ __device__ dim3(unsigned x, unsigned y = 1, unsigned z = 1) : x(x), y(y), z(z) {} }; // Host- and device-side placement new overloads. void *operator new(__SIZE_TYPE__, void *p) { return p; } void *operator new[](__SIZE_TYPE__, void *p) { return p; } __device__ void *operator new(__SIZE_TYPE__, void *p) { return p; } __device__ void *operator new[](__SIZE_TYPE__, void *p) { return p; } #define CUDA_VERSION 10100 struct char2 { char x, y; __host__ __device__ char2(char x = 0, char y = 0) : x(x), y(y) {} }; struct char4 { char x, y, z, w; __host__ __device__ char4(char x = 0, char y = 0, char z = 0, char w = 0) : x(x), y(y), z(z), w(w) {} }; struct uchar2 { unsigned char x, y; __host__ __device__ uchar2(unsigned char x = 0, unsigned char y = 0) : x(x), y(y) {} }; struct uchar4 { unsigned char x, y, z, w; __host__ __device__ uchar4(unsigned char x = 0, unsigned char y = 0, unsigned char z = 0, unsigned char w = 0) : x(x), y(y), z(z), w(w) {} }; struct short2 { short x, y; __host__ __device__ short2(short x = 0, short y = 0) : x(x), y(y) {} }; struct short4 { short x, y, z, w; __host__ __device__ short4(short x = 0, short y = 0, short z = 0, short w = 0) : x(x), y(y), z(z), w(w) {} }; struct ushort2 { unsigned short x, y; __host__ __device__ ushort2(unsigned short x = 0, unsigned short y = 0) : x(x), y(y) {} }; struct ushort4 { unsigned short x, y, z, w; __host__ __device__ ushort4(unsigned short x = 0, unsigned short y = 0, unsigned short z = 0, unsigned short w = 0) : x(x), y(y), z(z), w(w) {} }; struct int2 { int x, y; __host__ __device__ int2(int x = 0, int y = 0) : x(x), y(y) {} }; struct int4 { int x, y, z, w; __host__ __device__ int4(int x = 0, int y = 0, int z = 0, int w = 0) : x(x), y(y), z(z), w(w) {} }; struct uint2 { unsigned x, y; __host__ __device__ uint2(unsigned x = 0, unsigned y = 0) : x(x), y(y) {} }; struct uint3 { unsigned x, y, z; __host__ __device__ uint3(unsigned x = 0, unsigned y = 0, unsigned z = 0) : x(x), y(y), z(z) {} }; struct uint4 { unsigned x, y, z, w; __host__ __device__ uint4(unsigned x = 0, unsigned y = 0, unsigned z = 0, unsigned w = 0) : x(x), y(y), z(z), w(w) {} }; struct longlong2 { long long x, y; __host__ __device__ longlong2(long long x = 0, long long y = 0) : x(x), y(y) {} }; struct longlong4 { long long x, y, z, w; __host__ __device__ longlong4(long long x = 0, long long y = 0, long long z = 0, long long w = 0) : x(x), y(y), z(z), w(w) {} }; struct ulonglong2 { unsigned long long x, y; __host__ __device__ ulonglong2(unsigned long long x = 0, unsigned long long y = 0) : x(x), y(y) {} }; struct ulonglong4 { unsigned long long x, y, z, w; __host__ __device__ ulonglong4(unsigned long long x = 0, unsigned long long y = 0, unsigned long long z = 0, unsigned long long w = 0) : x(x), y(y), z(z), w(w) {} }; struct float2 { float x, y; __host__ __device__ float2(float x = 0, float y = 0) : x(x), y(y) {} }; struct float4 { float x, y, z, w; __host__ __device__ float4(float x = 0, float y = 0, float z = 0, float w = 0) : x(x), y(y), z(z), w(w) {} }; struct double2 { double x, y; __host__ __device__ double2(double x = 0, double y = 0) : x(x), y(y) {} }; struct double4 { double x, y, z, w; __host__ __device__ double4(double x = 0, double y = 0, double z = 0, double w = 0) : x(x), y(y), z(z), w(w) {} }; typedef unsigned long long cudaTextureObject_t; enum cudaTextureReadMode { cudaReadModeNormalizedFloat, cudaReadModeElementType }; enum { cudaTextureType1D, cudaTextureType2D, cudaTextureType3D, cudaTextureTypeCubemap, cudaTextureType1DLayered, cudaTextureType2DLayered, cudaTextureTypeCubemapLayered }; struct textureReference {}; template struct __attribute__((device_builtin_texture_type)) texture : public textureReference {}; #endif // !__NVCC__