cranelift: Port trap and resumable_trap lowering to ISLE on x64

This commit is contained in:
Nick Fitzgerald
2022-01-13 15:39:41 -08:00
parent 5bb3645bd4
commit 658c5d33c1
9 changed files with 299 additions and 185 deletions

View File

@@ -1234,7 +1234,9 @@ fn lower_insn_to_regs<C: LowerCtx<I = Inst>>(
| Opcode::Ishl
| Opcode::Rotl
| Opcode::Rotr
| Opcode::Ineg => implemented_in_isle(ctx),
| Opcode::Ineg
| Opcode::Trap
| Opcode::ResumableTrap => implemented_in_isle(ctx),
Opcode::Clz => {
let orig_ty = ty.unwrap();
@@ -2369,11 +2371,6 @@ fn lower_insn_to_regs<C: LowerCtx<I = Inst>>(
ctx.emit(Inst::Hlt);
}
Opcode::Trap | Opcode::ResumableTrap => {
let trap_code = ctx.data(insn).trap_code().unwrap();
ctx.emit_safepoint(Inst::Ud2 { trap_code });
}
Opcode::Trapif | Opcode::Trapff => {
let trap_code = ctx.data(insn).trap_code().unwrap();