diff --git a/gas/NEWS b/gas/NEWS index b993464a67c962131723999614470926197b8969..88ad1d89c63cc7a3760c7ee8aa0b3f63fed13379 100644 --- a/gas/NEWS +++ b/gas/NEWS @@ -21,7 +21,8 @@ * Add support for Armv8-R and Armv8.7-A AArch64. -* Add support for DSB memory nXS barrier instruction for Armv8.7 AArch64. +* Add support for DSB memory nXS barrier and WFET instruction for Armv8.7 + AArch64. * Add support for Intel TDX instructions. diff --git a/gas/testsuite/gas/aarch64/system-5.d b/gas/testsuite/gas/aarch64/system-5.d new file mode 100644 index 0000000000000000000000000000000000000000..22fd6115e063f042d764321e1bbb2b519c1b2ff6 --- /dev/null +++ b/gas/testsuite/gas/aarch64/system-5.d @@ -0,0 +1,39 @@ +#name: WFET (Wait For Event with Timeout) instruction +#objdump: -dr + +.*: file format .* + +Disassembly of section \.text: + +0+ <.*>: +.*: 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 diff --git a/gas/testsuite/gas/aarch64/system-5.s b/gas/testsuite/gas/aarch64/system-5.s new file mode 100644 index 0000000000000000000000000000000000000000..6a518cecdfaad1ca38f30d38adf6cf3849765797 --- /dev/null +++ b/gas/testsuite/gas/aarch64/system-5.s @@ -0,0 +1,34 @@ +/* Wait For Event with Timeout is a Armv8.7 instruction. */ +.arch armv8.7-a + + 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 diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index 119625ad85f9686a08376dd975ebc221cac4be0a..a3014c190698824c40157c72d9f42e78f94ceee0 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -3867,6 +3867,7 @@ struct aarch64_opcode aarch64_opcode_table[] = CORE_INSN ("dc", 0xd5080000, 0xfff80000, ic_system, 0, OP2 (SYSREG_DC, Rt), QL_SRC_X, F_ALIAS), 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)), + V8_7_INSN ("wfet", 0xd5031000, 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),