summaryrefslogtreecommitdiffstats
path: root/target/s390x/insn-data.def
diff options
context:
space:
mode:
authorDavid Hildenbrand2019-03-07 13:15:21 +0100
committerCornelia Huck2019-03-11 09:31:01 +0100
commit60e9e3f1b0117a3aefd4a8047168f1c20f6c9013 (patch)
treed6e00fd62c6110d65549451b0ec6c3299246e6c7 /target/s390x/insn-data.def
parents390x/tcg: Implement VECTOR LOAD MULTIPLE (diff)
downloadqemu-60e9e3f1b0117a3aefd4a8047168f1c20f6c9013.tar.gz
qemu-60e9e3f1b0117a3aefd4a8047168f1c20f6c9013.tar.xz
qemu-60e9e3f1b0117a3aefd4a8047168f1c20f6c9013.zip
s390x/tcg: Implement VECTOR LOAD TO BLOCK BOUNDARY
Very similar to LOAD COUNT TO BLOCK BOUNDARY, but instead of only calculating, the actual vector is loaded. Use a temporary vector to not modify the real vector on exceptions. Initialize that one to zero, to not leak any data. Provide a fast path if we're loading a full vector. As we don't have gvec ool handlers for single vectors, just calculate the vector address manually. We can reuse the helper later on for VECTOR LOAD WITH LENGTH. In fact, we are going to name it "vll" right from the beginning, because that's a better match. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: David Hildenbrand <david@redhat.com> Message-Id: <20190307121539.12842-15-david@redhat.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Diffstat (limited to 'target/s390x/insn-data.def')
-rw-r--r--target/s390x/insn-data.def2
1 files changed, 2 insertions, 0 deletions
diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def
index fa0f3a9003..ad8df5283c 100644
--- a/target/s390x/insn-data.def
+++ b/target/s390x/insn-data.def
@@ -1002,6 +1002,8 @@
F(0xe704, VLLEZ, VRX, V, la2, 0, 0, 0, vllez, 0, IF_VEC)
/* VECTOR LOAD MULTIPLE */
F(0xe736, VLM, VRS_a, V, la2, 0, 0, 0, vlm, 0, IF_VEC)
+/* VECTOR LOAD TO BLOCK BOUNDARY */
+ F(0xe707, VLBB, VRX, V, la2, 0, 0, 0, vlbb, 0, IF_VEC)
#ifndef CONFIG_USER_ONLY
/* COMPARE AND SWAP AND PURGE */