/qemu/tests/tcg/i386/ |
H A D | test-avx.c | cf5ec6641ed456e2748b211b7bbf5103bfc93098 Wed Oct 19 11:22:06 UTC 2022 Paolo Bonzini <pbonzini@redhat.com> target/i386: implement F16C instructions
F16C only consists of two instructions, which are a bit peculiar nevertheless.
First, they access only the low half of an YMM or XMM register for the packed-half operand; the exact size still depends on the VEX.L flag. This is similar to the existing avx_movx flag, but not exactly because avx_movx is hardcoded to affect operand 2. To this end I added a "ph" format name; it's possible to reuse this approach for the VPMOVSX and VPMOVZX instructions, though that would also require adding two more formats for the low-quarter and low-eighth of an operand.
Second, VCVTPS2PH is somewhat weird because it *stores* the result of the instruction into memory rather than loading it.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
H A D | test-avx.py | cf5ec6641ed456e2748b211b7bbf5103bfc93098 Wed Oct 19 11:22:06 UTC 2022 Paolo Bonzini <pbonzini@redhat.com> target/i386: implement F16C instructions
F16C only consists of two instructions, which are a bit peculiar nevertheless.
First, they access only the low half of an YMM or XMM register for the packed-half operand; the exact size still depends on the VEX.L flag. This is similar to the existing avx_movx flag, but not exactly because avx_movx is hardcoded to affect operand 2. To this end I added a "ph" format name; it's possible to reuse this approach for the VPMOVSX and VPMOVZX instructions, though that would also require adding two more formats for the low-quarter and low-eighth of an operand.
Second, VCVTPS2PH is somewhat weird because it *stores* the result of the instruction into memory rather than loading it.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
/qemu/target/i386/tcg/ |
H A D | decode-new.h | cf5ec6641ed456e2748b211b7bbf5103bfc93098 Wed Oct 19 11:22:06 UTC 2022 Paolo Bonzini <pbonzini@redhat.com> target/i386: implement F16C instructions
F16C only consists of two instructions, which are a bit peculiar nevertheless.
First, they access only the low half of an YMM or XMM register for the packed-half operand; the exact size still depends on the VEX.L flag. This is similar to the existing avx_movx flag, but not exactly because avx_movx is hardcoded to affect operand 2. To this end I added a "ph" format name; it's possible to reuse this approach for the VPMOVSX and VPMOVZX instructions, though that would also require adding two more formats for the low-quarter and low-eighth of an operand.
Second, VCVTPS2PH is somewhat weird because it *stores* the result of the instruction into memory rather than loading it.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
H A D | decode-new.c.inc | cf5ec6641ed456e2748b211b7bbf5103bfc93098 Wed Oct 19 11:22:06 UTC 2022 Paolo Bonzini <pbonzini@redhat.com> target/i386: implement F16C instructions
F16C only consists of two instructions, which are a bit peculiar nevertheless.
First, they access only the low half of an YMM or XMM register for the packed-half operand; the exact size still depends on the VEX.L flag. This is similar to the existing avx_movx flag, but not exactly because avx_movx is hardcoded to affect operand 2. To this end I added a "ph" format name; it's possible to reuse this approach for the VPMOVSX and VPMOVZX instructions, though that would also require adding two more formats for the low-quarter and low-eighth of an operand.
Second, VCVTPS2PH is somewhat weird because it *stores* the result of the instruction into memory rather than loading it.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
H A D | emit.c.inc | cf5ec6641ed456e2748b211b7bbf5103bfc93098 Wed Oct 19 11:22:06 UTC 2022 Paolo Bonzini <pbonzini@redhat.com> target/i386: implement F16C instructions
F16C only consists of two instructions, which are a bit peculiar nevertheless.
First, they access only the low half of an YMM or XMM register for the packed-half operand; the exact size still depends on the VEX.L flag. This is similar to the existing avx_movx flag, but not exactly because avx_movx is hardcoded to affect operand 2. To this end I added a "ph" format name; it's possible to reuse this approach for the VPMOVSX and VPMOVZX instructions, though that would also require adding two more formats for the low-quarter and low-eighth of an operand.
Second, VCVTPS2PH is somewhat weird because it *stores* the result of the instruction into memory rather than loading it.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
/qemu/target/i386/ |
H A D | ops_sse.h | cf5ec6641ed456e2748b211b7bbf5103bfc93098 Wed Oct 19 11:22:06 UTC 2022 Paolo Bonzini <pbonzini@redhat.com> target/i386: implement F16C instructions
F16C only consists of two instructions, which are a bit peculiar nevertheless.
First, they access only the low half of an YMM or XMM register for the packed-half operand; the exact size still depends on the VEX.L flag. This is similar to the existing avx_movx flag, but not exactly because avx_movx is hardcoded to affect operand 2. To this end I added a "ph" format name; it's possible to reuse this approach for the VPMOVSX and VPMOVZX instructions, though that would also require adding two more formats for the low-quarter and low-eighth of an operand.
Second, VCVTPS2PH is somewhat weird because it *stores* the result of the instruction into memory rather than loading it.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
H A D | cpu.h | cf5ec6641ed456e2748b211b7bbf5103bfc93098 Wed Oct 19 11:22:06 UTC 2022 Paolo Bonzini <pbonzini@redhat.com> target/i386: implement F16C instructions
F16C only consists of two instructions, which are a bit peculiar nevertheless.
First, they access only the low half of an YMM or XMM register for the packed-half operand; the exact size still depends on the VEX.L flag. This is similar to the existing avx_movx flag, but not exactly because avx_movx is hardcoded to affect operand 2. To this end I added a "ph" format name; it's possible to reuse this approach for the VPMOVSX and VPMOVZX instructions, though that would also require adding two more formats for the low-quarter and low-eighth of an operand.
Second, VCVTPS2PH is somewhat weird because it *stores* the result of the instruction into memory rather than loading it.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
H A D | cpu.c | cf5ec6641ed456e2748b211b7bbf5103bfc93098 Wed Oct 19 11:22:06 UTC 2022 Paolo Bonzini <pbonzini@redhat.com> target/i386: implement F16C instructions
F16C only consists of two instructions, which are a bit peculiar nevertheless.
First, they access only the low half of an YMM or XMM register for the packed-half operand; the exact size still depends on the VEX.L flag. This is similar to the existing avx_movx flag, but not exactly because avx_movx is hardcoded to affect operand 2. To this end I added a "ph" format name; it's possible to reuse this approach for the VPMOVSX and VPMOVZX instructions, though that would also require adding two more formats for the low-quarter and low-eighth of an operand.
Second, VCVTPS2PH is somewhat weird because it *stores* the result of the instruction into memory rather than loading it.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|