summaryrefslogtreecommitdiffstats
path: root/llvm/bindings
diff options
context:
space:
mode:
authorwhitequark <whitequark@whitequark.org>2018-09-28 16:48:47 +0000
committerwhitequark <whitequark@whitequark.org>2018-09-28 16:48:47 +0000
commite42a8ecf660b1244b1b573007c2fbf70042e02a4 (patch)
tree8534f5f05462eac6b217a14c37f819e0edc675bd /llvm/bindings
parentf3a981e801f096fcdddd15d544f77856ce50b98a (diff)
downloadbcm5719-llvm-e42a8ecf660b1244b1b573007c2fbf70042e02a4.tar.gz
bcm5719-llvm-e42a8ecf660b1244b1b573007c2fbf70042e02a4.zip
[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 llvm-svn: 343339
Diffstat (limited to 'llvm/bindings')
-rw-r--r--llvm/bindings/go/llvm/ir.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/bindings/go/llvm/ir.go b/llvm/bindings/go/llvm/ir.go
index a336c0ef44c..b3bf7ffebe0 100644
--- a/llvm/bindings/go/llvm/ir.go
+++ b/llvm/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
//-------------------------------------------------------------------------
OpenPOWER on IntegriCloud