package org.trifort.rootbeer.entry;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.trifort.rootbeer.generate.opencl.OpenCLArrayType;
import soot.ArrayType;
import soot.CharType;
import soot.RefType;
import soot.rbclassload.HierarchySignature;
public class CompilerSetup {
public Set<String> getDontDfs(){
Set<String> ret = new HashSet<String>();
ret.add("<java.lang.Object: void <clinit>()>");
ret.add("<java.lang.Object: void registerNatives()>");
ret.add("<java.lang.StrictMath: double exp(double)>");
ret.add("<java.lang.StrictMath: double log(double)>");
ret.add("<java.lang.StrictMath: double log10(double)>");
ret.add("<java.lang.StrictMath: double log(double)>");
ret.add("<java.lang.StrictMath: double sqrt(double)>");
ret.add("<java.lang.StrictMath: double cbrt(double)>");
ret.add("<java.lang.StrictMath: double IEEEremainder(double,double)>");
ret.add("<java.lang.StrictMath: double ceil(double)>");
ret.add("<java.lang.StrictMath: double floor(double)>");
ret.add("<java.lang.StrictMath: double sin(double)>");
ret.add("<java.lang.StrictMath: double cos(double)>");
ret.add("<java.lang.StrictMath: double tan(double)>");
ret.add("<java.lang.StrictMath: double asin(double)>");
ret.add("<java.lang.StrictMath: double acos(double)>");
ret.add("<java.lang.StrictMath: double atan(double)>");
ret.add("<java.lang.StrictMath: double atan2(double,double)>");
ret.add("<java.lang.StrictMath: double pow(double,double)>");
ret.add("<java.lang.StrictMath: double sinh(double)>");
ret.add("<java.lang.StrictMath: double cosh(double)>");
ret.add("<java.lang.StrictMath: double tanh(double)>");
ret.add("<java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>");
ret.add("<java.lang.Throwable: java.lang.Throwable fillInStackTrace()>");
ret.add("<java.lang.Throwable: int getStackTraceDepth()>");
ret.add("<java.lang.Throwable: java.lang.StackTraceElement getStackTraceElement(int)>");
ret.add("<java.lang.Object: java.lang.Object clone()>");
ret.add("<java.lang.Object: int hashCode()>");
ret.add("<org.trifort.rootbeer.runtime.GpuStopwatch: void start()>");
ret.add("<org.trifort.rootbeer.runtime.GpuStopwatch: void stop()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: boolean isOnGpu()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getThreadId()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getThreadIdxx()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getThreadIdxy()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getThreadIdxz()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getBlockIdxx()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getBlockIdxy()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getBlockIdxz()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getBlockDimx()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getBlockDimy()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getBlockDimz()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: long getGridDimx()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: long getGridDimy()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: long getGridDimz()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: long getRef(java.lang.Object)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void syncthreads()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int syncthreadsCount(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void threadfence()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void threadfenceBlock()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void threadfenceSystem()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: java.lang.Object getSharedObject(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedObject(int,java.lang.Object)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: byte getSharedByte(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedByte(int,byte)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: char getSharedChar(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedChar(int,char)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: boolean getSharedBoolean(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedBoolean(int,boolean)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: short getSharedShort(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedShort(int,short)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getSharedInteger(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedInteger(int,int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: long getSharedLong(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedLong(int,long)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: float getSharedFloat(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedFloat(int,float)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: double getSharedDouble(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedDouble(int,double)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: double sin(double)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void atomicAddGlobal(int[],int,int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void atomicAddGlobal(long[],int,long)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void atomicAddGlobal(float[],int,float)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void atomicAddGlobal(double[],int,double)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void atomicSubGlobal(int[],int,int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int atomicExchGlobal(int[],int,int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: long atomicExchGlobal(long[],int,long)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: float atomicExchGlobal(float[],int,float)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int atomicMinGlobal(int[],int,int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int atomicMaxGlobal(int[],int,int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int atomicCASGlobal(int[],int,int,int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int atomicAndGlobal(int[],int,int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int atomicOrGlobal(int[],int,int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int atomicXorGlobal(int[],int,int)>");
ret.add("<org.trifort.rootbeer.testcases.rootbeertest.serialization.ForceArrayNewRunOnGpu: java.lang.String getStringArray()>");
ret.add("<java.lang.System: long nanoTime()>");
ret.add("<java.lang.Class: java.lang.String getName()>");
ret.add("<java.lang.Object: java.lang.Class getClass()>");
ret.add("<java.lang.StringValue: char[] 'from'(char[])>");
ret.add("<java.util.Arrays: java.lang.Object[] copyOf(java.lang.Object[],int)>");
ret.add("<java.lang.String: void <init>(char[])>");
ret.add("<java.lang.String: java.lang.String substring(int)>");
ret.add("<java.lang.String: java.lang.String substring(int,int)>");
ret.add("<java.lang.String: int indexOf(java.lang.String)>");
ret.add("<java.lang.String: int indexOf(java.lang.String,int)>");
ret.add("<java.lang.String: java.lang.String[] split(java.lang.String)>");
ret.add("<java.lang.String: java.lang.String[] split(java.lang.String,int)>");
ret.add("<java.lang.String: java.lang.String valueOf(java.lang.Object)>");
ret.add("<java.io.PrintStream: void println()>");
ret.add("<java.io.PrintStream: void println(java.lang.String)>");
ret.add("<java.io.PrintStream: void println(java.lang.Object)>");
ret.add("<java.io.PrintStream: void println(boolean)>");
ret.add("<java.io.PrintStream: void println(byte)>");
ret.add("<java.io.PrintStream: void println(char)>");
ret.add("<java.io.PrintStream: void println(short)>");
ret.add("<java.io.PrintStream: void println(int)>");
ret.add("<java.io.PrintStream: void println(long)>");
ret.add("<java.io.PrintStream: void println(float)>");
ret.add("<java.io.PrintStream: void println(double)>");
ret.add("<java.io.PrintStream: void print(java.lang.String)>");
ret.add("<java.io.PrintStream: void print(java.lang.Object)>");
ret.add("<java.io.PrintStream: void print(boolean)>");
ret.add("<java.io.PrintStream: void print(byte)>");
ret.add("<java.io.PrintStream: void print(char)>");
ret.add("<java.io.PrintStream: void print(short)>");
ret.add("<java.io.PrintStream: void print(int)>");
ret.add("<java.io.PrintStream: void print(long)>");
ret.add("<java.io.PrintStream: void print(float)>");
ret.add("<java.io.PrintStream: void print(double)>");
ret.add("<java.lang.Double: long doubleToLongBits(double)>");
ret.add("<java.lang.Double: double longBitsToDouble(long)>");
ret.add("<java.lang.Float: int floatToIntBits(float)>");
ret.add("<java.lang.Float: float intBitsToFloat(int)>");
ret.add("<java.lang.Double: java.lang.String toString(double)>");
ret.add("<java.lang.Float: java.lang.String toString(float)>");
ret.add("<java.lang.Integer: java.lang.String toString(int)>");
ret.add("<java.lang.Long: java.lang.String toString(long)>");
ret.add("<java.lang.Integer: void <init>(int)>");
ret.add("<java.lang.Integer: java.lang.Integer valueOf(int)>");
ret.add("<java.lang.Integer: int parseInt(java.lang.String)>");
ret.add("<java.lang.Long: long parseLong(java.lang.String)>");
ret.add("<java.lang.Float: float parseFloat(java.lang.String)>");
ret.add("<java.lang.Double: double parseDouble(java.lang.String)>");
ret.add("<java.lang.StringBuilder: java.lang.StringBuilder append(double)>");
ret.add("<java.lang.StringBuilder: java.lang.StringBuilder append(float)>");
return ret;
}
public Set<String> getDontEmit(){
Set<String> ret = new HashSet<String>();
ret.add("<java.lang.String: void <init>(java.lang.String)>");
ret.add("<java.lang.String: void <init>(char[])>");
ret.add("<java.lang.StringBuilder: void <init>()>");
ret.add("<java.lang.StringBuilder: void <init>(java.lang.String)>");
ret.add("<java.lang.StringBuilder: java.lang.StringBuilder append(boolean)>");
ret.add("<java.lang.StringBuilder: java.lang.StringBuilder append(char)>");
ret.add("<java.lang.StringBuilder: java.lang.StringBuilder append(double)>");
ret.add("<java.lang.StringBuilder: java.lang.StringBuilder append(float)>");
ret.add("<java.lang.StringBuilder: java.lang.StringBuilder append(int)>");
ret.add("<java.lang.StringBuilder: java.lang.StringBuilder append(long)>");
ret.add("<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>");
ret.add("<java.lang.StringBuilder: java.lang.String toString()>");
ret.add("<java.lang.Double: java.lang.String toString(double)>");
ret.add("<java.lang.Float: java.lang.String toString(float)>");
ret.add("<java.lang.Integer: java.lang.String toString(int)>");
ret.add("<java.lang.Long: java.lang.String toString(long)>");
ret.add("<java.lang.Object: java.lang.String toString()>");
return ret;
}
public Set<String> getDontMangle(){
Set<String> ret = new HashSet<String>();
ret.add("<java.lang.Object: void <clinit>()>");
ret.add("<java.lang.Object: void registerNatives()>");
ret.add("<java.lang.StrictMath: double exp(double)>");
ret.add("<java.lang.StrictMath: double log(double)>");
ret.add("<java.lang.StrictMath: double log10(double)>");
ret.add("<java.lang.StrictMath: double log(double)>");
ret.add("<java.lang.StrictMath: double sqrt(double)>");
ret.add("<java.lang.StrictMath: double cbrt(double)>");
ret.add("<java.lang.StrictMath: double IEEEremainder(double,double)>");
ret.add("<java.lang.StrictMath: double ceil(double)>");
ret.add("<java.lang.StrictMath: double floor(double)>");
ret.add("<java.lang.StrictMath: double sin(double)>");
ret.add("<java.lang.StrictMath: double cos(double)>");
ret.add("<java.lang.StrictMath: double tan(double)>");
ret.add("<java.lang.StrictMath: double asin(double)>");
ret.add("<java.lang.StrictMath: double acos(double)>");
ret.add("<java.lang.StrictMath: double atan(double)>");
ret.add("<java.lang.StrictMath: double atan2(double,double)>");
ret.add("<java.lang.StrictMath: double pow(double,double)>");
ret.add("<java.lang.StrictMath: double sinh(double)>");
ret.add("<java.lang.StrictMath: double cosh(double)>");
ret.add("<java.lang.StrictMath: double tanh(double)>");
ret.add("<java.lang.Double: long doubleToLongBits(double)>");
ret.add("<java.lang.Double: double longBitsToDouble(long)>");
ret.add("<java.lang.Float: int floatToIntBits(float)>");
ret.add("<java.lang.Float: float intBitsToFloat(int)>");
ret.add("<java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>");
ret.add("<java.lang.Throwable: java.lang.Throwable fillInStackTrace()>");
ret.add("<java.lang.Throwable: int getStackTraceDepth()>");
ret.add("<java.lang.Throwable: java.lang.StackTraceElement getStackTraceElement(int)>");
ret.add("<java.lang.Object: java.lang.Object clone()>");
ret.add("<java.lang.Object: int hashCode()>");
ret.add("<org.trifort.rootbeer.runtime.GpuStopwatch: void start()>");
ret.add("<org.trifort.rootbeer.runtime.GpuStopwatch: void stop()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: boolean isOnGpu()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getThreadId()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getThreadIdxx()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getThreadIdxy()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getThreadIdxz()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getBlockIdxx()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getBlockIdxy()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getBlockIdxz()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getBlockDimx()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getBlockDimy()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getBlockDimz()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: long getGridDimx()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: long getGridDimy()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: long getGridDimz()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: long getRef(java.lang.Object)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void syncthreads()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int syncthreadsCount(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void threadfence()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void threadfenceBlock()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void threadfenceSystem()>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: java.lang.Object getSharedObject(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedObject(int,java.lang.Object)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: byte getSharedByte(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedByte(int,byte)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: char getSharedChar(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedChar(int,char)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: boolean getSharedBoolean(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedBoolean(int,boolean)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: short getSharedShort(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedShort(int,short)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: int getSharedInteger(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedInteger(int,int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: long getSharedLong(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedLong(int,long)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: float getSharedFloat(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedFloat(int,float)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: double getSharedDouble(int)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: void setSharedDouble(int,double)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerGpu: double sin(double)>");
ret.add("<java.lang.System: long nanoTime()>");
ret.add("<java.lang.Class: java.lang.String getName()>");
ret.add("<java.lang.Object: java.lang.Class getClass()>");
ret.add("<java.lang.StringValue: char[] 'from'(char[])>");
ret.add("<java.util.Arrays: java.lang.Object[] copyOf(java.lang.Object[],int)>");
ret.add("<java.lang.Integer: void <init>(int)>");
ret.add("<java.lang.Integer: java.lang.Integer valueOf(int)>");
ret.add("<java.lang.String: java.lang.String substring(int)>");
ret.add("<java.lang.String: java.lang.String substring(int,int)>");
ret.add("<java.lang.String: int indexOf(java.lang.String)>");
ret.add("<java.lang.String: int indexOf(java.lang.String,int)>");
ret.add("<java.lang.String: java.lang.String[] split(java.lang.String)>");
ret.add("<java.lang.String: java.lang.String[] split(java.lang.String,int)>");
ret.add("<java.lang.String: java.lang.String valueOf(java.lang.Object)>");
ret.add("<java.lang.Integer: int parseInt(java.lang.String)>");
ret.add("<java.lang.Long: long parseLong(java.lang.String)>");
ret.add("<java.lang.Float: float parseFloat(java.lang.String)>");
ret.add("<java.lang.Double: double parseDouble(java.lang.String)>");
ret.add("<org.trifort.rootbeer.runtime.RootbeerAtomicInt: int atomicAdd(int)>");
ret.add("<org.trifort.rootbeer.runtimegpu.GpuException: org.trifort.rootbeer.runtimegpu.GpuException arrayOutOfBounds(int,int,int)>");
return ret;
}
public Set<String> getEmitUnmanged() {
Set<String> ret = new HashSet<String>();
ret.add("<org.trifort.rootbeer.runtimegpu.GpuException: org.trifort.rootbeer.runtimegpu.GpuException arrayOutOfBounds(int,int,int)>");
return ret;
}
public Set<ArrayType> getExtraArrayTypes() {
Set<ArrayType> ret = new HashSet<ArrayType>();
ret.add(ArrayType.v(CharType.v(), 1));
ret.add(ArrayType.v(RefType.v("java.lang.String"), 1));
return ret;
}
public Set<String> getExtraMethods() {
Set<String> ret = new HashSet<String>();
ret.add("<org.trifort.rootbeer.runtimegpu.GpuException: org.trifort.rootbeer.runtimegpu.GpuException arrayOutOfBounds(int,int,int)>");
ret.add("<org.trifort.rootbeer.runtimegpu.GpuException: void <init>()>");
ret.add("<java.lang.String: void <init>(char[])>");
ret.add("<java.lang.Object: int hashCode()>");
ret.add("<java.lang.Boolean: java.lang.String toString(boolean)>");
ret.add("<java.lang.Character: java.lang.String toString(char)>");
ret.add("<java.lang.Double: java.lang.String toString(double)>");
ret.add("<java.lang.Float: java.lang.String toString(float)>");
ret.add("<java.lang.Integer: java.lang.String toString(int)>");
ret.add("<java.lang.Long: java.lang.String toString(long)>");
return ret;
}
}