bytecodealliance / wasmtime

A fast and secure runtime for WebAssembly

Home Page:https://wasmtime.dev/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

riscv64: Panic on partial gen_extractlane rule

alexcrichton opened this issue · comments

This input:

;; out.clif
test compile
target riscv64

function u1:0(i128, f32, f64) -> f64 fast {
block0(v0: i128, v1: f32, v2: f64):
    v9 = fpromote.f64 v1
    v10 = f64const +NaN
    v11 = scalar_to_vector.f64x2 v10  ; v10 = +NaN
    v12 = scalar_to_vector.f64x2 v9
    v13 = fcmp uno v12, v12
    v14 = bitcast.f64x2 v13
    v15 = bitselect v14, v11, v12
    v8 = extractlane v15, 0
    return v8
}

yields:

$ cargo run -q test ../out.clif
thread 'worker #1' panicked at /Users/alex/code/wasmtime/target/debug/build/cranelift-codegen-41964176c4a44af8/out/isle_riscv64.rs:9760:5:
internal error: entered unreachable code: no rule matched for term gen_extractlane at src/isa/riscv64/inst_vector.isle line 1496; should it be partial?
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
 ERROR cranelift_filetests::concurrent > FAIL: panicked in worker #1: internal error: entered unreachable code: no rule matched for term gen_extractlane at src/isa/riscv64/inst_vector.isle line 1496; should it be partial?
FAIL ../out.clif: panicked in worker #1: internal error: entered unreachable code: no rule matched for term gen_extractlane at src/isa/riscv64/inst_vector.isle line 1496; should it be partial?
1 tests
Error: 1 failure

cc @afonso360, oss-fuzz reports this is a "regression" from #8313 but I suspect this was probably preexisting.