コード例 #1
0
ファイル: LLVMCodeGenerator.cs プロジェクト: shravanrn/Cleps
 public void Initiate()
 {
     ClassSkeletons = new Dictionary<string, LLVMTypeRef>();
     Context = LLVM.ContextCreate();
     Module = LLVM.ModuleCreateWithNameInContext("ADefaultModuleId", Context);
     Builder = LLVM.CreateBuilderInContext(Context);
 }
コード例 #2
0
 public static LLVMTypeRef ToLLVMTy(TyRef ty, LLVMContextRef context)
 {
     if (ty is TyInt)
         return IntTypeInContext(context, (ty as TyInt).BitWidth);
     else if (ty is TyUint)
         return IntTypeInContext(context, (ty as TyUint).BitWidth);
     else if (ty is TyFloat)
     {
         switch ((ty as TyFloat).BitWidth)
         {
             case 16: return HalfTypeInContext(context);
             case 32: return FloatTypeInContext(context);
             case 64: return DoubleTypeInContext(context);
             // EW
             default: throw new ArgumentException("ty");
         }
     }
     else if (ty is TyBool)
         return Int1TypeInContext(context);
     else if (ty is TyVoid)
         return VoidTypeInContext(context);
     else if (ty is PointerTyRef)
         return PointerType(ToLLVMTy((ty as PointerTyRef).ty.Raw, context), 0);
     else if (ty is FnTyRef)
     {
         var fnTy = ty as FnTyRef;
         var llvmTyParams = fnTy.parameterTys.Select(param => ToLLVMTy(param.Raw, context)).ToArray();
         var llvmTyReturn = ToLLVMTy(fnTy.returnTy.Raw, context);
         return FunctionType(llvmTyReturn, llvmTyParams, false);
     }
     // TODO(kai): structs and things go here pls
     else throw new ArgumentException("ty");
 }
コード例 #3
0
        public static LLVMBool ParseIRInContext(LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, out LLVMModuleRef OutM, out string OutMessage)
        {
            var retVal = ParseIRInContext(ContextRef, MemBuf, out OutM, out IntPtr message);

            OutMessage = message != IntPtr.Zero && retVal.Value != 0 ? Marshal.PtrToStringAnsi(message) : null;
            DisposeMessage(message);
            return(retVal);
        }
コード例 #4
0
ファイル: ModCompiler.cs プロジェクト: YourLocalFax/OLD-Score
 public ModCompiler(DetailLogger log, SymbolTableWalker walker,
     LLVMContextRef context, LLVMModuleRef module, LLVMBuilderRef builder)
 {
     this.log = log;
     this.walker = walker;
     this.context = context;
     this.module = module;
     this.builder = builder;
 }
コード例 #5
0
        public static LLVMValueRef ConstStructInContext(LLVMContextRef C, LLVMValueRef[] ConstantVals, bool Packed)
        {
            if (ConstantVals.Length == 0)
            {
                LLVMValueRef dummy;
                return(ConstStructInContext(C, out dummy, 0, Packed));
            }

            return(ConstStructInContext(C, out ConstantVals[0], (uint)ConstantVals.Length, Packed));
        }
コード例 #6
0
        public static LLVMTypeRef StructTypeInContext(LLVMContextRef C, LLVMTypeRef[] ElementTypes, bool Packed)
        {
            if (ElementTypes.Length == 0)
            {
                LLVMTypeRef dummy;
                return(StructTypeInContext(C, out dummy, 0, Packed));
            }

            return(StructTypeInContext(C, out ElementTypes[0], (uint)ElementTypes.Length, Packed));
        }
コード例 #7
0
        public static LLVMValueRef MDNodeInContext(LLVMContextRef C, LLVMValueRef[] Vals)
        {
            if (Vals.Length == 0)
            {
                LLVMValueRef dummy;
                return(MDNodeInContext(C, out dummy, 0));
            }

            return(MDNodeInContext(C, out Vals[0], (uint)Vals.Length));
        }
コード例 #8
0
 public static extern LLVMMetadataRef MDNode2(LLVMContextRef @C, out LLVMMetadataRef @MDs, uint @Count);
コード例 #9
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMTypeRef X86MMXTypeInContext(LLVMContextRef @C);
コード例 #10
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMTypeRef StructTypeInContext(LLVMContextRef @C, out LLVMTypeRef @ElementTypes, uint @ElementCount, LLVMBool @Packed);
コード例 #11
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMTypeRef PPCFP128TypeInContext(LLVMContextRef @C);
コード例 #12
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMModuleRef ModuleCreateWithNameInContext([MarshalAs(UnmanagedType.LPStr)] string @ModuleID, LLVMContextRef @C);
コード例 #13
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMValueRef MDNodeInContext(LLVMContextRef @C, out LLVMValueRef @Vals, uint @Count);
コード例 #14
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMTypeRef FloatTypeInContext(LLVMContextRef @C);
コード例 #15
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMTypeRef DoubleTypeInContext(LLVMContextRef @C);
コード例 #16
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMBuilderRef CreateBuilderInContext(LLVMContextRef @C);
コード例 #17
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern void ContextSetYieldCallback(LLVMContextRef @C, LLVMYieldCallback @Callback, IntPtr @OpaqueHandle);
コード例 #18
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern void ContextSetDiagnosticHandler(LLVMContextRef @C, LLVMDiagnosticHandler @Handler, IntPtr @DiagnosticContext);
コード例 #19
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern void ContextDispose(LLVMContextRef @C);
コード例 #20
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMBool GetBitcodeModuleProviderInContext(LLVMContextRef @ContextRef, LLVMMemoryBufferRef @MemBuf, out LLVMModuleProviderRef @OutMP, out IntPtr @OutMessage);
コード例 #21
0
ファイル: LLVMContextRef.cs プロジェクト: bamfbamf/LLVMSharp
 public bool Equals(LLVMContextRef other) => this.Pointer == other.Pointer;
