From a2e8972f3742aeb2313ec6ae0aa97fabcd6506a9 Mon Sep 17 00:00:00 2001 From: whitequark Date: Fri, 28 Sep 2018 16:48:47 +0000 Subject: [PATCH] [bindings/go] Add Go bindings for inline assembly Reviewers: harlanhaskins, whitequark, pcc Reviewed By: pcc Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D46437 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343339 91177308-0d34-0410-b5e6-96231b3b80d8 --- bindings/go/llvm/ir.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/bindings/go/llvm/ir.go b/bindings/go/llvm/ir.go index a336c0ef44c..b3bf7ffebe0 100644 --- a/bindings/go/llvm/ir.go +++ b/bindings/go/llvm/ir.go @@ -74,6 +74,7 @@ type ( 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 @@ const ( ) //------------------------------------------------------------------------- +// llvm.InlineAsmDialect +//------------------------------------------------------------------------- + +const ( + InlineAsmDialectATT InlineAsmDialect = C.LLVMInlineAsmDialectATT + InlineAsmDialectIntel InlineAsmDialect = C.LLVMInlineAsmDialectIntel +) + +//------------------------------------------------------------------------- // llvm.Context //------------------------------------------------------------------------- @@ -1237,6 +1247,16 @@ func (v Value) IncomingBlock(i int) (bb BasicBlock) { 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 //------------------------------------------------------------------------- -- 2.11.0