From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) by sourceware.org (Postfix) with ESMTPS id 4A4BB3858D29 for ; Mon, 17 Jun 2024 13:13:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4A4BB3858D29 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4A4BB3858D29 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::52c ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718630030; cv=none; b=QHxxn5Pw2rXSZbL7fNDGJPg2lhPIH2BS18OScAor7cbtI8UesCsnS2w04tsdKqR5GgFU+cw0zg7zxI1XgIC4DmsTy4AzxQ7bwTQJBblr7KUekXMI6qwIsFyccl6KZ9MerYQfozyij5CpFL4xshd94fiGsyFtkP8ollfUeXs8Pgg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718630030; c=relaxed/simple; bh=8TDZ7IQJqavuYelnVMTDDw1b9ViFMxAGvVBJh/nv+Xg=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=sAQgspEENU2TuX5IAdbNBxbRgXfPrOc3zDEkoBGvUey1+dP4TmCGWaqSmtsJPvU52u8+bbjSoqtpyY0nB01x5TNI1t8auU3RUNp2OfQyFUDIO5Yf7wcGRCIRmqDcXm0hLTYapdp+4Kosebn12U/DQiGK1VJCla8RnohE97ysReA= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-57cc1c00ba6so3409813a12.1 for ; Mon, 17 Jun 2024 06:13:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1718630027; x=1719234827; darn=sourceware.org; h=content-transfer-encoding:in-reply-to:autocrypt:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:from:to:cc:subject:date:message-id:reply-to; bh=2oX6mG9P7OywslV7zkW0ZxzLcGv8gm1TmEaWlwwaaTc=; b=U7dIzmXKkw/x93xF3w+JN3fmhLFmtfZMMoj+f56rFqoa7aqY6d2CT77qVkrARq63W2 DVu8AolbGrDpKTAREnddoyEQqv6Quoe1HdN0YEu6p32eVWN1PYwSnLUaagIFzNX4t75g fN8coH+xs1HZZM39bKEMxpX9OYqKXJCgkoxEirCIj3BGSiZRwpzvQemhXWywLEo4iAle 2ozthu2Zep0KKDABiuiLFl/aApwnJdKM7oE5GO1WHmdgQQ29xpIYv/EtecmnHkosS59k 3sB1MMow6Rse3FcPZENHaFhyDjXJTgmm8FwD0xWwQYri+9aJJf0SGIVQRdLZXOvhBpVy fDSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718630027; x=1719234827; h=content-transfer-encoding:in-reply-to:autocrypt:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=2oX6mG9P7OywslV7zkW0ZxzLcGv8gm1TmEaWlwwaaTc=; b=wskroXkiZJxnQAK75UNoRx5SjKa22rnqMPEn5Vs4d3XoeoZPUMZYSB06lshSfWQqA3 fUskI54H1ON0Ymp2XdvR9lPWYxAZ7twF5Ke6NYQ/2pYMVk0KZRqo8ck9t0EuPWFBCfgq DrUNXiIfWv+s+JyScLWhHV+R5Sc/8KJ9kgcxLgeOYG1gXjwSLrrTj4QtrpdtrzpLiA7T PiMCDFQ1YOAx1xyeDciR0f4UfaFlIiS4up5SZdx0/abxtOHM5NqslTTJCUNu3NTIrGzI pDPeLlsSjHjkxpgR3npXRt/E1nAZY4GY1WZxbIXma/3usFHZJUzFRtFkzyqPB9Kpwih/ fUiQ== X-Forwarded-Encrypted: i=1; AJvYcCXQSIZxaetb3oqflxfAPb3hZtQdl3MS7+88IN9T4IyFWd0hrl7WCQSZDzBtqbJgRFHhF+JzO8ccYCbV2cKxJcUWo/sYbkT9EQ== X-Gm-Message-State: AOJu0YyCD82KC2EK6DsKl2lGSq5rHMHDBjPkVH3fRXZ/XFNupQ3II8+6 nDkaixIzCLaOMi7TBsRZeOBC+10IA3H0wBiTaxLtq+egNGst654hkrK1VgzkAA== X-Google-Smtp-Source: AGHT+IFQhdwyF9meDgdl+031YjNKQdf/5fZnLAYid2mW5qoM8tqVzBH4HJ/vBYav/pb2b5gRwEvCnw== X-Received: by 2002:a17:906:c790:b0:a6f:56d2:8f0c with SMTP id a640c23a62f3a-a6f60d4187fmr625458666b.40.1718630026662; Mon, 17 Jun 2024 06:13:46 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6f56f41684sm512632866b.153.2024.06.17.06.13.46 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Jun 2024 06:13:46 -0700 (PDT) Message-ID: <3f582cdc-0fb0-4bad-bbe8-d92eea8f8083@suse.com> Date: Mon, 17 Jun 2024 15:13:44 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 1/2 v2] Support APX CCMP and CTEST To: "Cui, Lili" Cc: hjl.tools@gmail.com, binutils@sourceware.org References: <20240614110846.1928726-1-lili.cui@intel.com> Content-Language: en-US From: Jan Beulich Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL In-Reply-To: <20240614110846.1928726-1-lili.cui@intel.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-3024.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 14.06.2024 13:08, Cui, Lili wrote: > @@ -1929,6 +1939,111 @@ static INLINE bool need_evex_encoding (const insn_template *t) > #define CPU_FLAGS_PERFECT_MATCH \ > (CPU_FLAGS_ARCH_MATCH | CPU_FLAGS_64BIT_MATCH) > > +static INLINE bool set_oszc_flags (unsigned int oszc_shift) > +{ > + if (i.oszc_flags & oszc_shift) > + { > + as_bad (_("same oszc flag used twice")); > + return false; > + } > + i.oszc_flags |= oszc_shift; > + return true; > +} > + > +/* Handle SCC OSZC flags. */ > + > +static int > +check_Scc_OszcOperations (const char *l) > +{ > + const char *suffix_string = l; > + > + while (is_space_char (*suffix_string)) > + suffix_string++; As mentioned in a earlier reply, I'd prefer if these were - consistent with what we have elsewhere - if(), not while(). But I won't insist. > + /* If {oszc flags} is absent, just return. */ > + if (*suffix_string != '{') > + return 0; > + > + /* Skip '{'. */ > + suffix_string++; > + > + /* Parse 'dfv='. */ > + while (is_space_char (*suffix_string)) > + suffix_string++; > + > + if (strncasecmp (suffix_string, "dfv", 3) == 0) > + suffix_string += 3; > + else > + { > + as_bad (_("Unrecognized pseudo-suffix")); Please can diagnostics start without capital letters (unless it's some form of acronym)? See elsewhere, including what you have right here in set_oszc_flags(). > + return -1; > + } > + > + while (is_space_char (*suffix_string)) > + suffix_string++; > + > + if (*suffix_string == '=') > + suffix_string++; > + else > + { > + as_bad (_("Unrecognized pseudo-suffix")); > + return -1; > + } > + > + /* Parse 'of, sf, zf, cf}'. */ > + while (*suffix_string) > + { > + while (is_space_char (*suffix_string)) > + suffix_string++; > + > + /* Return for '{dfv=}'. */ > + if (*suffix_string == '}') > + return ++suffix_string - l; Such an increment is pretty pointless, and hopefully the compiler will translate it to return suffix_string + 1 - l; anyway. Better to also write it like this right away. > + if (strncasecmp (suffix_string, "of", 2) == 0) > + { > + if (!set_oszc_flags (OSZC_OF)) > + return -1; > + } > + else if (strncasecmp (suffix_string, "sf", 2) == 0) > + { > + if (!set_oszc_flags (OSZC_SF)) > + return -1; > + } > + else if (strncasecmp (suffix_string, "zf", 2) == 0) > + { > + if (!set_oszc_flags (OSZC_ZF)) > + return -1; > + } > + else if (strncasecmp (suffix_string, "cf", 2) == 0) > + { > + if (!set_oszc_flags (OSZC_CF)) > + return -1; > + } > + else > + { > + as_bad (_("Unrecognized oszc flags or illegal `,' in pseudo-suffix")); > + return -1; > + } > + > + suffix_string += 2; > + > + while (is_space_char (*suffix_string)) > + suffix_string++; > + > + if (*suffix_string == '}') > + return ++suffix_string - l; > + > + if (*suffix_string != ',') > + break; > + > + suffix_string ++; Please omit the stray / inconsistent blank. > + } > + > + as_bad (_("Illegal `}' or `,' in pseudo-suffix")); When you come here, isn't it that you _did not_ find the expected } or ,? IOW s/Illegal/missing"? > @@ -7453,6 +7598,7 @@ parse_insn (const char *line, char *mnemonic, bool prefix_only) > } > } > } > + > /* Any other comma loses. */ > if (*l == ',') > { Stray / leftover change? > @@ -10398,6 +10427,23 @@ putop (instr_info *ins, const char *in_template, int sizeflag) > *ins->obufp++ = *q; > break; > } > + else if (l == 1 && last[0] == 'S') > + { > + /* Add scc suffix. */ > + oappend (ins, scc_suffix[ins->vex.scc]); > + > + /* For SCC insns, the ND bit is required to be set to 0. */ > + if (ins->vex.nd) > + oappend (ins, "(bad)"); > + > + /* These bits have been consumed and should be cleared or restored > + to default values. */ > + ins->vex.v = 1; > + ins->vex.nf = false; > + ins->vex.mask_register_specifier = 0; Unlike here ... > @@ -10532,6 +10582,18 @@ putop (instr_info *ins, const char *in_template, int sizeflag) > evex_printed = true; > } > } > + else if (l == 1 && last[0] == 'D') > + { > + /* Get oszc flags value from register_specifier. */ > + int oszc_value = ~ins->vex.register_specifier & 0xf; > + > + /* Add {dfv=of, sf, zf, cf} flags. */ > + oappend (ins, oszc_flags[oszc_value]); > + > + /* These bits have been consumed and should be cleared or restored > + to default values. */ > + ins->vex.register_specifier = 0; ... it now only "cleared" anymore here. All adjustment requests are largely cosmetic, so with them carried out feel free to commit. Jan