mirror of
https://github.com/vosen/ZLUDA.git
synced 2025-09-29 12:49:13 +00:00
Minor compiler improvements
This commit is contained in:
parent
78548951f1
commit
48e20d06bf
2 changed files with 24 additions and 25 deletions
|
@ -1672,25 +1672,23 @@ impl<'a> MethodEmitContext<'a> {
|
||||||
.ok_or_else(|| error_mismatched_type())?,
|
.ok_or_else(|| error_mismatched_type())?,
|
||||||
);
|
);
|
||||||
let src2 = self.resolver.value(src2)?;
|
let src2 = self.resolver.value(src2)?;
|
||||||
self.resolver.with_result(arguments.dst, |dst| {
|
let vec = unsafe {
|
||||||
let vec = unsafe {
|
LLVMBuildInsertElement(
|
||||||
LLVMBuildInsertElement(
|
self.builder,
|
||||||
self.builder,
|
LLVMGetPoison(dst_type),
|
||||||
LLVMGetPoison(dst_type),
|
llvm_fn(self.builder, src, packed_type, LLVM_UNNAMED.as_ptr()),
|
||||||
llvm_fn(self.builder, src, packed_type, LLVM_UNNAMED.as_ptr()),
|
LLVMConstInt(LLVMInt32TypeInContext(self.context), 1, false as i32),
|
||||||
LLVMConstInt(LLVMInt32TypeInContext(self.context), 1, false as i32),
|
LLVM_UNNAMED.as_ptr(),
|
||||||
LLVM_UNNAMED.as_ptr(),
|
)
|
||||||
)
|
};
|
||||||
};
|
self.resolver.with_result(arguments.dst, |dst| unsafe {
|
||||||
unsafe {
|
LLVMBuildInsertElement(
|
||||||
LLVMBuildInsertElement(
|
self.builder,
|
||||||
self.builder,
|
vec,
|
||||||
vec,
|
llvm_fn(self.builder, src2, packed_type, LLVM_UNNAMED.as_ptr()),
|
||||||
llvm_fn(self.builder, src2, packed_type, LLVM_UNNAMED.as_ptr()),
|
LLVMConstInt(LLVMInt32TypeInContext(self.context), 0, false as i32),
|
||||||
LLVMConstInt(LLVMInt32TypeInContext(self.context), 0, false as i32),
|
dst,
|
||||||
dst,
|
)
|
||||||
)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
self.resolver.with_result(arguments.dst, |dst| unsafe {
|
self.resolver.with_result(arguments.dst, |dst| unsafe {
|
||||||
|
@ -2216,7 +2214,7 @@ impl<'a> MethodEmitContext<'a> {
|
||||||
Some(&ast::ScalarType::F32.into()),
|
Some(&ast::ScalarType::F32.into()),
|
||||||
vec![(
|
vec![(
|
||||||
self.resolver.value(arguments.src)?,
|
self.resolver.value(arguments.src)?,
|
||||||
get_scalar_type(self.context, ast::ScalarType::F32.into()),
|
get_scalar_type(self.context, ast::ScalarType::F32),
|
||||||
)],
|
)],
|
||||||
)?;
|
)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -2677,14 +2675,14 @@ impl<'a> MethodEmitContext<'a> {
|
||||||
|
|
||||||
let load = unsafe { LLVMBuildLoad2(self.builder, from_type, from, LLVM_UNNAMED.as_ptr()) };
|
let load = unsafe { LLVMBuildLoad2(self.builder, from_type, from, LLVM_UNNAMED.as_ptr()) };
|
||||||
unsafe {
|
unsafe {
|
||||||
LLVMSetAlignment(load, (cp_size.as_u64() as u32) * 8);
|
LLVMSetAlignment(load, cp_size.as_u64() as u32);
|
||||||
}
|
}
|
||||||
|
|
||||||
let extended = unsafe { LLVMBuildZExt(self.builder, load, to_type, LLVM_UNNAMED.as_ptr()) };
|
let extended = unsafe { LLVMBuildZExt(self.builder, load, to_type, LLVM_UNNAMED.as_ptr()) };
|
||||||
|
|
||||||
unsafe { LLVMBuildStore(self.builder, extended, to) };
|
let store = unsafe { LLVMBuildStore(self.builder, extended, to) };
|
||||||
unsafe {
|
unsafe {
|
||||||
LLVMSetAlignment(load, (cp_size.as_u64() as u32) * 8);
|
LLVMSetAlignment(store, cp_size.as_u64() as u32);
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -226,8 +226,9 @@ fn int_immediate<'a, 'input>(input: &mut PtxParser<'a, 'input>) -> PResult<ast::
|
||||||
take_error((opt(Token::Minus), num).map(|(neg, x)| {
|
take_error((opt(Token::Minus), num).map(|(neg, x)| {
|
||||||
let (num, radix, is_unsigned) = x;
|
let (num, radix, is_unsigned) = x;
|
||||||
if neg.is_some() {
|
if neg.is_some() {
|
||||||
match i64::from_str_radix(num, radix) {
|
let full_number = format!("-{num}");
|
||||||
Ok(x) => Ok(ast::ImmediateValue::S64(-x)),
|
match i64::from_str_radix(&full_number, radix) {
|
||||||
|
Ok(x) => Ok(ast::ImmediateValue::S64(x)),
|
||||||
Err(err) => Err((ast::ImmediateValue::S64(0), PtxError::from(err))),
|
Err(err) => Err((ast::ImmediateValue::S64(0), PtxError::from(err))),
|
||||||
}
|
}
|
||||||
} else if is_unsigned {
|
} else if is_unsigned {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue