]> git.proxmox.com Git - mirror_qemu.git/commit
tcg/i386: Use MOVDQA for TCG_TYPE_V128 load/store
authorRichard Henderson <richard.henderson@linaro.org>
Sat, 18 May 2019 18:37:02 +0000 (11:37 -0700)
committerRichard Henderson <richard.henderson@linaro.org>
Wed, 22 May 2019 19:09:43 +0000 (15:09 -0400)
commit11e2bfef799024be4a08fcf6797fe0b22fb16b58
tree0a5cb2aec8d91f6e6cf68ce2b4962e831ef57314
parent9e27f58b9902834dffc0d66d9eb62f78d9c2a632
tcg/i386: Use MOVDQA for TCG_TYPE_V128 load/store

This instruction raises #GP, aka SIGSEGV, if the effective address
is not aligned to 16-bytes.

We have assertions in tcg-op-gvec.c that the offset from ENV is
aligned, for vector types <= V128.  But the offset itself does not
validate that the final pointer is aligned -- one must also remember
to use the QEMU_ALIGNED() attribute on the vector member within ENV.

PowerPC Altivec has vector load/store instructions that silently
discard the low 4 bits of the address, making alignment mistakes
difficult to discover.  Aid that by making the most popular host
visibly signal the error.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
tcg/i386/tcg-target.inc.c