Port FuncAddr & SymbolValue to ISLE (AArch64) (#4748)
Ported the existing implementations of the following opcodes for AArch64 to ISLE: - `FuncAddr` - `SymbolValue` Copyright (c) 2022 Arm Limited
This commit is contained in:
@@ -569,31 +569,13 @@ pub(crate) fn lower_insn_to_regs(
|
||||
panic!("trapz / trapnz / resumable_trapnz should have been removed by legalization!");
|
||||
}
|
||||
|
||||
Opcode::FuncAddr => {
|
||||
let rd = get_output_reg(ctx, outputs[0]).only_reg().unwrap();
|
||||
let (extname, _) = ctx.call_target(insn).unwrap();
|
||||
let extname = extname.clone();
|
||||
ctx.emit(Inst::LoadExtName {
|
||||
rd,
|
||||
name: Box::new(extname),
|
||||
offset: 0,
|
||||
});
|
||||
}
|
||||
Opcode::FuncAddr => implemented_in_isle(ctx),
|
||||
|
||||
Opcode::GlobalValue => {
|
||||
panic!("global_value should have been removed by legalization!");
|
||||
}
|
||||
|
||||
Opcode::SymbolValue => {
|
||||
let rd = get_output_reg(ctx, outputs[0]).only_reg().unwrap();
|
||||
let (extname, _, offset) = ctx.symbol_value(insn).unwrap();
|
||||
let extname = extname.clone();
|
||||
ctx.emit(Inst::LoadExtName {
|
||||
rd,
|
||||
name: Box::new(extname),
|
||||
offset,
|
||||
});
|
||||
}
|
||||
Opcode::SymbolValue => implemented_in_isle(ctx),
|
||||
|
||||
Opcode::Call | Opcode::CallIndirect => {
|
||||
let caller_conv = ctx.abi().call_conv();
|
||||
|
||||
Reference in New Issue
Block a user