diff options
author | Guinevere Larsen <guinevere@redhat.com> | 2025-06-10 11:28:25 -0300 |
---|---|---|
committer | Guinevere Larsen <guinevere@redhat.com> | 2025-07-11 11:55:34 -0300 |
commit | 32be35c9e3159e949edc3d4a957d347f1c7b8dad (patch) | |
tree | 49d446dafff8e6869cda5c6e1b077a787c01da67 /libctf/ctf-open.c | |
parent | 00a2fcd6602be175506116e15706c7bc7bc75a03 (diff) | |
download | binutils-32be35c9e3159e949edc3d4a957d347f1c7b8dad.zip binutils-32be35c9e3159e949edc3d4a957d347f1c7b8dad.tar.gz binutils-32be35c9e3159e949edc3d4a957d347f1c7b8dad.tar.bz2 |
gdb/record: add support to vinsert and vextract instructions
This patch adds support for the following instructions:
* VEXTRACT[F128|I128|PS]
* VINSERT[F128|I128|PS]
* VPEXTR[B|W|D|Q]
And associated test. For some reason, it seems that the extract
instructions deal with the output register as though it was the first
source register, so they use ModRM.r/m and VEX.B, instead of the usual
ModRM.reg and VEX.R. This meant that the opcode collision with
vbroadcastsd wasn't trivial. It can be easily solved by checking the
VEX.map_select field, so soslving it was very easy.
The VPEXTR instructions had several complicated collisions, and notably,
vpextrw to a register works completely different to any other
instruction in the family, so the code is messy, but it should be
correct.
Diffstat (limited to 'libctf/ctf-open.c')
0 files changed, 0 insertions, 0 deletions