forked from M-Labs/nac3
1
0
Fork 0

core: make get_llvm_type return new NDArray with strides

NOTE: All old numpy functions are now impossible to run, until NDArray
with strides is fully implemented.
This commit is contained in:
lyken 2024-07-26 15:45:26 +08:00
parent 8ae9a4294b
commit 02e3ddfce6
1 changed files with 6 additions and 9 deletions

View File

@ -1,7 +1,7 @@
use crate::{ use crate::{
codegen::classes::{ListType, NDArrayType, ProxyType, RangeType}, codegen::classes::{ListType, ProxyType, RangeType},
symbol_resolver::{StaticValue, SymbolResolver}, symbol_resolver::{StaticValue, SymbolResolver},
toplevel::{helper::PrimDef, numpy::unpack_ndarray_var_tys, TopLevelContext, TopLevelDef}, toplevel::{helper::PrimDef, TopLevelContext, TopLevelDef},
typecheck::{ typecheck::{
type_inferencer::{CodeLocation, PrimitiveStore}, type_inferencer::{CodeLocation, PrimitiveStore},
typedef::{CallId, FuncArg, Type, TypeEnum, Unifier}, typedef::{CallId, FuncArg, Type, TypeEnum, Unifier},
@ -33,7 +33,7 @@ use std::sync::{
Arc, Arc,
}; };
use std::thread; use std::thread;
use structure::{cslice::CSlice, exception::Exception}; use structure::{cslice::CSlice, exception::Exception, ndarray::NpArray};
pub mod builtin_fns; pub mod builtin_fns;
pub mod classes; pub mod classes;
@ -494,12 +494,9 @@ fn get_llvm_type<'ctx, G: CodeGenerator + ?Sized>(
} }
TObj { obj_id, .. } if *obj_id == PrimDef::NDArray.id() => { TObj { obj_id, .. } if *obj_id == PrimDef::NDArray.id() => {
let (dtype, _) = unpack_ndarray_var_tys(unifier, ty); let tyctx = generator.type_context(ctx);
let element_type = get_llvm_type( let pndarray_model = PtrModel(StructModel(NpArray));
ctx, module, generator, unifier, top_level, type_cache, dtype, pndarray_model.get_type(tyctx, ctx).into()
);
NDArrayType::new(generator, ctx, element_type).as_base_type().into()
} }
_ => unreachable!( _ => unreachable!(