Index: bindings/go/llvm/ir.go =================================================================== --- bindings/go/llvm/ir.go +++ bindings/go/llvm/ir.go @@ -74,6 +74,7 @@ IntPredicate C.LLVMIntPredicate FloatPredicate C.LLVMRealPredicate LandingPadClause C.LLVMLandingPadClauseTy + InlineAsmDialect C.LLVMInlineAsmDialect ) func (c Context) IsNil() bool { return c.C == nil } @@ -315,6 +316,15 @@ ) //------------------------------------------------------------------------- +// llvm.InlineAsmDialect +//------------------------------------------------------------------------- + +const ( + InlineAsmDialectATT InlineAsmDialect = C.LLVMInlineAsmDialectATT + InlineAsmDialectIntel InlineAsmDialect = C.LLVMInlineAsmDialectIntel +) + +//------------------------------------------------------------------------- // llvm.Context //------------------------------------------------------------------------- @@ -1242,6 +1252,16 @@ return } +// Operations on inline assembly +func InlineAsm(t Type, asmString, constraints string, hasSideEffects, isAlignStack bool, dialect InlineAsmDialect) (rv Value) { + casm := C.CString(asmString) + defer C.free(unsafe.Pointer(casm)) + cconstraints := C.CString(constraints) + defer C.free(unsafe.Pointer(cconstraints)) + rv.C = C.LLVMGetInlineAsm(t.C, casm, C.size_t(len(asmString)), cconstraints, C.size_t(len(constraints)), boolToLLVMBool(hasSideEffects), boolToLLVMBool(isAlignStack), C.LLVMInlineAsmDialect(dialect)) + return +} + //------------------------------------------------------------------------- // llvm.Builder //-------------------------------------------------------------------------