summary refs log tree commit diff stats
path: root/results/classifier/semantic-bugs/instruction/2865
diff options
context:
space:
mode:
authorChristian Krinitsin <mail@krinitsin.com>2025-07-03 19:39:53 +0200
committerChristian Krinitsin <mail@krinitsin.com>2025-07-03 19:39:53 +0200
commitdee4dcba78baf712cab403d47d9db319ab7f95d6 (patch)
tree418478faf06786701a56268672f73d6b0b4eb239 /results/classifier/semantic-bugs/instruction/2865
parent4d9e26c0333abd39bdbd039dcdb30ed429c475ba (diff)
downloademulator-bug-study-dee4dcba78baf712cab403d47d9db319ab7f95d6.tar.gz
emulator-bug-study-dee4dcba78baf712cab403d47d9db319ab7f95d6.zip
restructure results
Diffstat (limited to 'results/classifier/semantic-bugs/instruction/2865')
-rw-r--r--results/classifier/semantic-bugs/instruction/286565
1 files changed, 0 insertions, 65 deletions
diff --git a/results/classifier/semantic-bugs/instruction/2865 b/results/classifier/semantic-bugs/instruction/2865
deleted file mode 100644
index 993bac92..00000000
--- a/results/classifier/semantic-bugs/instruction/2865
+++ /dev/null
@@ -1,65 +0,0 @@
-instruction: 0.901
-assembly: 0.741
-mistranslation: 0.694
-device: 0.653
-graphic: 0.618
-socket: 0.439
-vnc: 0.390
-network: 0.364
-other: 0.326
-boot: 0.235
-semantic: 0.210
-KVM: 0.187
-
-loongarch64: wrong implementation of `xvldi` instruction
-Description of problem:
-Consider this sample program.
-
-```c++
-#include <cstdio>
-#include <cstdint>
-#include <lsxintrin.h>
-#include <lasxintrin.h>
-
-void dump_u32(__m256i x) {
-    uint32_t tmp[32/4];
-    __lasx_xvst(x, tmp, 0);
-    putchar('[');
-    for (int i=0; i < 32/4; i++) {
-        if (i > 0) {
-            putchar(' ');
-        }
-
-        printf("%08x", tmp[i]);
-    }
-    puts("]");
-}
-
-int main() {
-    __m256i const1 = __lasx_xvldi(-3832);
-    dump_u32(const1);
-}
-```
-
-The magic constants here means: replicate in 32-bit words a byte (0x4) shifted left by 8. We should have a vector of words 0x800, and indeed, the program run on a real hardware prints expected:
-
-```
-[00000800 00000800 00000800 00000800 00000800 00000800 00000800 00000800]
-```
-
-The same program run under Qemu prints:
-
-```
-[08000800 00000000 08000800 00000000 08000800 00000000 08000800 00000000]
-```
-Additional information:
-I grabbed the latest sources, it seems there's bug in `target/loongarch/tcg/insn_trans/trans_vec.c.inc`, in function `vldi_get_value`.
-
-```c
-    case 1:
-        /* data: {2{16'0, imm[7:0], 8'0}} */
-        data = (t << 24) | (t << 8);
-        break;
-```
-
-There should be `(t << (8+32)) | t << 8`.