コード例 #22
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern uint GetMDKindIDInContext(LLVMContextRef @C, [MarshalAs(UnmanagedType.LPStr)] string @Name, uint @SLen);
コード例 #23
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMValueRef MDStringInContext(LLVMContextRef @C, [MarshalAs(UnmanagedType.LPStr)] string @Str, uint @SLen);
コード例 #24
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMTypeRef HalfTypeInContext(LLVMContextRef @C);
コード例 #25
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMBool ParseIRInContext(LLVMContextRef @ContextRef, LLVMMemoryBufferRef @MemBuf, out LLVMModuleRef @OutM, out IntPtr @OutMessage);
コード例 #26
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMBasicBlockRef InsertBasicBlockInContext(LLVMContextRef @C, LLVMBasicBlockRef @BB, [MarshalAs(UnmanagedType.LPStr)] string @Name);
コード例 #27
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMTypeRef StructCreateNamed(LLVMContextRef @C, [MarshalAs(UnmanagedType.LPStr)] string @Name);
コード例 #28
0
ファイル: Overloads.cs プロジェクト: kingland/LLVMSharp
        public static LLVMValueRef ConstStructInContext(LLVMContextRef C, LLVMValueRef[] ConstantVals, bool Packed)
        {
            if (ConstantVals.Length == 0)
            {
                LLVMValueRef dummy;
                return ConstStructInContext(C, out dummy, 0, Packed);
            }

            return ConstStructInContext(C, out ConstantVals[0], (uint)ConstantVals.Length, Packed);
        }
コード例 #29
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMTypeRef VoidTypeInContext(LLVMContextRef @C);
コード例 #30
0
ファイル: Overloads.cs プロジェクト: kingland/LLVMSharp
        public static LLVMTypeRef StructTypeInContext(LLVMContextRef C, LLVMTypeRef[] ElementTypes, bool Packed)
        {
            if (ElementTypes.Length == 0)
            {
                LLVMTypeRef dummy;
                return StructTypeInContext(C, out dummy, 0, Packed);
            }

            return StructTypeInContext(C, out ElementTypes[0], (uint)ElementTypes.Length, Packed);
        }
コード例 #31
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMTypeRef Int8TypeInContext(LLVMContextRef @C);
コード例 #32
0
ファイル: LLVMContext.cs プロジェクト: zeta1999/LLVMSharp
 public LLVMContext()
 {
     Handle = LLVMContextRef.Create();
 }
コード例 #33
0
ファイル: Overloads.cs プロジェクト: kingland/LLVMSharp
        public static LLVMValueRef MDNodeInContext(LLVMContextRef C, LLVMValueRef[] Vals)
        {
            if (Vals.Length == 0)
            {
                LLVMValueRef dummy;
                return MDNodeInContext(C, out dummy, 0);
            }

            return MDNodeInContext(C, out Vals[0], (uint)Vals.Length);
        }
コード例 #34
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMTypeRef IntPtrTypeForASInContext(LLVMContextRef @C, LLVMTargetDataRef @TD, uint @AS);
コード例 #35
0
ファイル: Module.cs プロジェクト: yogeshlc/LLVMSharp
 public Module(string moduleId, LLVMContextRef context)
 {
     this.instance = LLVM.ModuleCreateWithNameInContext(moduleId, context);
 }
コード例 #36
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMTypeRef IntPtrTypeInContext(LLVMContextRef @C, LLVMTargetDataRef @TD);
コード例 #37
0
 public static LLVMAttributeRef CreateStringAttribute(LLVMContextRef C, string Kind, string Value)
 {
     return(CreateStringAttribute(C,
                                  Kind, Kind == null ? 0 : (uint)Kind.Length,
                                  Value, Value == null ? 0 : (uint)Value.Length));
 }
コード例 #38
0
 public static extern LLVMMetadataRef MDString2(LLVMContextRef @C, [MarshalAs(UnmanagedType.LPStr)] string @Str, uint @SLen);
コード例 #39
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMTypeRef IntTypeInContext(LLVMContextRef @C, uint @NumBits);
コード例 #40
0
 public static extern LLVMMetadataRef TemporaryMDNode(LLVMContextRef @C, out LLVMMetadataRef @MDs, uint @Count);
コード例 #41
0
ファイル: Generated.cs プロジェクト: rflechner/LLVMSharp
 public static extern LLVMTypeRef LabelTypeInContext(LLVMContextRef @C);
コード例 #42
0
ファイル: IRBuilder.cs プロジェクト: yogeshlc/LLVMSharp
 public IRBuilder(LLVMContextRef context)
 {
     this.instance = LLVM.CreateBuilderInContext(context);
 }