Skip to content

Commit e42a8ec

Browse files
committedSep 28, 2018
[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
1 parent f3a981e commit e42a8ec

File tree

1 file changed

+20
-0
lines changed
  • llvm/bindings/go/llvm

1 file changed

+20
-0
lines changed
 

‎llvm/bindings/go/llvm/ir.go

+20
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ type (
7474
IntPredicate C.LLVMIntPredicate
7575
FloatPredicate C.LLVMRealPredicate
7676
LandingPadClause C.LLVMLandingPadClauseTy
77+
InlineAsmDialect C.LLVMInlineAsmDialect
7778
)
7879

7980
func (c Context) IsNil() bool { return c.C == nil }
@@ -314,6 +315,15 @@ const (
314315
LandingPadFilter LandingPadClause = C.LLVMLandingPadFilter
315316
)
316317

318+
//-------------------------------------------------------------------------
319+
// llvm.InlineAsmDialect
320+
//-------------------------------------------------------------------------
321+
322+
const (
323+
InlineAsmDialectATT InlineAsmDialect = C.LLVMInlineAsmDialectATT
324+
InlineAsmDialectIntel InlineAsmDialect = C.LLVMInlineAsmDialectIntel
325+
)
326+
317327
//-------------------------------------------------------------------------
318328
// llvm.Context
319329
//-------------------------------------------------------------------------
@@ -1237,6 +1247,16 @@ func (v Value) IncomingBlock(i int) (bb BasicBlock) {
12371247
return
12381248
}
12391249

1250+
// Operations on inline assembly
1251+
func InlineAsm(t Type, asmString, constraints string, hasSideEffects, isAlignStack bool, dialect InlineAsmDialect) (rv Value) {
1252+
casm := C.CString(asmString)
1253+
defer C.free(unsafe.Pointer(casm))
1254+
cconstraints := C.CString(constraints)
1255+
defer C.free(unsafe.Pointer(cconstraints))
1256+
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))
1257+
return
1258+
}
1259+
12401260
//-------------------------------------------------------------------------
12411261
// llvm.Builder
12421262
//-------------------------------------------------------------------------

0 commit comments

Comments
 (0)
Please sign in to comment.