Wrap llvm::InlineAsm::AsmDialect
This commit is contained in:
parent
ecccc0d649
commit
fc78b93c41
@ -188,6 +188,12 @@ pub enum Metadata {
|
||||
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;
|
||||
@ -217,9 +223,9 @@ pub enum SectionIterator_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};
|
||||
|
||||
@ -1437,7 +1443,8 @@ pub mod llvm {
|
||||
/** 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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
// 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;
|
||||
@ -872,12 +872,13 @@ pub fn add_comment(bcx: block, text: &str) {
|
||||
}
|
||||
}
|
||||
|
||||
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, ~[])
|
||||
}
|
||||
|
@ -694,7 +694,7 @@ fn trans_rvalue_dps_unadjusted(bcx: block, expr: @ast::expr,
|
||||
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;
|
||||
|
@ -545,9 +545,9 @@ extern "C" LLVMValueRef LLVMInlineAsm(LLVMTypeRef Ty,
|
||||
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));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user