[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RISU PATCH v3 18/18] x86.risu: add AVX2 instructions
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [RISU PATCH v3 18/18] x86.risu: add AVX2 instructions |
Date: |
Sat, 20 Jul 2019 17:46:37 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.2 |
On 7/11/19 3:33 PM, Jan Bobek wrote:
> +# VEX.256.0F.WIG 28 /r: VMOVAPS ymm1, ymm2/m256
> +# VEX.256.0F.WIG 29 /r: VMOVAPS ymm2/m256, ymm1
> +VMOVAPS AVX2 0010100 d \
> + !constraints { vex($_, m => 0x0F, l => 256, v => 0); modrm($_); 1 } \
> + !memory { $d ? store(size => 32, align => 32) : load(size => 32, align =>
> 32); }
I believe all of the floating-point 256-bit operations are actually AVX1.
Which, I see, would annoyingly require a renaming, since that would put two
VMOVAPS insns into the same group.
I wonder if it's worth calling the two groups AVX128 and AVX256 and ignore the
actual cpuid to which the insn is assigned? Which ever way, they're still tied
to the same --xstate value to indicate ymmh.
Or could we fold the two insns together:
VMOVAPS AVX 0010100 d \
!constraints { vex($_, m => 0x0F, v => 0); modrm($_); 1 } \
!memory { my $len = $_->{vex}{l} / 8; \
$d ? store(size => $len, align => $len) \
: load(size => $len, align => $len); }
r~
- Re: [Qemu-devel] [RISU PATCH v3 03/18] risugen_x86_asm: add module, (continued)
- [Qemu-devel] [RISU PATCH v3 14/18] x86.risu: add SSSE3 instructions, Jan Bobek, 2019/07/11
- [Qemu-devel] [RISU PATCH v3 12/18] x86.risu: add SSE2 instructions, Jan Bobek, 2019/07/11
- [Qemu-devel] [RISU PATCH v3 17/18] x86.risu: add AVX instructions, Jan Bobek, 2019/07/11
- [Qemu-devel] [RISU PATCH v3 18/18] x86.risu: add AVX2 instructions, Jan Bobek, 2019/07/11
- Re: [Qemu-devel] [RISU PATCH v3 18/18] x86.risu: add AVX2 instructions,
Richard Henderson <=
- Re: [Qemu-devel] [RISU PATCH v3 00/18] Support for generating x86 SIMD test images, Alex Bennée, 2019/07/12