diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.td b/llvm/lib/Target/AArch64/AArch64InstrInfo.td --- a/llvm/lib/Target/AArch64/AArch64InstrInfo.td +++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.td @@ -711,6 +711,7 @@ def : InstAlias<"wfi", (HINT 0b011)>; def : InstAlias<"sev", (HINT 0b100)>; def : InstAlias<"sevl", (HINT 0b101)>; +def : InstAlias<"dgh", (HINT 0b110)>; def : InstAlias<"esb", (HINT 0b10000)>, Requires<[HasRAS]>; def : InstAlias<"csdb", (HINT 20)>; def : InstAlias<"bti", (HINT 32)>, Requires<[HasBTI]>; diff --git a/llvm/test/MC/AArch64/basic-a64-instructions.s b/llvm/test/MC/AArch64/basic-a64-instructions.s --- a/llvm/test/MC/AArch64/basic-a64-instructions.s +++ b/llvm/test/MC/AArch64/basic-a64-instructions.s @@ -3465,12 +3465,14 @@ wfi sev sevl + dgh // CHECK: nop // encoding: [0x1f,0x20,0x03,0xd5] // CHECK: yield // encoding: [0x3f,0x20,0x03,0xd5] // CHECK: wfe // encoding: [0x5f,0x20,0x03,0xd5] // CHECK: wfi // encoding: [0x7f,0x20,0x03,0xd5] // CHECK: sev // encoding: [0x9f,0x20,0x03,0xd5] // CHECK: sevl // encoding: [0xbf,0x20,0x03,0xd5] +// CHECK: dgh // encoding: [0xdf,0x20,0x03,0xd5] clrex clrex #0 diff --git a/llvm/test/MC/Disassembler/AArch64/basic-a64-instructions.txt b/llvm/test/MC/Disassembler/AArch64/basic-a64-instructions.txt --- a/llvm/test/MC/Disassembler/AArch64/basic-a64-instructions.txt +++ b/llvm/test/MC/Disassembler/AArch64/basic-a64-instructions.txt @@ -3033,6 +3033,7 @@ # CHECK: wfi # CHECK: sev # CHECK: sevl +# CHECK: dgh 0x1f 0x20 0x3 0xd5 0xff 0x2f 0x3 0xd5 0x1f 0x20 0x3 0xd5 @@ -3041,6 +3042,7 @@ 0x7f 0x20 0x3 0xd5 0x9f 0x20 0x3 0xd5 0xbf 0x20 0x3 0xd5 +0xdf,0x20,0x3,0xd5 # CHECK: clrex # CHECK: clrex #0