mirror of
https://github.com/vosen/ZLUDA.git
synced 2025-09-26 19:29:05 +00:00
Minor compiler improvements
This commit is contained in:
parent
18a2b765f7
commit
3bad9852a5
2 changed files with 25 additions and 26 deletions
|
@ -1656,25 +1656,23 @@ impl<'a> MethodEmitContext<'a> {
|
|||
.ok_or_else(|| error_mismatched_type())?,
|
||||
);
|
||||
let src2 = self.resolver.value(src2)?;
|
||||
self.resolver.with_result(arguments.dst, |dst| {
|
||||
let vec = unsafe {
|
||||
LLVMBuildInsertElement(
|
||||
self.builder,
|
||||
LLVMGetPoison(dst_type),
|
||||
llvm_fn(self.builder, src, packed_type, LLVM_UNNAMED.as_ptr()),
|
||||
LLVMConstInt(LLVMInt32TypeInContext(self.context), 1, false as i32),
|
||||
LLVM_UNNAMED.as_ptr(),
|
||||
)
|
||||
};
|
||||
unsafe {
|
||||
LLVMBuildInsertElement(
|
||||
self.builder,
|
||||
vec,
|
||||
llvm_fn(self.builder, src2, packed_type, LLVM_UNNAMED.as_ptr()),
|
||||
LLVMConstInt(LLVMInt32TypeInContext(self.context), 0, false as i32),
|
||||
dst,
|
||||
)
|
||||
}
|
||||
let vec = unsafe {
|
||||
LLVMBuildInsertElement(
|
||||
self.builder,
|
||||
LLVMGetPoison(dst_type),
|
||||
llvm_fn(self.builder, src, packed_type, LLVM_UNNAMED.as_ptr()),
|
||||
LLVMConstInt(LLVMInt32TypeInContext(self.context), 1, false as i32),
|
||||
LLVM_UNNAMED.as_ptr(),
|
||||
)
|
||||
};
|
||||
self.resolver.with_result(arguments.dst, |dst| unsafe {
|
||||
LLVMBuildInsertElement(
|
||||
self.builder,
|
||||
vec,
|
||||
llvm_fn(self.builder, src2, packed_type, LLVM_UNNAMED.as_ptr()),
|
||||
LLVMConstInt(LLVMInt32TypeInContext(self.context), 0, false as i32),
|
||||
dst,
|
||||
)
|
||||
})
|
||||
} else {
|
||||
self.resolver.with_result(arguments.dst, |dst| unsafe {
|
||||
|
@ -2200,7 +2198,7 @@ impl<'a> MethodEmitContext<'a> {
|
|||
Some(&ast::ScalarType::F32.into()),
|
||||
vec![(
|
||||
self.resolver.value(arguments.src)?,
|
||||
get_scalar_type(self.context, ast::ScalarType::F32.into()),
|
||||
get_scalar_type(self.context, ast::ScalarType::F32),
|
||||
)],
|
||||
)?;
|
||||
Ok(())
|
||||
|
@ -2703,14 +2701,14 @@ impl<'a> MethodEmitContext<'a> {
|
|||
|
||||
let load = unsafe { LLVMBuildLoad2(self.builder, from_type, from, LLVM_UNNAMED.as_ptr()) };
|
||||
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()) };
|
||||
|
||||
unsafe { LLVMBuildStore(self.builder, extended, to) };
|
||||
let store = unsafe { LLVMBuildStore(self.builder, extended, to) };
|
||||
unsafe {
|
||||
LLVMSetAlignment(load, (cp_size.as_u64() as u32) * 8);
|
||||
LLVMSetAlignment(store, cp_size.as_u64() as u32);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
@ -2990,7 +2988,7 @@ fn get_scope_membar(scope: ast::MemScope) -> Result<*const i8, TranslateError> {
|
|||
Ok(match scope {
|
||||
ast::MemScope::Cta => c"workgroup",
|
||||
ast::MemScope::Gpu => c"agent",
|
||||
ast::MemScope::Sys => c"",
|
||||
ast::MemScope::Sys => c"system",
|
||||
ast::MemScope::Cluster => todo!(),
|
||||
}
|
||||
.as_ptr())
|
||||
|
|
|
@ -227,8 +227,9 @@ fn int_immediate<'a, 'input>(input: &mut PtxParser<'a, 'input>) -> PResult<ast::
|
|||
take_error((opt(Token::Minus), num).map(|(neg, x)| {
|
||||
let (num, radix, is_unsigned) = x;
|
||||
if neg.is_some() {
|
||||
match i64::from_str_radix(num, radix) {
|
||||
Ok(x) => Ok(ast::ImmediateValue::S64(-x)),
|
||||
let full_number = format!("-{num}");
|
||||
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))),
|
||||
}
|
||||
} else if is_unsigned {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue