MD_tbaa_struct = 5
}
+// Inline Asm Dialect
+pub enum AsmDialect {
+ AD_ATT = 0,
+ AD_Intel = 1
+}
+
// Opaque pointer types
pub enum Module_opaque {}
pub type ModuleRef = *Module_opaque;
pub type SectionIteratorRef = *SectionIterator_opaque;
pub mod llvm {
- use super::{AtomicBinOp, AtomicOrdering, BasicBlockRef, Bool, BuilderRef};
- use super::{ContextRef, MemoryBufferRef, ModuleRef, ObjectFileRef};
- use super::{Opcode, PassManagerRef, PassManagerBuilderRef};
+ use super::{AsmDialect, AtomicBinOp, AtomicOrdering, BasicBlockRef};
+ use super::{Bool, BuilderRef, ContextRef, MemoryBufferRef, ModuleRef};
+ use super::{ObjectFileRef, Opcode, PassManagerRef, PassManagerBuilderRef};
use super::{SectionIteratorRef, TargetDataRef, TypeKind, TypeRef, UseRef};
use super::{ValueRef};
/** Prepares inline assembly. */
pub unsafe fn LLVMInlineAsm(Ty: TypeRef, AsmString: *c_char,
Constraints: *c_char, SideEffects: Bool,
- AlignStack: Bool) -> ValueRef;
+ AlignStack: Bool, Dialect: AsmDialect)
+ -> ValueRef;
}
}
// except according to those terms.
use lib::llvm::llvm;
-use lib::llvm::{CallConv, TypeKind, AtomicBinOp, AtomicOrdering};
+use lib::llvm::{CallConv, TypeKind, AtomicBinOp, AtomicOrdering, AsmDialect};
use lib::llvm::{Opcode, IntPredicate, RealPredicate, True, False};
use lib::llvm::{ValueRef, TypeRef, BasicBlockRef, BuilderRef, ModuleRef};
use lib;
}
}
-pub fn InlineAsmCall(cx: block, asm: *c_char, cons: *c_char) -> ValueRef {
+pub fn InlineAsmCall(cx: block, asm: *c_char, cons: *c_char,
+ dia: AsmDialect) -> ValueRef {
unsafe {
count_insn(cx, "inlineasm");
let llfty = T_fn(~[], T_void());
- let v = llvm::LLVMInlineAsm(llfty, asm, cons, False, False);
+ let v = llvm::LLVMInlineAsm(llfty, asm, cons, False, False, dia);
Call(cx, v, ~[])
}
ast::expr_inline_asm(asm, cons) => {
do str::as_c_str(*asm) |a| {
do str::as_c_str(*cons) |c| {
- InlineAsmCall(bcx, a, c);
+ InlineAsmCall(bcx, a, c, lib::llvm::AD_ATT);
}
}
return bcx;
char *AsmString,
char *Constraints,
LLVMBool HasSideEffects,
- LLVMBool IsAlignStack) {
+ LLVMBool IsAlignStack,
+ InlineAsm::AsmDialect Dialect) {
return wrap(InlineAsm::get(unwrap<FunctionType>(Ty), AsmString,
Constraints, HasSideEffects,
- IsAlignStack));
-// IsAlignStack, InlineAsm::AD_Intel));
+ IsAlignStack, Dialect));
}