diff options
author | David Hildenbrand | 2019-04-11 10:07:35 +0200 |
---|---|---|
committer | David Hildenbrand | 2019-05-17 10:54:13 +0200 |
commit | 44951e6b0349d8981c226cd8e12505d4f45835d8 (patch) | |
tree | 8ab115e5518508422619f74339599cf9c679e35f | |
parent | s390x/tcg: Implement VECTOR COUNT TRAILING ZEROS (diff) | |
download | qemu-44951e6b0349d8981c226cd8e12505d4f45835d8.tar.gz qemu-44951e6b0349d8981c226cd8e12505d4f45835d8.tar.xz qemu-44951e6b0349d8981c226cd8e12505d4f45835d8.zip |
s390x/tcg: Implement VECTOR EXCLUSIVE OR
Easy, we can reuse an existing gvec helper.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: David Hildenbrand <david@redhat.com>
-rw-r--r-- | target/s390x/insn-data.def | 2 | ||||
-rw-r--r-- | target/s390x/translate_vx.inc.c | 7 |
2 files changed, 9 insertions, 0 deletions
diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index a355b7f62f..b8400c191a 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -1088,6 +1088,8 @@ F(0xe753, VCLZ, VRR_a, V, 0, 0, 0, 0, vclz, 0, IF_VEC) /* VECTOR COUNT TRAILING ZEROS */ F(0xe752, VCTZ, VRR_a, V, 0, 0, 0, 0, vctz, 0, IF_VEC) +/* VECTOR EXCLUSIVE OR */ + F(0xe76d, VX, VRR_c, V, 0, 0, 0, 0, vx, 0, IF_VEC) #ifndef CONFIG_USER_ONLY /* COMPARE AND SWAP AND PURGE */ diff --git a/target/s390x/translate_vx.inc.c b/target/s390x/translate_vx.inc.c index 2f13d6fa9f..0935857eff 100644 --- a/target/s390x/translate_vx.inc.c +++ b/target/s390x/translate_vx.inc.c @@ -1476,3 +1476,10 @@ static DisasJumpType op_vctz(DisasContext *s, DisasOps *o) gen_gvec_2(get_field(s->fields, v1), get_field(s->fields, v2), &g[es]); return DISAS_NEXT; } + +static DisasJumpType op_vx(DisasContext *s, DisasOps *o) +{ + gen_gvec_fn_3(xor, ES_8, get_field(s->fields, v1), get_field(s->fields, v2), + get_field(s->fields, v3)); + return DISAS_NEXT; +} |