diff options
Diffstat (limited to 'results/classifier/118/architecture-arm/1308381')
| -rw-r--r-- | results/classifier/118/architecture-arm/1308381 | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/results/classifier/118/architecture-arm/1308381 b/results/classifier/118/architecture-arm/1308381 new file mode 100644 index 00000000..97f7fe68 --- /dev/null +++ b/results/classifier/118/architecture-arm/1308381 @@ -0,0 +1,146 @@ +architecture: 0.880 +arm: 0.838 +peripherals: 0.831 +performance: 0.825 +assembly: 0.817 +hypervisor: 0.807 +graphic: 0.807 +register: 0.800 +device: 0.793 +debug: 0.789 +PID: 0.786 +ppc: 0.786 +risc-v: 0.781 +files: 0.768 +vnc: 0.762 +kernel: 0.751 +permissions: 0.749 +boot: 0.749 +VMM: 0.747 +mistranslation: 0.744 +socket: 0.709 +virtual: 0.706 +user-level: 0.706 +network: 0.693 +x86: 0.629 +KVM: 0.628 +TCG: 0.616 +i386: 0.521 +semantic: 0.520 +-------------------- +arm: 0.935 +architecture: 0.445 +assembly: 0.402 +debug: 0.311 +TCG: 0.056 +register: 0.037 +files: 0.035 +semantic: 0.020 +risc-v: 0.020 +kernel: 0.018 +PID: 0.014 +device: 0.013 +hypervisor: 0.010 +user-level: 0.008 +boot: 0.008 +VMM: 0.006 +network: 0.005 +virtual: 0.005 +performance: 0.005 +vnc: 0.004 +peripherals: 0.004 +socket: 0.004 +graphic: 0.002 +mistranslation: 0.002 +permissions: 0.001 +KVM: 0.000 +x86: 0.000 +i386: 0.000 +ppc: 0.000 + +illegal instructions for AArch64 ARMv8 + +The test case is in the attachment. To reproduce as following (I tried both GCC and Clang): +$aarch64-linux-gnu-gcc qemu.c -o test +$./test +qemu: uncaught target signal 4 (Illegal instruction) - core dumped +Illegal instruction (core dumped) + +There are 3 intrinsics are tested in the test case: vqmovunh_s16, vqmovuns_s32, vqmovund_s64. They will be compiled into instructions: +SQXTUN Bd, Hn +SQXTUN Hd, Sn +SQXTUN Sd, Dn. + +It seems that these instructions are not supported in QEMU. Is this a bug? + + + +Can you attach a statically linked test case binary, please? + + + +Peter Maydell <email address hidden> writes: + +> Can you attach a statically linked test case binary, please? + +I can reproduce with the source file. It looks like: + +@@ -7553,12 +7555,9 @@ static void disas_simd_scalar_two_reg_misc(DisasContext *s, uint32_t insn) + } + break; + case 0x12: /* SQXTUN */ +- if (u) { +- unallocated_encoding(s); +- return; +- } + /* fall through */ + +Fixes it. Let me check why this slipped through the risu tests and +re-validate. I'll submit a patch once I've double checked. + +-- +Alex Bennée + + + +On 16 April 2014 11:55, Alex Bennée <email address hidden> wrote: +> +> Peter Maydell <email address hidden> writes: +> +>> Can you attach a statically linked test case binary, please? +> +> I can reproduce with the source file. It looks like: +> +> @@ -7553,12 +7555,9 @@ static void disas_simd_scalar_two_reg_misc(DisasContext *s, uint32_t insn) +> } +> break; +> case 0x12: /* SQXTUN */ +> - if (u) { +> - unallocated_encoding(s); +> - return; +> - } +> /* fall through */ +> +> Fixes it. + +However the ARM ARM, unless I'm misreading it, requires scalar-2-misc +SQXTUN to have U==1, so the correct fix should be to turn that "if (u)" +into "if (!u)" I think. (Opcode 0x12 u==0 isn't in the table so should undef.) + +Better check we didn't make the same mistake in the vector-2-misc +decode as well. + +thanks +-- PMM + + +Fix identified + +I've sent this patch to the mailing list but it fixes the attached test case and has been tested with risu patterns. + +@pmaydell: yeah vector is unaffected as U is used to select another opcode. + +Patch had been included here: +http://git.qemu.org/?p=qemu.git;a=commitdiff;h=e44a90c59697cf98 +==> Fix released + |