fallback: translate: call llvm.riscv.vlseg2.triscv.vector.tuple_nxv8i8_2t.p0.i64
| Run: | explore-bc8218b282-20261015-075519 |
| Kind: | fallback |
| Category: | translate: call llvm.riscv.vlseg2.triscv.vector.tuple_nxv8i8_2t.p0.i64 |
| Occurrences: | 3 in 1 configs, 1 test files |
| Snippet from: | zero-call-used-regs-v.ll @load_segmented via llvm-extract |
| Config: | -verify-machineinstrs -mtriple=riscv64 -mattr=+v |
| Local check: | reproduces at bc8218b282 |
| Compiler Explorer: | not uploaded (over --godbolt-limit or disabled) |
Snippet:
define <8 x i8> @load_segmented(ptr %base, ptr %out, <8 x i8> %use_v8) #0 {
entry:
%tuple = call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlseg2.triscv.vector.tuple_nxv8i8_2t.p0.i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i64 0, i64 3)
%v0 = call <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) %tuple, i32 0)
store <vscale x 8 x i8> %v0, ptr %out, align 8
ret <8 x i8> %use_v8
}
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <vscale x 8 x i8> @llvm.riscv.tuple.extract.nxv8i8.triscv.vector.tuple_nxv8i8_2t(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), i32 immarg) #1
; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: read)
declare target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlseg2.triscv.vector.tuple_nxv8i8_2t.p0.i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2), ptr captures(none), i64, i64 immarg) #2
attributes #0 = { "zero-call-used-regs"="used" }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }
Reproduce:
llc -verify-machineinstrs -mtriple=riscv64 -mattr=+v -global-isel -global-isel-abort=2 -pass-remarks-missed=gisel.* snippet.ll -o -
llc -verify-machineinstrs -mtriple=riscv64 -mattr=+v -global-isel=0 snippet.ll -o -
Local llc output:
remark: <unknown>:0:0: unable to translate instruction: call llvm.riscv.vlseg2.triscv.vector.tuple_nxv8i8_2t.p0.i64: ' %tuple = call target("riscv.vector.tuple", <vscale x 8 x i8>, 2) @llvm.riscv.vlseg2.triscv.vector.tuple_nxv8i8_2t.p0.i64(target("riscv.vector.tuple", <vscale x 8 x i8>, 2) poison, ptr %base, i64 0, i64 3)' (in function: load_segmented)
warning: Instruction selection used fallback path for load_segmented
Occurrences (3):
| Input | Function | Config |
|---|
| zero-call-used-regs-v.ll | load_segmented | -verify-machineinstrs -mtriple=riscv64 -mattr=+v |
| zero-call-used-regs-v.17d090696a.ll (mutant of zero-call-used-regs-v.ll) | load_segmented | -verify-machineinstrs -mtriple=riscv64 -mattr=+v |
| zero-call-used-regs-v.cb22d87103.ll (mutant of zero-call-used-regs-v.ll) | load_segmented | -verify-machineinstrs -mtriple=riscv64 -mattr=+v |
Generated 2026-10-15 08:05 UTC.