This file defines bindings for LLVM. The main mechanisms are to:
- Mirror the values of C enumerations.
- Create opaque values for LLVM's pointer based API
- Write bindings that are
IObased, which mutate the underlying in-memory data structures to build IR.
Equations
- Lean.LLVM.CodegenFileType.AssemblyFile = { val := 0 }
Instances For
Equations
- Lean.LLVM.CodegenFileType.ObjectFile = { val := 1 }
Instances For
Equations
- Lean.LLVM.IntPredicate.EQ = { val := 32 }
Instances For
Equations
- Lean.LLVM.IntPredicate.NE = { val := Lean.LLVM.IntPredicate.EQ.val + 1 }
Instances For
Equations
- Lean.LLVM.IntPredicate.UGT = { val := Lean.LLVM.IntPredicate.NE.val + 1 }
Instances For
Equations
- Lean.LLVM.AttributeIndex.AttributeReturnIndex = { val := 0 }
Instances For
Equations
- Lean.LLVM.AttributeIndex.AttributeFunctionIndex = { val := 18446744073709551615 }
Instances For
- ptr : USize
Instances For
instance Lean.LLVM.instNonemptyBasicBlock {Context✝ : Sort u_1} {ctx : Context✝} :
Nonempty (BasicBlock ctx)
- ptr : USize
Instances For
@[extern lean_llvm_initialize_target_info]
@[extern lean_llvm_void_type_in_context]
@[extern lean_llvm_float_type_in_context]
@[extern lean_llvm_double_type_in_context]
@[extern lean_llvm_create_builder_in_context]
@[extern lean_llvm_append_basic_block_in_context]
opaque Lean.LLVM.appendBasicBlockInContext (ctx : Context) (fn : Value ctx) (name : String) :
BaseIO (BasicBlock ctx)
@[extern lean_llvm_get_entry_basic_block]
@[extern lean_llvm_get_first_instruction]
@[extern lean_llvm_position_builder_at_end]
opaque Lean.LLVM.positionBuilderAtEnd {Context✝ : Sort u_1} {ctx : Context✝} (builder : Builder ctx) (bb : BasicBlock ctx) :
@[extern lean_llvm_build_cond_br]
opaque Lean.LLVM.buildCondBr {ctx : Context} (builder : Builder ctx) (if_ : Value ctx) (thenbb elsebb : BasicBlock ctx) :
@[extern lean_llvm_build_br]
@[extern lean_llvm_build_switch]
opaque Lean.LLVM.buildSwitch {ctx : Context} (builder : Builder ctx) (val : Value ctx) (elseBB : BasicBlock ctx) (numCasesHint : UInt64) :
@[extern lean_llvm_build_icmp]
opaque Lean.LLVM.buildICmp {ctx : Context} (builder : Builder ctx) (predicate : IntPredicate) (x y : Value ctx) (name : String := "") :
@[extern lean_llvm_add_case]
@[extern lean_llvm_get_insert_block]
opaque Lean.LLVM.getInsertBlock {Context✝ : Sort u_1} {ctx : Context✝} (builder : Builder ctx) :
BaseIO (BasicBlock ctx)
@[extern lean_llvm_get_basic_block_parent]
@[extern lean_llvm_create_memory_buffer_with_contents_of_file]
opaque Lean.LLVM.createMemoryBufferWithContentsOfFile {ctx : Context} (path : String) :
BaseIO (MemoryBuffer ctx)
@[extern lean_llvm_parse_bitcode]
@[extern lean_llvm_get_default_target_triple]
@[extern lean_llvm_create_target_machine]
opaque Lean.LLVM.createTargetMachine {ctx : Context} (target : Target ctx) (tripleStr cpu features : String) :
BaseIO (TargetMachine ctx)
@[extern lean_llvm_target_machine_emit_to_file]
opaque Lean.LLVM.targetMachineEmitToFile {ctx : Context} (targetMachine : TargetMachine ctx) (module : Module ctx) (filepath : String) (codegenType : CodegenFileType) :
@[extern lean_llvm_dispose_target_machine]
@[extern lean_llvm_add_attribute_at_index]
opaque Lean.LLVM.addAttributeAtIndex {ctx : Context} (fn : Value ctx) (idx : AttributeIndex) (attr : Attribute ctx) :
Equations
- Lean.LLVM.Visibility.default = { val := 0 }
Instances For
Equations
- Lean.LLVM.Visibility.protected = { val := 2 }
Instances For
@[extern lean_llvm_set_visibility]
Equations
- Lean.LLVM.DLLStorageClass.default = { val := 0 }
Instances For
Equations
- Lean.LLVM.DLLStorageClass.import = { val := 1 }
Instances For
Equations
- Lean.LLVM.DLLStorageClass.export = { val := 2 }
Instances For
@[extern lean_llvm_set_dll_storage_class]
opaque Lean.LLVM.setDLLStorageClass {ctx : Context} (value : Value ctx) (dllStorageClass : DLLStorageClass) :
Equations
- Lean.LLVM.Linkage.availableExternally = { val := 1 }
Instances For
Keep one copy of function when linking (inline)
Equations
- Lean.LLVM.Linkage.linkOnceAny = { val := 2 }
Instances For
Same, but only replaced by something equivalent
Equations
- Lean.LLVM.Linkage.linkOnceODR = { val := 3 }
Instances For
Keep one copy of function when linking (weak)
Equations
- Lean.LLVM.Linkage.weakAny = { val := 5 }
Instances For
Same, but only replaced by something equivalent
Equations
- Lean.LLVM.Linkage.weakODR = { val := 6 }
Instances For
Special purpose, only applies to global arrays
Equations
- Lean.LLVM.Linkage.appending = { val := 7 }
Instances For
Rename collisions when linking (static functions)
Equations
- Lean.LLVM.Linkage.internal = { val := 8 }
Instances For
Like Internal, but omit from symbol table
Equations
- Lean.LLVM.Linkage.private = { val := 9 }
Instances For
ExternalWeak linkage description
Equations
- Lean.LLVM.Linkage.externalWeak = { val := 12 }
Instances For
Like Private, but linker removes.
Equations
- Lean.LLVM.Linkage.linkerPrivate = { val := 15 }
Instances For
Like LinkerPrivate, but is weak.
Equations
- Lean.LLVM.Linkage.linkerPrivateWeak = { val := 16 }
Instances For
Equations
- Lean.LLVM.i1Type ctx = Lean.LLVM.intTypeInContext ctx 1
Instances For
Equations
- Lean.LLVM.i8Type ctx = Lean.LLVM.intTypeInContext ctx 8
Instances For
Equations
- Lean.LLVM.i16Type ctx = Lean.LLVM.intTypeInContext ctx 16
Instances For
Equations
- Lean.LLVM.i32Type ctx = Lean.LLVM.intTypeInContext ctx 32
Instances For
Equations
- Lean.LLVM.i64Type ctx = Lean.LLVM.intTypeInContext ctx 64
Instances For
Equations
- Lean.LLVM.voidPtrType ctx = do let __do_lift ← Lean.LLVM.intTypeInContext ctx 8 Lean.LLVM.pointerType __do_lift
Instances For
Equations
Instances For
Equations
- Lean.LLVM.constTrue ctx = do let __do_lift ← Lean.LLVM.i1Type ctx Lean.LLVM.constInt __do_lift 1
Instances For
Equations
- Lean.LLVM.constFalse ctx = do let __do_lift ← Lean.LLVM.i1Type ctx Lean.LLVM.constInt __do_lift 0
Instances For
Equations
- Lean.LLVM.constInt' ctx width value signExtend = do let __do_lift ← Lean.LLVM.intTypeInContext ctx width Lean.LLVM.constInt __do_lift value signExtend
Instances For
Equations
- Lean.LLVM.constInt1 ctx value signExtend = Lean.LLVM.constInt' ctx 1 value signExtend
Instances For
Equations
- Lean.LLVM.constInt8 ctx value signExtend = Lean.LLVM.constInt' ctx 8 value signExtend
Instances For
Equations
- Lean.LLVM.constInt32 ctx value signExtend = Lean.LLVM.constInt' ctx 32 value signExtend
Instances For
Equations
- Lean.LLVM.constInt64 ctx value signExtend = Lean.LLVM.constInt' ctx 64 value signExtend
Instances For
Equations
- Lean.LLVM.constIntSizeT ctx value signExtend = Lean.LLVM.constInt' ctx 64 value signExtend
Instances For
Equations
- Lean.LLVM.constIntUnsigned ctx value signExtend = Lean.LLVM.constInt' ctx 32 value signExtend