From: Andrew Carlotti <andrew.carlotti@arm.com>
To: binutils@sourceware.org
Cc: Richard Earnshaw <richard.earnshaw@arm.com>
Subject: [PATCH 08/11] aarch64: Add +wfxt flag for existing instructions
Date: Fri, 12 Jan 2024 01:44:46 +0000 [thread overview]
Message-ID: <3361053e-b4ae-4a59-98e3-4883cc74cc74@e124511.cambridge.arm.com> (raw)
In-Reply-To: <1496882f-bd18-37f7-761c-e33e5fca6a4b@e124511.cambridge.arm.com>
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index df71e67a5a68047d70abe65d8f178fdfae114306..5b3cdd837b3f042a1f0d8e8b98c7dde1b604a49c 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -10323,6 +10323,7 @@ static const struct aarch64_option_cpu_value_table aarch64_features[] = {
{"flagm", AARCH64_FEATURE (FLAGM), AARCH64_NO_FEATURES},
{"flagm2", AARCH64_FEATURE (FLAGMANIP), AARCH64_FEATURE (FLAGM)},
{"pauth", AARCH64_FEATURE (PAC), AARCH64_NO_FEATURES},
+ {"wfxt", AARCH64_FEATURE (WFXT), AARCH64_NO_FEATURES},
{"mops", AARCH64_FEATURE (MOPS), AARCH64_NO_FEATURES},
{"hbc", AARCH64_FEATURE (HBC), AARCH64_NO_FEATURES},
{"cssc", AARCH64_FEATURE (CSSC), AARCH64_NO_FEATURES},
diff --git a/gas/testsuite/gas/aarch64/system-5.d b/gas/testsuite/gas/aarch64/system-5.d
index 935e843a5063eca7e054eef678786358d1790fa8..a24173942cef614d3158de7197d955c9380d017f 100644
--- a/gas/testsuite/gas/aarch64/system-5.d
+++ b/gas/testsuite/gas/aarch64/system-5.d
@@ -68,3 +68,65 @@ Disassembly of section \.text:
.*: d503103c wfit x28
.*: d503103d wfit x29
.*: d503103e wfit x30
+.*: d5031000 wfet x0
+.*: d5031001 wfet x1
+.*: d5031002 wfet x2
+.*: d5031003 wfet x3
+.*: d5031004 wfet x4
+.*: d5031005 wfet x5
+.*: d5031006 wfet x6
+.*: d5031007 wfet x7
+.*: d5031008 wfet x8
+.*: d5031009 wfet x9
+.*: d503100a wfet x10
+.*: d503100b wfet x11
+.*: d503100c wfet x12
+.*: d503100d wfet x13
+.*: d503100e wfet x14
+.*: d503100f wfet x15
+.*: d5031010 wfet x16
+.*: d5031011 wfet x17
+.*: d5031012 wfet x18
+.*: d5031013 wfet x19
+.*: d5031014 wfet x20
+.*: d5031015 wfet x21
+.*: d5031016 wfet x22
+.*: d5031017 wfet x23
+.*: d5031018 wfet x24
+.*: d5031019 wfet x25
+.*: d503101a wfet x26
+.*: d503101b wfet x27
+.*: d503101c wfet x28
+.*: d503101d wfet x29
+.*: d503101e wfet x30
+.*: d5031020 wfit x0
+.*: d5031021 wfit x1
+.*: d5031022 wfit x2
+.*: d5031023 wfit x3
+.*: d5031024 wfit x4
+.*: d5031025 wfit x5
+.*: d5031026 wfit x6
+.*: d5031027 wfit x7
+.*: d5031028 wfit x8
+.*: d5031029 wfit x9
+.*: d503102a wfit x10
+.*: d503102b wfit x11
+.*: d503102c wfit x12
+.*: d503102d wfit x13
+.*: d503102e wfit x14
+.*: d503102f wfit x15
+.*: d5031030 wfit x16
+.*: d5031031 wfit x17
+.*: d5031032 wfit x18
+.*: d5031033 wfit x19
+.*: d5031034 wfit x20
+.*: d5031035 wfit x21
+.*: d5031036 wfit x22
+.*: d5031037 wfit x23
+.*: d5031038 wfit x24
+.*: d5031039 wfit x25
+.*: d503103a wfit x26
+.*: d503103b wfit x27
+.*: d503103c wfit x28
+.*: d503103d wfit x29
+.*: d503103e wfit x30
diff --git a/gas/testsuite/gas/aarch64/system-5.s b/gas/testsuite/gas/aarch64/system-5.s
index ec2c58c890ff7d64722e7c88b27518b2b0c26321..cacb4489521305b047e6f484907d9c3402534b71 100644
--- a/gas/testsuite/gas/aarch64/system-5.s
+++ b/gas/testsuite/gas/aarch64/system-5.s
@@ -66,3 +66,73 @@
wfit x28
wfit x29
wfit x30
+
+
+/* Wait For Event with Timeout is also available with +wfxt. */
+.arch armv8-a+wfxt
+
+ wfet x0
+ wfet x1
+ wfet x2
+ wfet x3
+ wfet x4
+ wfet x5
+ wfet x6
+ wfet x7
+ wfet x8
+ wfet x9
+ wfet x10
+ wfet x11
+ wfet x12
+ wfet x13
+ wfet x14
+ wfet x15
+ wfet x16
+ wfet x17
+ wfet x18
+ wfet x19
+ wfet x20
+ wfet x21
+ wfet x22
+ wfet x23
+ wfet x24
+ wfet x25
+ wfet x26
+ wfet x27
+ wfet x28
+ wfet x29
+ wfet x30
+
+/* Wait For Interrupt with Timeout. */
+
+ wfit x0
+ wfit x1
+ wfit x2
+ wfit x3
+ wfit x4
+ wfit x5
+ wfit x6
+ wfit x7
+ wfit x8
+ wfit x9
+ wfit x10
+ wfit x11
+ wfit x12
+ wfit x13
+ wfit x14
+ wfit x15
+ wfit x16
+ wfit x17
+ wfit x18
+ wfit x19
+ wfit x20
+ wfit x21
+ wfit x22
+ wfit x23
+ wfit x24
+ wfit x25
+ wfit x26
+ wfit x27
+ wfit x28
+ wfit x29
+ wfit x30
diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h
index 6674f34ab29d06df2e26dc2e62e0365c067c9e82..973118c0d577da770ee2cce5599f25a73bd56782 100644
--- a/include/opcode/aarch64.h
+++ b/include/opcode/aarch64.h
@@ -141,6 +141,8 @@ enum aarch64_feature_bit {
AARCH64_FEATURE_MEMTAG,
/* Transactional Memory Extension. */
AARCH64_FEATURE_TME,
+ /* WFx instructions with timeout. */
+ AARCH64_FEATURE_WFXT,
/* Standardization of memory operations. */
AARCH64_FEATURE_MOPS,
/* Hinted conditional branches. */
@@ -271,6 +273,7 @@ enum aarch64_feature_bit {
| AARCH64_FEATBIT (X, BFLOAT16) \
| AARCH64_FEATBIT (X, I8MM))
#define AARCH64_ARCH_V8_7A_FEATURES(X) (AARCH64_FEATBIT (X, V8_7A) \
+ | AARCH64_FEATBIT (X, WFXT) \
| AARCH64_FEATBIT (X, LS64))
#define AARCH64_ARCH_V8_8A_FEATURES(X) (AARCH64_FEATBIT (X, V8_8A) \
| AARCH64_FEATBIT (X, MOPS) \
diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h
index 1838f99a960c7348c1d36e50c0b9aba5e87b5196..f6538aa5536d355881016442a82458334477ec58 100644
--- a/opcodes/aarch64-tbl.h
+++ b/opcodes/aarch64-tbl.h
@@ -2598,6 +2598,8 @@ static const aarch64_feature_set aarch64_feature_ls64 =
AARCH64_FEATURE (LS64);
static const aarch64_feature_set aarch64_feature_flagm =
AARCH64_FEATURE (FLAGM);
+static const aarch64_feature_set aarch64_feature_wfxt =
+ AARCH64_FEATURE (WFXT);
static const aarch64_feature_set aarch64_feature_mops =
AARCH64_FEATURE (MOPS);
static const aarch64_feature_set aarch64_feature_mops_memtag =
@@ -2676,6 +2678,7 @@ static const aarch64_feature_set aarch64_feature_d128_the =
#define ARMV8_7A &aarch64_feature_v8_7a
#define LS64 &aarch64_feature_ls64
#define FLAGM &aarch64_feature_flagm
+#define WFXT &aarch64_feature_wfxt
#define MOPS &aarch64_feature_mops
#define MOPS_MEMTAG &aarch64_feature_mops_memtag
#define HBC &aarch64_feature_hbc
@@ -2825,6 +2828,8 @@ static const aarch64_feature_set aarch64_feature_d128_the =
{ NAME, OPCODE, MASK, CLASS, 0, ARMV8R, OPS, QUALS, FLAGS, 0, 0, NULL }
#define V8_7A_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \
{ NAME, OPCODE, MASK, CLASS, 0, ARMV8_7A, OPS, QUALS, FLAGS, 0, 0, NULL }
+#define WFXT_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \
+ { NAME, OPCODE, MASK, CLASS, 0, WFXT, OPS, QUALS, FLAGS, 0, 0, NULL }
#define _LS64_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \
{ NAME, OPCODE, MASK, CLASS, 0, LS64, OPS, QUALS, FLAGS, 0, 0, NULL }
#define FLAGM_INSN(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS) \
@@ -4245,8 +4250,8 @@ const struct aarch64_opcode aarch64_opcode_table[] =
CORE_INSN ("ic", 0xd5080000, 0xfff80000, ic_system, 0, OP2 (SYSREG_IC, Rt_SYS), QL_SRC_X, F_ALIAS | F_OPD1_OPT | F_DEFAULT (0x1F)),
CORE_INSN ("tlbi",0xd5080000, 0xfff80000, ic_system, 0, OP2 (SYSREG_TLBI, Rt_SYS), QL_SRC_X, F_ALIAS | F_OPD1_OPT | F_DEFAULT (0x1F)),
D128_INSN ("tlbip",0xd5480000, 0xfff80000, OP3 (SYSREG_TLBIP, Rt_SYS, PAIRREG_OR_XZR), QL_SRC_X2, F_ALIAS| F_OPD1_OPT | F_OPD_PAIR_OPT | F_DEFAULT (0x1f)),
- V8_7A_INSN ("wfet", 0xd5031000, 0xffffffe0, ic_system, OP1 (Rd), QL_I1X, F_HAS_ALIAS),
- V8_7A_INSN ("wfit", 0xd5031020, 0xffffffe0, ic_system, OP1 (Rd), QL_I1X, F_HAS_ALIAS),
+ WFXT_INSN ("wfet", 0xd5031000, 0xffffffe0, ic_system, OP1 (Rd), QL_I1X, F_HAS_ALIAS),
+ WFXT_INSN ("wfit", 0xd5031020, 0xffffffe0, ic_system, OP1 (Rd), QL_I1X, F_HAS_ALIAS),
PREDRES_INSN ("cfp", 0xd50b7380, 0xffffffe0, ic_system, OP2 (SYSREG_SR, Rt), QL_SRC_X, F_ALIAS),
PREDRES_INSN ("dvp", 0xd50b73a0, 0xffffffe0, ic_system, OP2 (SYSREG_SR, Rt), QL_SRC_X, F_ALIAS),
PREDRES_INSN ("cpp", 0xd50b73e0, 0xffffffe0, ic_system, OP2 (SYSREG_SR, Rt), QL_SRC_X, F_ALIAS),
next prev parent reply other threads:[~2024-01-12 1:45 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-12 1:39 [PATCH 00/11] aarch64: New feature flags and flag fixes Andrew Carlotti
2024-01-12 1:40 ` [PATCH 01/11] aarch64: Fix +lse feature flag dependency Andrew Carlotti
2024-01-12 1:41 ` [PATCH 02/11] aarch64: Add +fcma alias for +compnum Andrew Carlotti
2024-01-12 1:42 ` [PATCH 03/11] aarch64: Fix option parsing to disallow prefixes of valid options Andrew Carlotti
2024-01-12 1:42 ` [PATCH 04/11] aarch64: Add +jscvt flag for existing fjcvtzs instruction Andrew Carlotti
2024-01-12 1:43 ` [PATCH 05/11] aarch64: Add +frintts flag for existing instructions Andrew Carlotti
2024-01-12 1:43 ` [PATCH 06/11] aarch64: Add +flagm2 " Andrew Carlotti
2024-01-12 1:44 ` [PATCH 07/11] aarch64: Add +rcpc2 " Andrew Carlotti
2024-01-12 1:44 ` Andrew Carlotti [this message]
2024-01-12 1:45 ` [PATCH 09/11] aarch64: Add +xs " Andrew Carlotti
2024-01-12 1:45 ` [PATCH 10/11] aarch64: Make FEAT_ASMv8p2 instruction aliases always available Andrew Carlotti
2024-01-12 1:46 ` [PATCH 11/11] aarch64: Remove unused code Andrew Carlotti
2024-01-12 13:47 ` [PATCH 00/11] aarch64: New feature flags and flag fixes Nick Clifton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3361053e-b4ae-4a59-98e3-4883cc74cc74@e124511.cambridge.arm.com \
--to=andrew.carlotti@arm.com \
--cc=binutils@sourceware.org \
--cc=richard.earnshaw@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).