001/* 002 * To change this template, choose Tools | Templates 003 * and open the template in the editor. 004 */ 005 006package com.nativelibs4java.opencl.util; 007 008public enum Primitive { 009 Float(Float.class, 1, OpenCLType.Float), 010 Double(Double.class, 1, OpenCLType.Double), 011 Long(Long.class, 1, OpenCLType.Long), 012 Int(Integer.class, 1, OpenCLType.Int), 013 Short(Short.class, 1, OpenCLType.Short), 014 Byte(Byte.class, 1, OpenCLType.Byte), 015 016 Float2(Float.class, 2, OpenCLType.Float), 017 Double2(Double.class, 2, OpenCLType.Double), 018 Long2(Long.class, 2, OpenCLType.Long), 019 Int2(Integer.class, 2, OpenCLType.Int), 020 Short2(Short.class, 2, OpenCLType.Short), 021 Byte2(Byte.class, 2, OpenCLType.Byte), 022 023 Float3(Float.class, 3, OpenCLType.Float), 024 Double3(Double.class, 3, OpenCLType.Double), 025 Long3(Long.class, 3, OpenCLType.Long), 026 Int3(Integer.class, 3, OpenCLType.Int), 027 Short3(Short.class, 3, OpenCLType.Short), 028 Byte3(Byte.class, 3, OpenCLType.Byte), 029 030 Float4(Float.class, 4, OpenCLType.Float), 031 Double4(Double.class, 4, OpenCLType.Double), 032 Long4(Long.class, 4, OpenCLType.Long), 033 Int4(Integer.class, 4, OpenCLType.Int), 034 Short4(Short.class, 4, OpenCLType.Short), 035 Byte4(Byte.class, 4, OpenCLType.Byte), 036 037 Float8(Float.class, 8, OpenCLType.Float), 038 Double8(Double.class, 8, OpenCLType.Double), 039 Long8(Long.class, 8, OpenCLType.Long), 040 Int8(Integer.class, 8, OpenCLType.Int), 041 Short8(Short.class, 8, OpenCLType.Short), 042 Byte8(Byte.class, 8, OpenCLType.Byte), 043 044 Float16(Float.class, 16, OpenCLType.Float), 045 Double16(Double.class, 16, OpenCLType.Double), 046 Long16(Long.class, 16, OpenCLType.Long), 047 Int16(Integer.class, 16, OpenCLType.Int), 048 Short16(Short.class, 16, OpenCLType.Short), 049 Byte16(Byte.class, 16, OpenCLType.Byte); 050 051 Primitive(Class<?> primitiveType, int primitiveCount, OpenCLType oclType) { 052 this.primitiveCount = primitiveCount; 053 this.primitiveType = primitiveType; 054 this.oclType = oclType; 055 } 056 public final OpenCLType oclType; 057 public final int primitiveCount; 058 public final Class<?> primitiveType; 059 public String clTypeName() { 060 return name().toLowerCase(); 061 } 062 public String getRequiredPragmas() { 063 if (primitiveType == Double.class) 064 return "#pragma OPENCL EXTENSION cl_khr_fp64 : enable\n"; 065 return ""; 066 } 067}