blob: d808865d6770013560ba224607d1950d77d888e5 (
plain) (
blame)
1
2
3
4
5
6
7
8
|
The bug reported involves an incorrect implementation of the `xvldi` instruction in QEMU's LoongArch64 emulation. The issue arises from a mistake in the vector load immediate (VLDI) instruction handling, specifically how the data is being constructed. In the provided code snippet from `insn_trans/trans_vec.c.inc`, the case for `case 1:` incorrectly computes the `data` value as `(t << 24) | (t << 8)`. This results in an incorrect pattern of bytes being replicated across the vector, leading to unexpected output when running the test program under QEMU.
The correct computation should be `(t << (8+32)) | (t << 8)` to properly replicate the immediate value across all lanes. The problem is isolated to the instruction translation and execution within QEMU's emulation of LoongArch64 instructions, specifically the `xvldi` instruction.
### Bug Classification
The issue pertains to an error in handling a specific instruction (`xvldi`) during its translation and execution in QEMU. This makes it fall under the category related to faulty instruction implementation.
**Category:** instruction
|