From patchwork Tue Jun 19 01:42:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Roth X-Patchwork-Id: 931304 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=linux.vnet.ibm.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="vNvlZUGb"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 418skL5gMbz9s1R for ; Tue, 19 Jun 2018 12:44:42 +1000 (AEST) Received: from localhost ([::1]:38728 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fV6dM-0005OM-4r for incoming@patchwork.ozlabs.org; Mon, 18 Jun 2018 22:44:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46313) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fV5ia-0002Cn-E1 for qemu-devel@nongnu.org; Mon, 18 Jun 2018 21:46:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fV5iZ-0000DR-Gd for qemu-devel@nongnu.org; Mon, 18 Jun 2018 21:46:00 -0400 Received: from mail-oi0-x232.google.com ([2607:f8b0:4003:c06::232]:42969) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fV5iZ-0000DI-AZ; Mon, 18 Jun 2018 21:45:59 -0400 Received: by mail-oi0-x232.google.com with SMTP id k190-v6so16695361oib.9; Mon, 18 Jun 2018 18:45:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=Mlm6jOQJGA/cT1wNao1VFIsToR/c28rmbfNa3oiSO0o=; b=vNvlZUGbTlhpfcDHTjKpCFP1SnOCsdv4JCBAIhCGimAGzFBRpNKzM0LDGZZJjXGjh6 H9dimURXxZvwH9tBt02e9/F0HLLK8tBBUpsFUKAiFIFpeIuCa65gtAUP69TlmwKq7mgA Peyc/l1cge+CoQlAsZ/y0YW0inZ1NQZg87DEO/WCXqznWJuVYNgFTCl5dxz0bm5pbEdy 64S/isGMX3sWfOWXtscXDX1/aBDzqcqyfyVgRHEEJJJoc1XtD3bOM+FddO4roU8ya7f2 yT+EnpVkbYTKeur0ctCB+U+UD6RKD2i+vyQ7KpwTqgGZYt/HUhXkeSYN2RSHYMUSLPPm F/mQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=Mlm6jOQJGA/cT1wNao1VFIsToR/c28rmbfNa3oiSO0o=; b=MM0vSEkOX/zMbnv2pusa54oj4oSKdt63aDzfGOXy5pkqE0w0WC6oorsAqwmQfSnpuA 9NLN+VLN36YEmtUtg/zPU/EbZJn1rTylEDY2ge+LGvE7R9XfZxu6JxRTj4mhVF+HZQzK Qg3Jw909CLuSWl0+IMYBIGW14aKs1bHUFomKzl7YNIsVJ6WKFP71jXkEGp0PuY5fZZfE 84y2Z4rf2X1Ac5TPN6mwyaMBteWhaDdWZ0iebmlKnBzJJGBE4XYPcWCU7Ph7BaZZh5f+ 4UG/qr3rV2XTcY1U1KC+x9gB0qToE4uGc0LjzDv30H5G7bHb2iL/4GW9LtkDRPkgun7L p5jw== X-Gm-Message-State: APt69E1D4CnZT9KdgVv6ywcFFLyq0/0L57rK7QcyKnfkClTWsyr6omXp Pn4yhf2GZ4ROjfIyIjl1nYGev0g1 X-Google-Smtp-Source: ADUXVKIJe5A3nI5xMcUotjE2t4rJtT0cY5UDUr1PK1vj9ZmbBy2gpIJZ+l/HbCtRrWvMy3QWTYeLwg== X-Received: by 2002:aca:cec4:: with SMTP id e187-v6mr7959942oig.225.1529372758223; Mon, 18 Jun 2018 18:45:58 -0700 (PDT) Received: from localhost (76-251-165-188.lightspeed.austtx.sbcglobal.net. [76.251.165.188]) by smtp.gmail.com with ESMTPSA id f53-v6sm11180897otd.80.2018.06.18.18.45.56 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Jun 2018 18:45:57 -0700 (PDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Mon, 18 Jun 2018 20:42:17 -0500 Message-Id: <20180619014319.28272-52-mdroth@linux.vnet.ibm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180619014319.28272-1-mdroth@linux.vnet.ibm.com> References: <20180619014319.28272-1-mdroth@linux.vnet.ibm.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4003:c06::232 Subject: [Qemu-devel] [PATCH 051/113] target/i386: Fix andn instruction X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Paolo Bonzini , qemu-stable@nongnu.org, Alexandro Sanchez Bach Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Alexandro Sanchez Bach In commit 7073fbada733c8d10992f00772c9b9299d740e9b, the `andn` instruction was implemented via `tcg_gen_andc` but passes the operands in the wrong order: - X86 defines `andn dest,src1,src2` as: dest = ~src1 & src2 - TCG defines `andc dest,src1,src2` as: dest = src1 & ~src2 The following simple test shows the issue: #include #include int main(void) { uint32_t ret = 0; __asm ( "mov $0xFF00, %%ecx\n" "mov $0x0F0F, %%eax\n" "andn %%ecx, %%eax, %%ecx\n" "mov %%ecx, %0\n" : "=r" (ret)); printf("%08X\n", ret); return 0; } This patch fixes the problem by simply swapping the order of the two last arguments in `tcg_gen_andc_tl`. Reported-by: Alexandro Sanchez Bach Signed-off-by: Alexandro Sanchez Bach Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini (cherry picked from commit 5cd10051c2e02b7a86eae49919d6c65a87dbea46) Signed-off-by: Michael Roth --- target/i386/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/i386/translate.c b/target/i386/translate.c index ed5b69d6af..b667753f46 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -3803,7 +3803,7 @@ static void gen_sse(CPUX86State *env, DisasContext *s, int b, } ot = mo_64_32(s->dflag); gen_ldst_modrm(env, s, modrm, ot, OR_TMP0, 0); - tcg_gen_andc_tl(cpu_T0, cpu_regs[s->vex_v], cpu_T0); + tcg_gen_andc_tl(cpu_T0, cpu_T0, cpu_regs[s->vex_v]); gen_op_mov_reg_v(ot, reg, cpu_T0); gen_op_update1_cc(); set_cc_op(s, CC_OP_LOGICB + ot);