From patchwork Tue Oct 9 14:59:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 148500 Delivered-To: patch@linaro.org Received: by 2002:a2e:8595:0:0:0:0:0 with SMTP id b21-v6csp5013253lji; Tue, 9 Oct 2018 08:03:05 -0700 (PDT) X-Google-Smtp-Source: ACcGV60l+J0F9O7Cn55XjsLR7q4H+0d14ms0Tzu00DGyBy5xqWMalw9DYyysHjnLaID44mYj9nSa X-Received: by 2002:aed:23d8:: with SMTP id k24-v6mr17649088qtc.39.1539097385526; Tue, 09 Oct 2018 08:03:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539097385; cv=none; d=google.com; s=arc-20160816; b=jqoPU2tAg2Q8sOHquO7ke1cEyurgGktGZjuyjLnO7was6Kfkgz58pFcEJi5iPh/eV4 EGTMQl00xng6eQtiviJueDD2CMR+q8hGqb/jvH00gYmYxcV3iu12gMXKeUHDY0bL382p PFgQuPSSGXglTakRU+dECQL0f/DO7YkKbbcbtY2MnU/TjQ/26O9MjB0Po29IsQT8x+0S rR3bKIZBqssypCqczzslX5izgxHiA0mcx5hmPAOUo4Rs5TQjf6SpnKnEeLnif5yezMsc QOecpkeT9928CAUJiQoLDXJh/U8fEPPkq+Dhh6cjiMgalSrVmqJH0oFyde6t6fqcIMtJ xG+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=MGls24ijn1HMK3OugvqQdnCxYboPq21KAfwEyERKbLQ=; b=eRh2SZTzZVyzkk6zttYmH5UyzGMzesCKB9u6i5VyWQVX48lk+pJ6u+CGF8F0LcIWyk 2+e4JrMoIB6CQXz/n3dAVgzgZmfwm42YAiNSEvNJ007/TeFIx53mceZSyUwUQqrszd4b IfQqN0to7oySv8fUjhkFIq0oAlCRyjoQ6ESQKqL6JFZUHT49IaPA9+lpH14srJJCzw2k mJ0O/Pmc0L3bSTVf0WMyjK2VIrxJuR+ZRn1RiCzuRx0v9NQt64B4vn0IGVq/uSaCtCo/ Beiqe3Gag558MZX4OoQTSUCd7w0UzjFbEYs2UJwMqVyy+anMO7zkcxvpOYLTG+ksyfXI ke0w== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=QRm5lITl; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id 9si3508974qvu.207.2018.10.09.08.03.05 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 09 Oct 2018 08:03:05 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=QRm5lITl; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:52278 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g9tXN-00018i-2a for patch@linaro.org; Tue, 09 Oct 2018 11:03:05 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58177) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g9tUK-0007Qr-Mt for qemu-devel@nongnu.org; Tue, 09 Oct 2018 11:00:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g9tU2-0006OG-85 for qemu-devel@nongnu.org; Tue, 09 Oct 2018 10:59:54 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]:35799) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1g9tU1-0006Mq-Ql for qemu-devel@nongnu.org; Tue, 09 Oct 2018 10:59:38 -0400 Received: by mail-wm1-x332.google.com with SMTP id e187-v6so2374382wmf.0 for ; Tue, 09 Oct 2018 07:59:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MGls24ijn1HMK3OugvqQdnCxYboPq21KAfwEyERKbLQ=; b=QRm5lITlDeTgzN2qSNNskGaYhvMPRXXE8Kgkf3MyL/EdttGRSUoKPDUtkX9Et5Hha1 1J1QdO7VIwJDCfkz7bgjKY7iQNALRPuYchUam+BGwgGGPyv4nYS839Dl91bImrv1va0o I9ECkwwEkcIB0Y9vI46ofbf3jKELH5QNB5tFc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MGls24ijn1HMK3OugvqQdnCxYboPq21KAfwEyERKbLQ=; b=Fz7vGMxiulIDG2pDEykPZB8dxs53iaWvPFqJ0l5MFsb21QdxRRyRcDxP9XjQmmrqfo UwZLYk8wgUQqE1l6w/eo+XKHPI5VjqXpqOR+7CQTCYf0VFT89l2BxU2ZEXYu+cr53XGl slQrcQud3fdxUvuxRtB19kBA1dDkr+VJc6oH/yQvfLsS0YU6EHeS/bjLCJUmN4gU0Mkj 2BbxMz4pG8MijjZT5t0FznOFzvetYzTRzcuH7em7BjIxOSIIOXJ/A6FNNz7VExZy3YHp p3bc66oP7fxggUdO7ciC4XO5AV4qiMXqoxSlhVbb1/zjS96Meqk6sk5QGUsas783o5ge U+AA== X-Gm-Message-State: ABuFfohf3f/N3FzNJxMLR4qtu9axQDMTqoO6DnLpiGDPFT94UYxeT4gr MSLNF9D0ndy2s3NtBl2b9yu90Q== X-Received: by 2002:a1c:af07:: with SMTP id y7-v6mr2352586wme.33.1539097176241; Tue, 09 Oct 2018 07:59:36 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id 20-v6sm18601165wml.10.2018.10.09.07.59.34 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 09 Oct 2018 07:59:34 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 1E8553E04CC; Tue, 9 Oct 2018 15:59:34 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Date: Tue, 9 Oct 2018 15:59:32 +0100 Message-Id: <20181009145933.18925-3-alex.bennee@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181009145933.18925-1-alex.bennee@linaro.org> References: <20181009145933.18925-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::332 Subject: [Qemu-devel] [PATCH v2 2/3] tests/tcg: make test-i386 test program compile on clang 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: famz@redhat.com, Eduardo Habkost , f4bug@amsat.org, Theodore Dubois , Paolo Bonzini , =?utf-8?q?Alex_Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Theodore Dubois Clang's assembler is slightly incompatible with GCC's assembler, which caused the program to not compile on Clang for these reasons: - The "q" constraint was specified for an argument to the set instruction, which didn't work because Clang chose the esi register, which has no 8-bit form on i386. - Clang doesn't support size suffixes on the loop instructions. https://bugs.llvm.org/show_bug.cgi?id=33741 - Clang requires a size suffix on the fist instruction. - Clang doesn't support specifying segment prefixes before the instruction, and requires specifying them on the address. - The arguments to the bound instruction are in the wrong order on Clang. https://bugs.llvm.org/show_bug.cgi?id=27653 Signed-off-by: Theodore Dubois [AJB: tweaked title, add bugref] Signed-off-by: Alex Bennée --- tests/tcg/i386/test-i386.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) -- 2.17.1 diff --git a/tests/tcg/i386/test-i386.c b/tests/tcg/i386/test-i386.c index a29b41e764..c5f67000e4 100644 --- a/tests/tcg/i386/test-i386.c +++ b/tests/tcg/i386/test-i386.c @@ -368,7 +368,7 @@ void test_lea(void) asm("movl $0, %0\n\t"\ "cmpl %2, %1\n\t"\ "set" JCC " %b0\n\t"\ - : "=r" (res)\ + : "=q" (res)\ : "r" (v1), "r" (v2));\ printf("%-10s %d\n", "set" JCC, res);\ if (TEST_CMOV) {\ @@ -490,15 +490,23 @@ void test_loop(void) #if !defined(__x86_64__) TEST_LOOP("jcxz"); +#if !defined(__clang__) TEST_LOOP("loopw"); TEST_LOOP("loopzw"); TEST_LOOP("loopnzw"); +#endif #endif TEST_LOOP("jecxz"); +#if !defined(__clang__) TEST_LOOP("loopl"); TEST_LOOP("loopzl"); TEST_LOOP("loopnzl"); +#else + TEST_LOOP("loop"); + TEST_LOOP("loopz"); + TEST_LOOP("loopnz"); +#endif } #undef CC_MASK @@ -866,7 +874,7 @@ void test_fcvt(double a) uint16_t val16; val16 = (fpuc & ~0x0c00) | (i << 10); asm volatile ("fldcw %0" : : "m" (val16)); - asm volatile ("fist %0" : "=m" (wa) : "t" (a)); + asm volatile ("fists %0" : "=m" (wa) : "t" (a)); asm volatile ("fistl %0" : "=m" (ia) : "t" (a)); asm volatile ("fistpll %0" : "=m" (lla) : "t" (a) : "st"); asm volatile ("frndint ; fstl %0" : "=m" (ra) : "t" (a)); @@ -1317,12 +1325,12 @@ void test_segs(void) seg_data1[1] = 0xaa; seg_data2[1] = 0x55; - asm volatile ("fs movzbl 0x1, %0" : "=r" (res)); + asm volatile ("movzbl %%fs:0x1, %0" : "=r" (res)); printf("FS[1] = %02x\n", res); asm volatile ("pushl %%gs\n" "movl %1, %%gs\n" - "gs movzbl 0x1, %0\n" + "movzbl %%gs:0x1, %0\n" "popl %%gs\n" : "=r" (res) : "r" (MK_SEL(2))); @@ -1763,7 +1771,11 @@ void test_exceptions(void) /* bound exception */ tab[0] = 1; tab[1] = 10; +#if defined(__clang__) + asm volatile ("bound %1, %0" : : "r" (11), "m" (tab[0])); +#else asm volatile ("bound %0, %1" : : "r" (11), "m" (tab[0])); +#endif } #endif