[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 6/8] target-arm: A64: Add integer ops from SI
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH v2 6/8] target-arm: A64: Add integer ops from SIMD 3-same group |
Date: |
Sat, 25 Jan 2014 18:35:39 +0000 |
On 23 January 2014 15:28, Peter Maydell <address@hidden> wrote:
> Add some of the integer operations in the SIMD 3-same group:
> specifically, the comparisons, addition and subtraction.
>
> @@ -6040,7 +6062,141 @@ static void disas_simd_3same_float(DisasContext *s,
> uint32_t insn)
> /* Integer op subgroup of C3.6.16. */
> static void disas_simd_3same_int(DisasContext *s, uint32_t insn)
> {
> - unsupported_encoding(s, insn);
> + int is_q = extract32(insn, 30, 1);
> + int u = extract32(insn, 29, 1);
> + int size = extract32(insn, 22, 2);
> + int opcode = extract32(insn, 11, 5);
> + int rm = extract32(insn, 16, 5);
> + int rn = extract32(insn, 5, 5);
> + int rd = extract32(insn, 0, 5);
> + int pass;
> +
> + switch (opcode) {
> + case 0x13: /* MUL, PMUL */
> + if (u && size != 0) {
> + unallocated_encoding(s);
> + return;
> + }
> + /* fall through */
> + case 0x0: /* SHADD, UHADD */
> + case 0x2: /* SRHADD, URHADD */
> + case 0x4: /* SHSUB, UHSUB */
> + case 0xc: /* SMAX, UMAX */
> + case 0xd: /* SMIN, UMIN */
> + case 0xe: /* SABD, UABD */
> + case 0xf: /* SABA, UABA */
> + case 0x12: /* MLA, MLS */
> + if (size == 3) {
> + unallocated_encoding(s);
> + return;
> + }
> + unsupported_encoding(s, insn);
> + return;
> + case 0x1: /* SQADD */
> + case 0x5: /* SQSUB */
> + case 0x8: /* SSHL, USHL */
> + case 0x9: /* SQSHL, UQSHL */
> + case 0xa: /* SRSHL, URSHL */
> + case 0xb: /* SQRSHL, UQRSHL */
> + if (size == 3 && !is_q) {
> + unallocated_encoding(s);
> + return;
> + }
> + unsupported_encoding(s, insn);
> + return;
> + default:
> + if (size == 3 && !is_q) {
> + unallocated_encoding(s);
> + return;
> + }
> + break;
> + }
Just noticed this switch is missing a case:
case 0x16: /* SQDMULH, SQRDMULH */
if (size == 0 || size == 3) {
unallocated_encoding(s);
return;
}
break;
thanks
-- PMM
- [Qemu-devel] [PATCH v2 0/8] target-arm: A64 Neon instructions, set 2, Peter Maydell, 2014/01/23
- [Qemu-devel] [PATCH v2 1/8] target-arm: A64: Add SIMD three-different multiply accumulate insns, Peter Maydell, 2014/01/23
- [Qemu-devel] [PATCH v2 4/8] target-arm: A64: Add top level decode for SIMD 3-same group, Peter Maydell, 2014/01/23
- [Qemu-devel] [PATCH v2 6/8] target-arm: A64: Add integer ops from SIMD 3-same group, Peter Maydell, 2014/01/23
- [Qemu-devel] [PATCH v2 2/8] target-arm: A64: Add SIMD three-different ABDL instructions, Peter Maydell, 2014/01/23
- [Qemu-devel] [PATCH v2 5/8] target-arm: A64: Add logic ops from SIMD 3 same group, Peter Maydell, 2014/01/23
- [Qemu-devel] [PATCH v2 3/8] target-arm: A64: Add SIMD scalar 3 same add, sub and compare ops, Peter Maydell, 2014/01/23
- [Qemu-devel] [PATCH v2 8/8] target-arm: A64: Add SIMD shift by immediate, Peter Maydell, 2014/01/23
- [Qemu-devel] [PATCH v2 7/8] target-arm: A64: Add simple SIMD 3-same floating point ops, Peter Maydell, 2014/01/23