AArch64: port load and store operations to ISLE. (#4785)
This retains `lower_amode` in the handwritten code (@akirilov-arm reports that there is an upcoming patch to port this), but tweaks it slightly to take a `Value` rather than an `Inst`.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
//! Dynamic IR types
|
||||
|
||||
use crate::ir::entities::DynamicType;
|
||||
use crate::ir::types::*;
|
||||
use crate::ir::GlobalValue;
|
||||
use crate::ir::PrimaryMap;
|
||||
use crate::ir::Type;
|
||||
@@ -36,3 +37,19 @@ impl DynamicTypeData {
|
||||
|
||||
/// All allocated dynamic types.
|
||||
pub type DynamicTypes = PrimaryMap<DynamicType, DynamicTypeData>;
|
||||
|
||||
/// Convert a dynamic-vector type to a fixed-vector type.
|
||||
pub fn dynamic_to_fixed(ty: Type) -> Type {
|
||||
match ty {
|
||||
I8X8XN => I8X8,
|
||||
I8X16XN => I8X16,
|
||||
I16X4XN => I16X4,
|
||||
I16X8XN => I16X8,
|
||||
I32X2XN => I32X2,
|
||||
I32X4XN => I32X4,
|
||||
I64X2XN => I64X2,
|
||||
F32X4XN => F32X4,
|
||||
F64X2XN => F64X2,
|
||||
_ => unreachable!("unhandled type: {}", ty),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ pub use crate::ir::builder::{
|
||||
};
|
||||
pub use crate::ir::constant::{ConstantData, ConstantPool};
|
||||
pub use crate::ir::dfg::{DataFlowGraph, ValueDef};
|
||||
pub use crate::ir::dynamic_type::{DynamicTypeData, DynamicTypes};
|
||||
pub use crate::ir::dynamic_type::{dynamic_to_fixed, DynamicTypeData, DynamicTypes};
|
||||
pub use crate::ir::entities::{
|
||||
Block, Constant, DynamicStackSlot, DynamicType, FuncRef, GlobalValue, Heap, Immediate, Inst,
|
||||
JumpTable, SigRef, StackSlot, Table, UserExternalNameRef, Value,
|
||||
|
||||
Reference in New Issue
Block a user