]> git.proxmox.com Git - mirror_qemu.git/commitdiff
s390x/tcg: Implement VECTOR AND (WITH COMPLEMENT)
authorDavid Hildenbrand <david@redhat.com>
Sun, 17 Mar 2019 23:04:51 +0000 (00:04 +0100)
committerDavid Hildenbrand <david@redhat.com>
Fri, 17 May 2019 08:54:13 +0000 (10:54 +0200)
Easy, as we can reuse existing gvec helpers.

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 a531b21908ac3bef1815c7601aeeafe81c21475e..456d5597ca739716e6739bf2dc2997cb9a5189a4 100644 (file)
     F(0xe7bb, VAC,     VRR_d, V,   0, 0, 0, 0, vac, 0, IF_VEC)
 /* VECTOR ADD WITH CARRY COMPUTE CARRY */
     F(0xe7b9, VACCC,   VRR_d, V,   0, 0, 0, 0, vaccc, 0, IF_VEC)
+/* VECTOR AND */
+    F(0xe768, VN,      VRR_c, V,   0, 0, 0, 0, vn, 0, IF_VEC)
+/* VECTOR AND WITH COMPLEMENT */
+    F(0xe769, VNC,     VRR_c, V,   0, 0, 0, 0, vnc, 0, IF_VEC)
 
 #ifndef CONFIG_USER_ONLY
 /* COMPARE AND SWAP AND PURGE */
index 46b3fe02928951b5251e522ce1fc75b9db803a41..8b4bdb2d21ee3cadfdc749bdb4ba6320e69cdd2a 100644 (file)
@@ -1178,3 +1178,17 @@ static DisasJumpType op_vaccc(DisasContext *s, DisasOps *o)
                       get_field(s->fields, v4));
     return DISAS_NEXT;
 }
+
+static DisasJumpType op_vn(DisasContext *s, DisasOps *o)
+{
+    gen_gvec_fn_3(and, ES_8, get_field(s->fields, v1), get_field(s->fields, v2),
+                  get_field(s->fields, v3));
+    return DISAS_NEXT;
+}
+
+static DisasJumpType op_vnc(DisasContext *s, DisasOps *o)
+{
+    gen_gvec_fn_3(andc, ES_8, get_field(s->fields, v1),
+                  get_field(s->fields, v2), get_field(s->fields, v3));
+    return DISAS_NEXT;
+}