s390x/tcg: Implement VECTOR EXCLUSIVE OR
authorDavid Hildenbrand <david@redhat.com>
Thu, 11 Apr 2019 08:07:35 +0000 (10:07 +0200)
committerDavid Hildenbrand <david@redhat.com>
Fri, 17 May 2019 08:54:13 +0000 (10:54 +0200)
Easy, we can reuse an existing gvec helper.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: David Hildenbrand <david@redhat.com>
target/s390x/insn-data.def
target/s390x/translate_vx.inc.c

index a355b7f62f1e31df762015ca3061777713966aee..b8400c191a7f80b820291ea17b6d6e9a93d4bc07 100644 (file)
     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 */
index 2f13d6fa9f43f80a0d3c9d07d7ee5d3a4c2f93fe..0935857eff0912ce5667c2b817b1fc8b3b21a43f 100644 (file)
@@ -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;
+}