/**
*
*/
package com.amd.aparapi.internal.opencl;
public class OpenCLArgDescriptor{
public final static int ARG_BYTE_BIT = 1 << 0x000;
public final static int ARG_SHORT_BIT = 1 << 0x001;
public final static int ARG_INT_BIT = 1 << 0x002;
public final static int ARG_FLOAT_BIT = 1 << 0x003;
public final static int ARG_LONG_BIT = 1 << 0x004;
public final static int ARG_DOUBLE_BIT = 1 << 0x005;
public final static int ARG_ARRAY_BIT = 1 << 0x006;
public final static int ARG_PRIMITIVE_BIT = 1 << 0x007;
public final static int ARG_GLOBAL_BIT = 1 << 0x008;
public final static int ARG_LOCAL_BIT = 1 << 0x009;
public final static int ARG_CONST_BIT = 1 << 0x00A;
public final static int ARG_READONLY_BIT = 1 << 0x00B;
public final static int ARG_WRITEONLY_BIT = 1 << 0x00C;
public final static int ARG_READWRITE_BIT = 1 << 0x00D;
public final static int ARG_ISARG_BIT = 1 << 0x00E;
public OpenCLMem memVal;
private final String name;
public long bits;
public OpenCLKernel kernel;
/**
* Full constructor
*
* @param _name
* @param _bits
*/
public OpenCLArgDescriptor(String _name, long _bits) {
name = _name;
bits = _bits;
}
@Override public String toString() {
final StringBuilder argBuilder = new StringBuilder();
if ((bits & ARG_GLOBAL_BIT) == ARG_GLOBAL_BIT) {
argBuilder.append("__global ");
} else if ((bits & ARG_LOCAL_BIT) == ARG_LOCAL_BIT) {
argBuilder.append("__local ");
} else if ((bits & ARG_CONST_BIT) == ARG_CONST_BIT) {
argBuilder.append("__constant ");
} else if ((bits & ARG_ISARG_BIT) == ARG_ISARG_BIT) {
//
} else {
argBuilder.append("WHATISTHIS?");
}
if ((bits & ARG_FLOAT_BIT) == ARG_FLOAT_BIT) {
argBuilder.append("float ");
} else if ((bits & ARG_INT_BIT) == ARG_INT_BIT) {
argBuilder.append("int ");
} else if ((bits & ARG_SHORT_BIT) == ARG_SHORT_BIT) {
argBuilder.append("short ");
} else if ((bits & ARG_DOUBLE_BIT) == ARG_DOUBLE_BIT) {
argBuilder.append("double ");
} else if ((bits & ARG_LONG_BIT) == ARG_LONG_BIT) {
argBuilder.append("long ");
}
if ((bits & ARG_ARRAY_BIT) == ARG_ARRAY_BIT) {
argBuilder.append("*");
}
argBuilder.append(name);
if ((bits & ARG_READONLY_BIT) == ARG_READONLY_BIT) {
argBuilder.append(" /* readonly */");
} else if ((bits & ARG_WRITEONLY_BIT) == ARG_WRITEONLY_BIT) {
argBuilder.append(" /* writeonly */");
} else if ((bits & ARG_READWRITE_BIT) == ARG_READWRITE_BIT) {
argBuilder.append(" /* readwrite */");
}
return (argBuilder.toString());
}
}