diff options
Diffstat (limited to 'gitlab/issues_text/target_sparc/host_missing/accel_missing/1901')
| -rw-r--r-- | gitlab/issues_text/target_sparc/host_missing/accel_missing/1901 | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/gitlab/issues_text/target_sparc/host_missing/accel_missing/1901 b/gitlab/issues_text/target_sparc/host_missing/accel_missing/1901 new file mode 100644 index 000000000..5fa434b55 --- /dev/null +++ b/gitlab/issues_text/target_sparc/host_missing/accel_missing/1901 @@ -0,0 +1,19 @@ +qemu-sparc64 / sparc32plus apparent wrong results from VIS fmul8x16 instruction +Description of problem: +Experimenting with SPARC emulation, I noticed that the results of the UltraSparc fmul8x16 instruction don't appear to match the behaviour of real silicon (aka it doesn't appear to work at all -- in the test program, the result seems to be always 0). Other VIS instructions I tried seem to be OK (I have not tried all of them). + +The same problem is observed both in 64-bit (qemu-sparc64) and 32-bit (qemu-sparc32plus) applications. +Steps to reproduce: +1. Compile the attached test program (which exhaustively tests all possible combinations of 16-bit and 8-bit inputs) with gcc: + ``` + sparc64-unknown-linux-gnu-gcc -static -Os -mcpu=ultrasparc -mvis -o test_fmul8x16 test_fmul8x16.c + ``` +2. Run it in qemu-sparc64: + ``` + qemu-sparc64 -cpu 'TI UltraSparc II' ./test_fmul8x16 + ``` +3. Observe almost all tests fail. + + Running the exact same compiled binary on a real UltraSparc II CPU gives all pass results. +Additional information: +[test_fmul8x16.c](/uploads/2bf68e53652fba2ed69ac3ebb3f4b5e9/test_fmul8x16.c) |