From nobody Sun May 5 16:00:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550615784448517.068317751155; Tue, 19 Feb 2019 14:36:24 -0800 (PST) Received: from localhost ([127.0.0.1]:55969 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gwDzw-00049g-FG for importer@patchew.org; Tue, 19 Feb 2019 17:36:20 -0500 Received: from eggs.gnu.org ([209.51.188.92]:45890) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gwDtw-0000Kl-A8 for qemu-devel@nongnu.org; Tue, 19 Feb 2019 17:30:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gwDts-0002VJ-OX for qemu-devel@nongnu.org; Tue, 19 Feb 2019 17:30:06 -0500 Received: from mail-pl1-x644.google.com ([2607:f8b0:4864:20::644]:42714) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gwDtq-0002Qf-Ts for qemu-devel@nongnu.org; Tue, 19 Feb 2019 17:30:04 -0500 Received: by mail-pl1-x644.google.com with SMTP id s1so11105198plp.9 for ; Tue, 19 Feb 2019 14:29:58 -0800 (PST) Received: from cloudburst.twiddle.net (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id 20sm12530778pfs.182.2019.02.19.14.29.55 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 19 Feb 2019 14:29:55 -0800 (PST) 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; bh=cIgoi5ZJpcl3zdEbaiu1gS68e0aZGSDVr5lAbw6TYaY=; b=kccKPx75yp+bom/DITnf27fcqRp7W+VaVMufEjA8i5djFgftda002uuZf4NLNbQoZQ pyzgiJXvtkdoDC5HxqqGguV9eUIvdlYlqbAeukUVBEZt1SF/A6yyDA9ekq16VSAmmKnt Z5k42+tRave9EQdQ5tzxeNXYtzSNOntkwhyWIoDxbwd9Mf9QgnjFUQvg2J/xqeSjaWZb m15aBdZO98kwQegmVf9P7UPQikzNjc8rBSmVy50UV+3QaGA7os2s8AkKUXj4vVGx5Ka0 jKN5566xiTEo2soB0D/8S5KC5OBgHpP7Jj4OJLvqTDmwWopf6K7sLO5R22r1+27IQrxO dl9Q== 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; bh=cIgoi5ZJpcl3zdEbaiu1gS68e0aZGSDVr5lAbw6TYaY=; b=HSCmcyJi9BmUhiUjCtzkQNGYwwvNgu0kAfiiWWgR9XD2szwRjRD7+SYezl42OZiMsR gG9WhT2eiwZYTembBMNEStnjzARAxg5h4HMhnSdiuJwQLrFkPlv199un4gUHIG6AAgQG 2aVjzdykIdh7NaddL1mEoOAkhZsHsr7Rcf0xLSPxd+98sUiwnn80NosmS0LWlzFqNdIz FczHbYF9K92u/thrVbrYjF4ALYimhg96OYOWz8sm16ziDIEJjGCFLaCUh80BLRgA9ZRU NCgbKFfEhMUDrAj26f7ITDQJssF9nMUketOKc7t0awQJ2uesvf+kTGCHjtti0csacZEL wWsw== X-Gm-Message-State: AHQUAua1V7pWTQjVYs2h/L845PJoqgdYEiLwzJMNBkJsfK594tvtjeB7 e0phPVZLsKnVX2m/9KhEjJVd5A+c2i0= X-Google-Smtp-Source: AHgI3IZFvVPhwmwffuKjHTg11WaH7VPB40EF8Hizx7ATaE5hXHgHFx+saTVgl1QdlS3mI4UTqD2fqA== X-Received: by 2002:a17:902:bc3:: with SMTP id 61mr33496699plr.15.1550615396528; Tue, 19 Feb 2019 14:29:56 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 19 Feb 2019 14:29:48 -0800 Message-Id: <20190219222952.22183-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20190219222952.22183-1-richard.henderson@linaro.org> References: <20190219222952.22183-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::644 Subject: [Qemu-devel] [PATCH v5 1/5] target/arm: Add helpers for FMLAL 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: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Note that float16_to_float32 rightly squashes SNaN to QNaN. But of course pickNaNMulAdd, for ARM, selects SNaNs first. So we have to preserve SNaN long enough for the correct NaN to be selected. Thus float16_to_float32_by_bits. Signed-off-by: Richard Henderson --- target/arm/helper.h | 9 +++ target/arm/vec_helper.c | 148 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 157 insertions(+) diff --git a/target/arm/helper.h b/target/arm/helper.h index 747cb64d29..d363904278 100644 --- a/target/arm/helper.h +++ b/target/arm/helper.h @@ -677,6 +677,15 @@ DEF_HELPER_FLAGS_5(gvec_sqsub_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_5(gvec_sqsub_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32) =20 +DEF_HELPER_FLAGS_5(gvec_fmlal_a32, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_fmlal_a64, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_fmlal_idx_a32, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_5(gvec_fmlal_idx_a64, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, i32) + #ifdef TARGET_AARCH64 #include "helper-a64.h" #include "helper-sve.h" diff --git a/target/arm/vec_helper.c b/target/arm/vec_helper.c index dfc635cf9a..dedef62403 100644 --- a/target/arm/vec_helper.c +++ b/target/arm/vec_helper.c @@ -898,3 +898,151 @@ void HELPER(gvec_sqsub_d)(void *vd, void *vq, void *v= n, } clear_tail(d, oprsz, simd_maxsz(desc)); } + +/* + * Convert float16 to float32, raising no exceptions and + * preserving exceptional values, including SNaN. + * This is effectively an unpack+repack operation. + */ +static float32 float16_to_float32_by_bits(uint32_t f16, bool fz16) +{ + const int f16_bias =3D 15; + const int f32_bias =3D 127; + uint32_t sign =3D extract32(f16, 15, 1); + uint32_t exp =3D extract32(f16, 10, 5); + uint32_t frac =3D extract32(f16, 0, 10); + + if (exp =3D=3D 0x1f) { + /* Inf or NaN */ + exp =3D 0xff; + } else if (exp =3D=3D 0) { + /* Zero or denormal. */ + if (frac !=3D 0) { + if (fz16) { + frac =3D 0; + } else { + /* + * Denormal; these are all normal float32. + * Shift the fraction so that the msb is at bit 11, + * then remove bit 11 as the implicit bit of the + * normalized float32. Note that we still go through + * the shift for normal numbers below, to put the + * float32 fraction at the right place. + */ + int shift =3D clz32(frac) - 21; + frac =3D (frac << shift) & 0x3ff; + exp =3D f32_bias - f16_bias - shift + 1; + } + } + } else { + /* Normal number; adjust the bias. */ + exp +=3D f32_bias - f16_bias; + } + sign <<=3D 31; + exp <<=3D 23; + frac <<=3D 23 - 10; + + return sign | exp | frac; +} + +static uint64_t load4_f16(uint64_t *ptr, int is_q, int is_2) +{ + /* + * Branchless load of u32[0], u64[0], u32[1], or u64[1]. + * Load the 2nd qword iff is_q & is_2. + * Shift to the 2nd dword iff !is_q & is_2. + * For !is_q & !is_2, the upper bits of the result are garbage. + */ + return ptr[is_q & is_2] >> ((is_2 & ~is_q) << 5); +} + +/* + * Note that FMLAL requires oprsz =3D=3D 8 or oprsz =3D=3D 16, + * as there is not yet SVE versions that might use blocking. + */ + +static void do_fmlal(float32 *d, void *vn, void *vm, float_status *fpst, + uint32_t desc, bool fz16) +{ + intptr_t i, oprsz =3D simd_oprsz(desc); + int is_s =3D extract32(desc, SIMD_DATA_SHIFT, 1); + int is_2 =3D extract32(desc, SIMD_DATA_SHIFT + 1, 1); + int is_q =3D oprsz =3D=3D 16; + uint64_t n_4, m_4; + + /* Pre-load all of the f16 data, avoiding overlap issues. */ + n_4 =3D load4_f16(vn, is_q, is_2); + m_4 =3D load4_f16(vm, is_q, is_2); + + /* Negate all inputs for FMLSL at once. */ + if (is_s) { + n_4 ^=3D 0x8000800080008000ull; + } + + for (i =3D 0; i < oprsz / 4; i++) { + float32 n_1 =3D float16_to_float32_by_bits(n_4 >> (i * 16), fz16); + float32 m_1 =3D float16_to_float32_by_bits(m_4 >> (i * 16), fz16); + d[H4(i)] =3D float32_muladd(n_1, m_1, d[H4(i)], 0, fpst); + } + clear_tail(d, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fmlal_a32)(void *vd, void *vn, void *vm, + void *venv, uint32_t desc) +{ + CPUARMState *env =3D venv; + do_fmlal(vd, vn, vm, &env->vfp.standard_fp_status, desc, + get_flush_inputs_to_zero(&env->vfp.fp_status_f16)); +} + +void HELPER(gvec_fmlal_a64)(void *vd, void *vn, void *vm, + void *venv, uint32_t desc) +{ + CPUARMState *env =3D venv; + do_fmlal(vd, vn, vm, &env->vfp.fp_status, desc, + get_flush_inputs_to_zero(&env->vfp.fp_status_f16)); +} + +static void do_fmlal_idx(float32 *d, void *vn, void *vm, float_status *fps= t, + uint32_t desc, bool fz16) +{ + intptr_t i, oprsz =3D simd_oprsz(desc); + int is_s =3D extract32(desc, SIMD_DATA_SHIFT, 1); + int is_2 =3D extract32(desc, SIMD_DATA_SHIFT + 1, 1); + int index =3D extract32(desc, SIMD_DATA_SHIFT + 2, 3); + int is_q =3D oprsz =3D=3D 16; + uint64_t n_4; + float32 m_1; + + /* Pre-load all of the f16 data, avoiding overlap issues. */ + n_4 =3D load4_f16(vn, is_q, is_2); + + /* Negate all inputs for FMLSL at once. */ + if (is_s) { + n_4 ^=3D 0x8000800080008000ull; + } + + m_1 =3D float16_to_float32_by_bits(((float16 *)vm)[H2(index)], fz16); + + for (i =3D 0; i < oprsz / 4; i++) { + float32 n_1 =3D float16_to_float32_by_bits(n_4 >> (i * 16), fz16); + d[H4(i)] =3D float32_muladd(n_1, m_1, d[H4(i)], 0, fpst); + } + clear_tail(d, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fmlal_idx_a32)(void *vd, void *vn, void *vm, + void *venv, uint32_t desc) +{ + CPUARMState *env =3D venv; + do_fmlal_idx(vd, vn, vm, &env->vfp.standard_fp_status, desc, + get_flush_inputs_to_zero(&env->vfp.fp_status_f16)); +} + +void HELPER(gvec_fmlal_idx_a64)(void *vd, void *vn, void *vm, + void *venv, uint32_t desc) +{ + CPUARMState *env =3D venv; + do_fmlal_idx(vd, vn, vm, &env->vfp.fp_status, desc, + get_flush_inputs_to_zero(&env->vfp.fp_status_f16)); +} --=20 2.17.2 From nobody Sun May 5 16:00:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550615539395387.41019115658037; Tue, 19 Feb 2019 14:32:19 -0800 (PST) Received: from localhost ([127.0.0.1]:55911 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gwDvt-0001RE-97 for importer@patchew.org; Tue, 19 Feb 2019 17:32:09 -0500 Received: from eggs.gnu.org ([209.51.188.92]:45891) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gwDtw-0000Km-A9 for qemu-devel@nongnu.org; Tue, 19 Feb 2019 17:30:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gwDts-0002VF-Mh for qemu-devel@nongnu.org; Tue, 19 Feb 2019 17:30:06 -0500 Received: from mail-pf1-x441.google.com ([2607:f8b0:4864:20::441]:35836) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gwDtq-0002SG-St for qemu-devel@nongnu.org; Tue, 19 Feb 2019 17:30:04 -0500 Received: by mail-pf1-x441.google.com with SMTP id j5so6379710pfa.2 for ; Tue, 19 Feb 2019 14:29:59 -0800 (PST) Received: from cloudburst.twiddle.net (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id 20sm12530778pfs.182.2019.02.19.14.29.56 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 19 Feb 2019 14:29:56 -0800 (PST) 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; bh=k2AAuYT6JQ9tFCWrFoFBERUcp77Pfq3Mf+l9IeSYmIk=; b=ew1BMWsLnAkcLRspujpyY6XYSs4EHeIs/lpmuBCmNhOvnaII6nCtz9gyQMf7y1CiX7 vjw2sjn2KLxROC3VpYUJgIh4yDy49QB3mSnIA8NiNWvJNAvZv7itIzhffVju+6e8FbBp tTYww6UdsV1DYYo/9WRehKZTFhHudp93GUvKpSbJyWq3R7AVheYiPlgktsMyYWxDhWJ7 S8CxYIYC3jOicQc77F2KDY4FknHHyc2TWdLocMm64+jY2FYGT+2XphQ6Pmr53afNKGCe HFcE34DbXVVitvmeNgOlB9OnWHk/cKzcT5LlMI6t6YWVKaY4oVQsNL9FvKtCBMnzSDd7 iKIg== 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; bh=k2AAuYT6JQ9tFCWrFoFBERUcp77Pfq3Mf+l9IeSYmIk=; b=QUksYQLnLVgL86b4j1tryvdvnWY+sCT71hvyrNdc39LHetrkbW1LdVnORfgri9QJwW RyIAwKiQSr7+g3L9CWPD+L0/fmEf7cQXcv4qYkUfsAk5oRo3gisoEYANintTPJikLFg4 NApscFdK4PZ9aN1gKBghj9G2lufgaMqX6UPy1PshjzBi7B+VDtznW03PxLzO/EbFkPex kdqi5W4QQkF/LdLDb7flR3WvxPfzswTirmdS0CVcW1JB/T4alng6PRHFZFkjoxSmenPg H1+Na+KEBKOGAFO0NxICeKzrAGgMHwmgGSgJyglhPiJHocoPWC1tyOuMlO1/3P8/Xxuz Pr6Q== X-Gm-Message-State: AHQUAuZSpRPzx5RypC/lLha1AgGRR3BRG+DURqn3Rf6Y0pIqWdgFvGoe yfdIN2hXs7G9mweP2dlAmr7HLSdTt5U= X-Google-Smtp-Source: AHgI3IbmXwpNMjmJ6MQX32OtEQZjbUsBHNgFPCZ6E2LRZ2swqwVNncaYvTuVNQIMwyh+mCmXenoxQA== X-Received: by 2002:a62:9917:: with SMTP id d23mr32631584pfe.88.1550615397737; Tue, 19 Feb 2019 14:29:57 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 19 Feb 2019 14:29:49 -0800 Message-Id: <20190219222952.22183-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20190219222952.22183-1-richard.henderson@linaro.org> References: <20190219222952.22183-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::441 Subject: [Qemu-devel] [PATCH v5 2/5] target/arm: Implement FMLAL and FMLSL for aarch64 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: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu.h | 5 ++++ target/arm/translate-a64.c | 49 +++++++++++++++++++++++++++++++++++++- 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 1eea1a408b..69589573e4 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -3356,6 +3356,11 @@ static inline bool isar_feature_aa64_dp(const ARMISA= Registers *id) return FIELD_EX64(id->id_aa64isar0, ID_AA64ISAR0, DP) !=3D 0; } =20 +static inline bool isar_feature_aa64_fhm(const ARMISARegisters *id) +{ + return FIELD_EX64(id->id_aa64isar0, ID_AA64ISAR0, FHM) !=3D 0; +} + static inline bool isar_feature_aa64_jscvt(const ARMISARegisters *id) { return FIELD_EX64(id->id_aa64isar1, ID_AA64ISAR1, JSCVT) !=3D 0; diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index c56e878787..d3c8eaf089 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -10917,9 +10917,29 @@ static void disas_simd_3same_float(DisasContext *s= , uint32_t insn) if (!fp_access_check(s)) { return; } - handle_3same_float(s, size, elements, fpopcode, rd, rn, rm); return; + + case 0x1d: /* FMLAL */ + case 0x3d: /* FMLSL */ + case 0x59: /* FMLAL2 */ + case 0x79: /* FMLSL2 */ + if (size & 1 || !dc_isar_feature(aa64_fhm, s)) { + unallocated_encoding(s); + return; + } + if (fp_access_check(s)) { + int is_s =3D extract32(insn, 23, 1); + int is_2 =3D extract32(insn, 29, 1); + int data =3D (is_2 << 1) | is_s; + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, rd), + vec_full_reg_offset(s, rn), + vec_full_reg_offset(s, rm), cpu_env, + is_q ? 16 : 8, vec_full_reg_size(s), + data, gen_helper_gvec_fmlal_a64); + } + return; + default: unallocated_encoding(s); return; @@ -12739,6 +12759,17 @@ static void disas_simd_indexed(DisasContext *s, ui= nt32_t insn) } is_fp =3D 2; break; + case 0x00: /* FMLAL */ + case 0x04: /* FMLSL */ + case 0x18: /* FMLAL2 */ + case 0x1c: /* FMLSL2 */ + if (is_scalar || size !=3D MO_32 || !dc_isar_feature(aa64_fhm, s))= { + unallocated_encoding(s); + return; + } + size =3D MO_16; + /* is_fp, but we pass cpu_env not fp_status. */ + break; default: unallocated_encoding(s); return; @@ -12849,6 +12880,22 @@ static void disas_simd_indexed(DisasContext *s, ui= nt32_t insn) tcg_temp_free_ptr(fpst); } return; + + case 0x00: /* FMLAL */ + case 0x04: /* FMLSL */ + case 0x18: /* FMLAL2 */ + case 0x1c: /* FMLSL2 */ + { + int is_s =3D extract32(opcode, 2, 1); + int is_2 =3D u; + int data =3D (index << 2) | (is_2 << 1) | is_s; + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, rd), + vec_full_reg_offset(s, rn), + vec_full_reg_offset(s, rm), cpu_env, + is_q ? 16 : 8, vec_full_reg_size(s), + data, gen_helper_gvec_fmlal_idx_a64); + } + return; } =20 if (size =3D=3D 3) { --=20 2.17.2 From nobody Sun May 5 16:00:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 15506155297840.5280868103075136; Tue, 19 Feb 2019 14:32:09 -0800 (PST) Received: from localhost ([127.0.0.1]:55909 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gwDvn-0001PC-J5 for importer@patchew.org; Tue, 19 Feb 2019 17:32:03 -0500 Received: from eggs.gnu.org ([209.51.188.92]:45871) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gwDtt-0000IX-91 for qemu-devel@nongnu.org; Tue, 19 Feb 2019 17:30:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gwDts-0002Uc-09 for qemu-devel@nongnu.org; Tue, 19 Feb 2019 17:30:05 -0500 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]:44418) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gwDtq-0002Sd-Oq for qemu-devel@nongnu.org; Tue, 19 Feb 2019 17:30:02 -0500 Received: by mail-pl1-x62d.google.com with SMTP id c4so6082226pls.11 for ; Tue, 19 Feb 2019 14:30:00 -0800 (PST) Received: from cloudburst.twiddle.net (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id 20sm12530778pfs.182.2019.02.19.14.29.57 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 19 Feb 2019 14:29:58 -0800 (PST) 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; bh=fb2qKxg9wL3pyEXErnYYFvchv2HywMiDhW3awzPq/x0=; b=QELw8aS1zwW5GRo7BWQycshshFJI5swkpUZxo0uxAxYa18bKrq0R2SSjPtjsz5JRFh Exaq/7jKcxiCY+nIfRNyyF7b7qZ5Sv3K9D5HL1mE+w/7vFaEPFNj4KvLRv6sYeE0FTH1 nbbTynuPGAlHDSVjLf+tFug3EQi4kXcvKVBolHnsdvCz2omKqei8scqZcCdIzLwL1dUj irm2sU+VsJs2kZdpd5C4Ct283U5nJjMMw12UUlyDICssRvlIyxCIYAkfpKy0A+V5NXGz PdXoV7cE51dfwsrkAwWUmYtFkOftyi2/Jc41ZY/BzfY92pL3J+4XUG7eGZHu2+4I3IKk tQiA== 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; bh=fb2qKxg9wL3pyEXErnYYFvchv2HywMiDhW3awzPq/x0=; b=HnPFEAkYJWKK41P16AHmBXbGbe8DYeRQBwelZH8ufXel3fmHIsB48qMZ7gS4IEn9kd MF6OwGaW1B8tZNsyviJdwiDlUNCvigGJsSIBTUpb+IeQ3wYgLoHzeXvju8kBDXDga4I6 l5tdxj7v4nhA8QusQV7U/kOrr465ihhp2vzrGyBSLIRQ5ctcPilCY6oGVTDX1LxrXz2m mdRciuBE7L5GxlPYKwQT7zafKpVpclRkIxjEmeIpjpZ1w0r3HIJR3z4Y4luPpMJ0GvL+ nvEazyXTbpaSZKakWWvKyP3zODo0n8B2cKYbSqOtlpORl4REIuYOvL8S/zKMXgSHqe1W gMmg== X-Gm-Message-State: AHQUAuZDFf3P7rijtX9vCmDjzadZU9D3FtFjj3Vfh7C0I4LNjtpwRmpC rRal/fuYlJ7EZ70ucRQbzkB/63jm7wY= X-Google-Smtp-Source: AHgI3IYe/81LjfvgAVJHkOE2ilAPpjBo2npHISNzeCdsic/GwyyfJLN16EZAPcyHncglf7xKMvsqlA== X-Received: by 2002:a17:902:e00d:: with SMTP id ca13mr6764152plb.206.1550615399100; Tue, 19 Feb 2019 14:29:59 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 19 Feb 2019 14:29:50 -0800 Message-Id: <20190219222952.22183-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20190219222952.22183-1-richard.henderson@linaro.org> References: <20190219222952.22183-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::62d Subject: [Qemu-devel] [PATCH v5 3/5] target/arm: Implement VFMAL and VFMSL for aarch32 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: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu.h | 5 ++ target/arm/translate.c | 129 ++++++++++++++++++++++++++++++----------- 2 files changed, 101 insertions(+), 33 deletions(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 69589573e4..9cf439fb8d 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -3283,6 +3283,11 @@ static inline bool isar_feature_aa32_dp(const ARMISA= Registers *id) return FIELD_EX32(id->id_isar6, ID_ISAR6, DP) !=3D 0; } =20 +static inline bool isar_feature_aa32_fhm(const ARMISARegisters *id) +{ + return FIELD_EX32(id->id_isar6, ID_ISAR6, FHM) !=3D 0; +} + static inline bool isar_feature_aa32_fp16_arith(const ARMISARegisters *id) { /* diff --git a/target/arm/translate.c b/target/arm/translate.c index c1175798ac..86ae2b314c 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -8372,15 +8372,9 @@ static int disas_neon_insn_3same_ext(DisasContext *s= , uint32_t insn) gen_helper_gvec_3_ptr *fn_gvec_ptr =3D NULL; int rd, rn, rm, opr_sz; int data =3D 0; - bool q; - - q =3D extract32(insn, 6, 1); - VFP_DREG_D(rd, insn); - VFP_DREG_N(rn, insn); - VFP_DREG_M(rm, insn); - if ((rd | rn | rm) & q) { - return 1; - } + int off_rn, off_rm; + bool is_long =3D false, q =3D extract32(insn, 6, 1); + bool ptr_is_env =3D false; =20 if ((insn & 0xfe200f10) =3D=3D 0xfc200800) { /* VCMLA -- 1111 110R R.1S .... .... 1000 ...0 .... */ @@ -8407,10 +8401,39 @@ static int disas_neon_insn_3same_ext(DisasContext *= s, uint32_t insn) return 1; } fn_gvec =3D u ? gen_helper_gvec_udot_b : gen_helper_gvec_sdot_b; + } else if ((insn & 0xff300f10) =3D=3D 0xfc200810) { + /* VFM[AS]L -- 1111 1100 S.10 .... .... 1000 .Q.1 .... */ + int is_s =3D extract32(insn, 23, 1); + if (!dc_isar_feature(aa32_fhm, s)) { + return 1; + } + is_long =3D true; + data =3D is_s; /* is_2 =3D=3D 0 */ + fn_gvec_ptr =3D gen_helper_gvec_fmlal_a32; + ptr_is_env =3D true; } else { return 1; } =20 + VFP_DREG_D(rd, insn); + if (rd & q) { + return 1; + } + if (q || !is_long) { + VFP_DREG_N(rn, insn); + VFP_DREG_M(rm, insn); + if ((rn | rm) & q & !is_long) { + return 1; + } + off_rn =3D vfp_reg_offset(1, rn); + off_rm =3D vfp_reg_offset(1, rm); + } else { + rn =3D VFP_SREG_N(insn); + rm =3D VFP_SREG_M(insn); + off_rn =3D vfp_reg_offset(0, rn); + off_rm =3D vfp_reg_offset(0, rm); + } + if (s->fp_excp_el) { gen_exception_insn(s, 4, EXCP_UDEF, syn_simd_access_trap(1, 0xe, false), s->fp_excp= _el); @@ -8422,16 +8445,19 @@ static int disas_neon_insn_3same_ext(DisasContext *= s, uint32_t insn) =20 opr_sz =3D (1 + q) * 8; if (fn_gvec_ptr) { - TCGv_ptr fpst =3D get_fpstatus_ptr(1); - tcg_gen_gvec_3_ptr(vfp_reg_offset(1, rd), - vfp_reg_offset(1, rn), - vfp_reg_offset(1, rm), fpst, + TCGv_ptr ptr; + if (ptr_is_env) { + ptr =3D cpu_env; + } else { + ptr =3D get_fpstatus_ptr(1); + } + tcg_gen_gvec_3_ptr(vfp_reg_offset(1, rd), off_rn, off_rm, ptr, opr_sz, opr_sz, data, fn_gvec_ptr); - tcg_temp_free_ptr(fpst); + if (!ptr_is_env) { + tcg_temp_free_ptr(ptr); + } } else { - tcg_gen_gvec_3_ool(vfp_reg_offset(1, rd), - vfp_reg_offset(1, rn), - vfp_reg_offset(1, rm), + tcg_gen_gvec_3_ool(vfp_reg_offset(1, rd), off_rn, off_rm, opr_sz, opr_sz, data, fn_gvec); } return 0; @@ -8450,14 +8476,9 @@ static int disas_neon_insn_2reg_scalar_ext(DisasCont= ext *s, uint32_t insn) gen_helper_gvec_3 *fn_gvec =3D NULL; gen_helper_gvec_3_ptr *fn_gvec_ptr =3D NULL; int rd, rn, rm, opr_sz, data; - bool q; - - q =3D extract32(insn, 6, 1); - VFP_DREG_D(rd, insn); - VFP_DREG_N(rn, insn); - if ((rd | rn) & q) { - return 1; - } + int off_rn, off_rm; + bool is_long =3D false, q =3D extract32(insn, 6, 1); + bool ptr_is_env =3D false; =20 if ((insn & 0xff000f10) =3D=3D 0xfe000800) { /* VCMLA (indexed) -- 1111 1110 S.RR .... .... 1000 ...0 .... */ @@ -8486,6 +8507,7 @@ static int disas_neon_insn_2reg_scalar_ext(DisasConte= xt *s, uint32_t insn) } else if ((insn & 0xffb00f00) =3D=3D 0xfe200d00) { /* V[US]DOT -- 1111 1110 0.10 .... .... 1101 .Q.U .... */ int u =3D extract32(insn, 4, 1); + if (!dc_isar_feature(aa32_dp, s)) { return 1; } @@ -8493,10 +8515,48 @@ static int disas_neon_insn_2reg_scalar_ext(DisasCon= text *s, uint32_t insn) /* rm is just Vm, and index is M. */ data =3D extract32(insn, 5, 1); /* index */ rm =3D extract32(insn, 0, 4); + } else if ((insn & 0xffa00f10) =3D=3D 0xfe000810) { + /* VFM[AS]L -- 1111 1110 0.0S .... .... 1000 .Q.1 .... */ + int is_s =3D extract32(insn, 20, 1); + int vm20 =3D extract32(insn, 0, 3); + int vm3 =3D extract32(insn, 3, 1); + int m =3D extract32(insn, 5, 1); + int index; + + if (!dc_isar_feature(aa32_fhm, s)) { + return 1; + } + if (q) { + rm =3D vm20; + index =3D m * 2 + vm3; + } else { + rm =3D vm20 * 2 + m; + index =3D vm3; + } + is_long =3D true; + data =3D (index << 2) | is_s; /* is_2 =3D=3D 0 */ + fn_gvec_ptr =3D gen_helper_gvec_fmlal_idx_a32; + ptr_is_env =3D true; } else { return 1; } =20 + VFP_DREG_D(rd, insn); + if (rd & q) { + return 1; + } + if (q || !is_long) { + VFP_DREG_N(rn, insn); + if (rn & q & !is_long) { + return 1; + } + off_rn =3D vfp_reg_offset(1, rn); + off_rm =3D vfp_reg_offset(1, rm); + } else { + rn =3D VFP_SREG_N(insn); + off_rn =3D vfp_reg_offset(0, rn); + off_rm =3D vfp_reg_offset(0, rm); + } if (s->fp_excp_el) { gen_exception_insn(s, 4, EXCP_UDEF, syn_simd_access_trap(1, 0xe, false), s->fp_excp= _el); @@ -8508,16 +8568,19 @@ static int disas_neon_insn_2reg_scalar_ext(DisasCon= text *s, uint32_t insn) =20 opr_sz =3D (1 + q) * 8; if (fn_gvec_ptr) { - TCGv_ptr fpst =3D get_fpstatus_ptr(1); - tcg_gen_gvec_3_ptr(vfp_reg_offset(1, rd), - vfp_reg_offset(1, rn), - vfp_reg_offset(1, rm), fpst, + TCGv_ptr ptr; + if (ptr_is_env) { + ptr =3D cpu_env; + } else { + ptr =3D get_fpstatus_ptr(1); + } + tcg_gen_gvec_3_ptr(vfp_reg_offset(1, rd), off_rn, off_rm, ptr, opr_sz, opr_sz, data, fn_gvec_ptr); - tcg_temp_free_ptr(fpst); + if (!ptr_is_env) { + tcg_temp_free_ptr(ptr); + } } else { - tcg_gen_gvec_3_ool(vfp_reg_offset(1, rd), - vfp_reg_offset(1, rn), - vfp_reg_offset(1, rm), + tcg_gen_gvec_3_ool(vfp_reg_offset(1, rd), off_rn, off_rm, opr_sz, opr_sz, data, fn_gvec); } return 0; --=20 2.17.2 From nobody Sun May 5 16:00:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550615710781508.8665851203117; Tue, 19 Feb 2019 14:35:10 -0800 (PST) Received: from localhost ([127.0.0.1]:55927 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gwDyh-0003Qb-KT for importer@patchew.org; Tue, 19 Feb 2019 17:35:03 -0500 Received: from eggs.gnu.org ([209.51.188.92]:45892) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gwDtw-0000Kn-AB for qemu-devel@nongnu.org; Tue, 19 Feb 2019 17:30:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gwDts-0002VA-MN for qemu-devel@nongnu.org; Tue, 19 Feb 2019 17:30:06 -0500 Received: from mail-pg1-x542.google.com ([2607:f8b0:4864:20::542]:33727) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gwDtq-0002Sx-RJ for qemu-devel@nongnu.org; Tue, 19 Feb 2019 17:30:03 -0500 Received: by mail-pg1-x542.google.com with SMTP id h11so8440055pgl.0 for ; Tue, 19 Feb 2019 14:30:01 -0800 (PST) Received: from cloudburst.twiddle.net (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id 20sm12530778pfs.182.2019.02.19.14.29.59 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 19 Feb 2019 14:29:59 -0800 (PST) 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; bh=bvzvzMexN29euPHlCEf53ekRY2zdxO7LSRID8aQmBUw=; b=uhLEwnN56TqU1DstBB3w50Jw7pyk5kHempDeOJC2tHlfZy218BYo1EFGK9WNc4oNkc Doc3d6PHQjssC6qKurjXZfRX1Cf/NcqutoOhDyML96INEAN8fAP2RqHZYcFqcKKP7Wp2 qJpr5MvSxvoyu5RZUC2CurJ2pLtRVfW1UnX7TNLb9V+LlRB+uBZXaE+t+a43bYqQi8dA SwMGxvv0hdmpvhSB3gh5FNYzZ6Sxi3nFK2xDdJLRqLfJMr1QVjJg5VN1PNy+cuxCanrO XbueOMh3jfvBLCAA3PO+ynQGxgIznvYg6HsC2gUnk6Vs8MhU/sMhgyTplQ0aZRU9DuvJ wsuQ== 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; bh=bvzvzMexN29euPHlCEf53ekRY2zdxO7LSRID8aQmBUw=; b=K+RuX+peLJl7gLDYoOO2neYF2GdiDS16FQe+35MLkML39nZfHt3EiCqsjaS34aAs1r x8dxL4yShWq1IksqlLQUoFI5TXK/53Mw2EV7z0SYJfz567dQSwO7hHKMK2usumrFnJv0 MQrDqwO7x4jPj9yliuNYliFaDoy907a32S1kK/aIZWRVwyc9rTL0qEiGNs7Xwe+P4rAU shqalYrfKGwsIfcgmJcyUnNQgKf/L/ASkHExzi8e9aWxt/5dTZRG91htB1Yl8l3BFp17 T3KOb4W2RfVfQcgbOMV4+JCSmYQVL0ve/4I5UKtZdPns1tf+hsXbeSVUUh21w3z7iuPC t+mw== X-Gm-Message-State: AHQUAuYKiBcSA3H5KC9aLeHL2inIYK31mijHFLk9DX/2TOLX82+4XPTC kqVzCaHLUsSKYdVaabhLCBH8cb7Xh80= X-Google-Smtp-Source: AHgI3IaJUdYtcKdRBsgKbPoNyPcsVNgedR59TalJf5J0axFt6Oyui6RDiBsDX9rrFD45nWJnJctWww== X-Received: by 2002:a62:9683:: with SMTP id s3mr31544807pfk.60.1550615400406; Tue, 19 Feb 2019 14:30:00 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 19 Feb 2019 14:29:51 -0800 Message-Id: <20190219222952.22183-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20190219222952.22183-1-richard.henderson@linaro.org> References: <20190219222952.22183-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::542 Subject: [Qemu-devel] [PATCH v5 4/5] target/arm: Enable ARMv8.2-FHM for -cpu max 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: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu.c | 1 + target/arm/cpu64.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 8ea6569088..b9fa548718 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -2003,6 +2003,7 @@ static void arm_max_initfn(Object *obj) t =3D cpu->isar.id_isar6; t =3D FIELD_DP32(t, ID_ISAR6, JSCVT, 1); t =3D FIELD_DP32(t, ID_ISAR6, DP, 1); + t =3D FIELD_DP32(t, ID_ISAR6, FHM, 1); cpu->isar.id_isar6 =3D t; =20 t =3D cpu->id_mmfr4; diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index 69e4134f79..1b0c427277 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -308,6 +308,7 @@ static void aarch64_max_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64ISAR0, SM3, 1); t =3D FIELD_DP64(t, ID_AA64ISAR0, SM4, 1); t =3D FIELD_DP64(t, ID_AA64ISAR0, DP, 1); + t =3D FIELD_DP64(t, ID_AA64ISAR0, FHM, 1); cpu->isar.id_aa64isar0 =3D t; =20 t =3D cpu->isar.id_aa64isar1; @@ -347,6 +348,7 @@ static void aarch64_max_initfn(Object *obj) u =3D cpu->isar.id_isar6; u =3D FIELD_DP32(u, ID_ISAR6, JSCVT, 1); u =3D FIELD_DP32(u, ID_ISAR6, DP, 1); + u =3D FIELD_DP32(u, ID_ISAR6, FHM, 1); cpu->isar.id_isar6 =3D u; =20 /* --=20 2.17.2 From nobody Sun May 5 16:00:02 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550615636215464.31470678689766; Tue, 19 Feb 2019 14:33:56 -0800 (PST) Received: from localhost ([127.0.0.1]:55921 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gwDxY-0002aN-7q for importer@patchew.org; Tue, 19 Feb 2019 17:33:52 -0500 Received: from eggs.gnu.org ([209.51.188.92]:45914) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gwDtx-0000Ks-Cw for qemu-devel@nongnu.org; Tue, 19 Feb 2019 17:30:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gwDts-0002VZ-Tp for qemu-devel@nongnu.org; Tue, 19 Feb 2019 17:30:08 -0500 Received: from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443]:39571) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gwDts-0002TO-Jo for qemu-devel@nongnu.org; Tue, 19 Feb 2019 17:30:04 -0500 Received: by mail-pf1-x443.google.com with SMTP id i20so458892pfo.6 for ; Tue, 19 Feb 2019 14:30:02 -0800 (PST) Received: from cloudburst.twiddle.net (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id 20sm12530778pfs.182.2019.02.19.14.30.00 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 19 Feb 2019 14:30:00 -0800 (PST) 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; bh=a6C+9ckvBDw1GU+eD8QIOHPnXiTdOLgY8/Y0kk8Ugpc=; b=ZpWOR8xhuxtc0EKNCNCk9pK1y25fFmcNI1LJ6AGj4VdZsST8AIDBWdbEqIFpZe6n/N C9mbKajoINjw98YQzLsqApQ7fsenVVATYR66WeOolPW++edmW+1WY3UFY8TFBgUs0g4z lKK0tO5UTrVXsr+7s91QLWMexJQ/JyoeKww9S2QJWNK/GXgqdskfr5+0prdC/cbXf7My 772Zdx07RhDYGHgZVSJyJ5Hvcuj17jiTU0hYjWEPEg8ACSsxJXEO72AColFzofe9V3Hz lqLsFhPOf0xrJDmbe44y0wBX2SXWfdINeqLKK+VzDE1LgqSRlvsOV5m0o4RHl0wnvKe0 A5ig== 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; bh=a6C+9ckvBDw1GU+eD8QIOHPnXiTdOLgY8/Y0kk8Ugpc=; b=Mpz5r9FU2VJLDKwuK/luBahs6EvqMLmFpDeqqMw2J8VDiLRUJIl1qLqTDYD2cVxO8j rkJd6x8o2jp3KnVrv6t26keSoF211tkUBS/kT/Ymdaj3yelrnBm1baMHHhqKYjwZccIM syBCL/rrx7xBmScQWcI+RqHyZVui1lp48/tY8XmSI8Y6lRY4jZlSzaesj6ukL5KggMjv eFfDmoLGZGYeQ/GakEzpB35vtsRc+a3oPyjTBIdZJQDzeg0ddXBBtNzsSnv6ODeC+xVV KIoZhuSITMwheIFhw2b0fhK66o9vL4kbjpJhU0HbABCnWbH16umiUNIxwuFffxVKDJQB r09g== X-Gm-Message-State: AHQUAubqBELqTS3o8Tc8Bh7z8bXmAXcSlGT297nFTd3EuGLMTt9m6nvq V8E8TnzvLGRxWJpHSgr+EpVTkdxUbX0= X-Google-Smtp-Source: AHgI3IYqnp8vEwblh1e9q99QHucXpULqwsV7OiAy8Kp8eXtNyyynXu8o7QMUwyQYQehMsCIqWnny9w== X-Received: by 2002:a63:2d5:: with SMTP id 204mr25535075pgc.407.1550615401544; Tue, 19 Feb 2019 14:30:01 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 19 Feb 2019 14:29:52 -0800 Message-Id: <20190219222952.22183-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20190219222952.22183-1-richard.henderson@linaro.org> References: <20190219222952.22183-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::443 Subject: [Qemu-devel] [PATCH v5 5/5] linux-user: Enable HWCAP_ASIMDFHM, HWCAP_JSCVT 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: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- linux-user/elfload.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 3a50d587ff..b9f7cbbdc1 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -602,6 +602,8 @@ static uint32_t get_elf_hwcap(void) GET_FEATURE_ID(aa64_fcma, ARM_HWCAP_A64_FCMA); GET_FEATURE_ID(aa64_sve, ARM_HWCAP_A64_SVE); GET_FEATURE_ID(aa64_pauth, ARM_HWCAP_A64_PACA | ARM_HWCAP_A64_PACG); + GET_FEATURE_ID(aa64_fhm, ARM_HWCAP_A64_ASIMDFHM); + GET_FEATURE_ID(aa64_jscvt, ARM_HWCAP_A64_JSCVT); =20 #undef GET_FEATURE_ID =20 --=20 2.17.2