-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[X86][MC] Support enc/dec for SETZUCC and promoted SETCC. #86473
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@llvm/pr-subscribers-backend-x86 @llvm/pr-subscribers-mc Author: Freddy Ye (FreddyLeaf) ChangesPatch is 26.95 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/86473.diff 14 Files Affected:
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
index 6401df9f49f033..0b5d9d971c990b 100644
--- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
+++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
@@ -3287,6 +3287,7 @@ bool X86AsmParser::ParseInstruction(ParseInstructionInfo &Info, StringRef Name,
// FIXME: Hack to recognize setneb as setne.
if (PatchedName.starts_with("set") && PatchedName.ends_with("b") &&
+ PatchedName != "setzub" && PatchedName != "setzunb"&&
PatchedName != "setb" && PatchedName != "setnb")
PatchedName = PatchedName.substr(0, Name.size()-1);
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
index 92a14226a0dc05..a5859f98bae026 100644
--- a/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
+++ b/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
@@ -1155,6 +1155,7 @@ X86MCCodeEmitter::emitVEXOpcodePrefix(int MemOperand, const MCInst &MI,
Prefix.setXX2(MI, MemOperand + X86::AddrIndexReg);
break;
}
+ case X86II::MRMXmCC:
case X86II::MRM0m:
case X86II::MRM1m:
case X86II::MRM2m:
@@ -1282,6 +1283,7 @@ X86MCCodeEmitter::emitVEXOpcodePrefix(int MemOperand, const MCInst &MI,
Prefix.setRR2(MI, CurOp++);
break;
}
+ case X86II::MRMXrCC:
case X86II::MRM0r:
case X86II::MRM1r:
case X86II::MRM2r:
diff --git a/llvm/lib/Target/X86/X86InstrAsmAlias.td b/llvm/lib/Target/X86/X86InstrAsmAlias.td
index 6b15213a2e6833..b0e8bc5173dbda 100644
--- a/llvm/lib/Target/X86/X86InstrAsmAlias.td
+++ b/llvm/lib/Target/X86/X86InstrAsmAlias.td
@@ -791,6 +791,11 @@ let Predicates = [In64BitMode] in {
def : InstAlias<"set"#Cond#"\t$dst", (SETCCr GR8:$dst, CC), 0>;
def : InstAlias<"set"#Cond#"\t$dst", (SETCCm i8mem:$dst, CC), 0>;
+
+ def : InstAlias<"setzu"#Cond#"\t$dst", (SETZUCCr GR8:$dst, CC), 0>;
+ def : InstAlias<"setzu"#Cond#"\t$dst", (SETZUCCm i8mem:$dst, CC), 0>;
+ def : InstAlias<"set"#Cond#"\t$dst", (SETCCr_EVEX GR8:$dst, CC), 0>;
+ def : InstAlias<"set"#Cond#"\t$dst", (SETCCm_EVEX i8mem:$dst, CC), 0>;
}
defm : CMOV_SETCC_Aliases<"o" , 0>;
diff --git a/llvm/lib/Target/X86/X86InstrCMovSetCC.td b/llvm/lib/Target/X86/X86InstrCMovSetCC.td
index d41591f68a6050..3cc15abd90daa2 100644
--- a/llvm/lib/Target/X86/X86InstrCMovSetCC.td
+++ b/llvm/lib/Target/X86/X86InstrCMovSetCC.td
@@ -127,6 +127,23 @@ let Uses = [EFLAGS], isCodeGenOnly = 1, ForceDisassemble = 1 in {
TB, Sched<[WriteSETCCStore]>;
} // Uses = [EFLAGS]
+// SetZUCC and promoted SetCC instructions.
+let Uses = [EFLAGS], mayStore = 1, isCodeGenOnly = 1, ForceDisassemble = 1,
+ OpEnc = EncEVEX, hasSideEffects = 0, Predicates = [HasEGPR, In64BitMode] in {
+ def SETZUCCr : I<0x40, MRMXrCC, (outs GR8:$dst), (ins ccode:$cond),
+ "setzu${cond}\t$dst", []>,
+ T_MAP4, XD, EVEX_B, NoCD8, Sched<[WriteSETCC]>;
+ def SETZUCCm : I<0x40, MRMXmCC, (outs), (ins i8mem:$dst, ccode:$cond),
+ "setzu${cond}\t$dst", []>,
+ T_MAP4, XD, EVEX_B, NoCD8, Sched<[WriteSETCCStore]>;
+ def SETCCr_EVEX : I<0x40, MRMXrCC, (outs GR8:$dst), (ins ccode:$cond),
+ "set${cond}\t$dst", []>,
+ XD, PL, Sched<[WriteSETCC]>;
+ def SETCCm_EVEX : I<0x40, MRMXmCC, (outs), (ins i8mem:$dst, ccode:$cond),
+ "set${cond}\t$dst", []>,
+ XD, PL, Sched<[WriteSETCCStore]>;
+}
+
// SALC is an undocumented instruction. Information for this instruction can be found
// here http://www.rcollins.org/secrets/opcodes/SALC.html
// Set AL if carry.
diff --git a/llvm/test/MC/Disassembler/X86/apx/evex-format.txt b/llvm/test/MC/Disassembler/X86/apx/evex-format.txt
index 1156f5c409922a..e9a9f1327a17eb 100644
--- a/llvm/test/MC/Disassembler/X86/apx/evex-format.txt
+++ b/llvm/test/MC/Disassembler/X86/apx/evex-format.txt
@@ -215,6 +215,16 @@
# INTEL: sar r17, r16, 123
0x62,0xfc,0xf4,0x10,0xc1,0xf8,0x7b
+## MRMXrCC
+# ATT: setzuo %r16b
+# INTEL: setzuo r16b
+0x62,0xfc,0x7f,0x18,0x40,0xc0
+
+## MRMXmCC
+# ATT: setzuo (%r16,%r17)
+# INTEL: setzuo byte ptr [r16 + r17]
+0x62,0xfc,0x7b,0x18,0x40,0x04,0x08
+
## NoCD8
# ATT: {nf} negq 123(%r16)
diff --git a/llvm/test/MC/Disassembler/X86/apx/setcc-evex.txt b/llvm/test/MC/Disassembler/X86/apx/setcc-evex.txt
new file mode 100644
index 00000000000000..1c00acfb76672a
--- /dev/null
+++ b/llvm/test/MC/Disassembler/X86/apx/setcc-evex.txt
@@ -0,0 +1,130 @@
+# RUN: llvm-mc -triple x86_64 -disassemble %s | FileCheck %s --check-prefix=ATT
+# RUN: llvm-mc -triple x86_64 -disassemble -output-asm-variant=1 %s | FileCheck %s --check-prefix=INTEL
+
+# ATT: {evex} seto %al
+# INTEL: {evex} seto al
+0x62,0xf4,0x7f,0x08,0x40,0xc0
+
+# ATT: {evex} setno %al
+# INTEL: {evex} setno al
+0x62,0xf4,0x7f,0x08,0x41,0xc0
+
+# ATT: {evex} setb %al
+# INTEL: {evex} setb al
+0x62,0xf4,0x7f,0x08,0x42,0xc0
+
+# ATT: {evex} setae %al
+# INTEL: {evex} setae al
+0x62,0xf4,0x7f,0x08,0x43,0xc0
+
+# ATT: {evex} sete %al
+# INTEL: {evex} sete al
+0x62,0xf4,0x7f,0x08,0x44,0xc0
+
+# ATT: {evex} setne %al
+# INTEL: {evex} setne al
+0x62,0xf4,0x7f,0x08,0x45,0xc0
+
+# ATT: {evex} setbe %al
+# INTEL: {evex} setbe al
+0x62,0xf4,0x7f,0x08,0x46,0xc0
+
+# ATT: {evex} seta %al
+# INTEL: {evex} seta al
+0x62,0xf4,0x7f,0x08,0x47,0xc0
+
+# ATT: {evex} sets %al
+# INTEL: {evex} sets al
+0x62,0xf4,0x7f,0x08,0x48,0xc0
+
+# ATT: {evex} setns %al
+# INTEL: {evex} setns al
+0x62,0xf4,0x7f,0x08,0x49,0xc0
+
+# ATT: {evex} setp %al
+# INTEL: {evex} setp al
+0x62,0xf4,0x7f,0x08,0x4a,0xc0
+
+# ATT: {evex} setnp %al
+# INTEL: {evex} setnp al
+0x62,0xf4,0x7f,0x08,0x4b,0xc0
+
+# ATT: {evex} setl %al
+# INTEL: {evex} setl al
+0x62,0xf4,0x7f,0x08,0x4c,0xc0
+
+# ATT: {evex} setge %al
+# INTEL: {evex} setge al
+0x62,0xf4,0x7f,0x08,0x4d,0xc0
+
+# ATT: {evex} setle %al
+# INTEL: {evex} setle al
+0x62,0xf4,0x7f,0x08,0x4e,0xc0
+
+# ATT: {evex} setg %al
+# INTEL: {evex} setg al
+0x62,0xf4,0x7f,0x08,0x4f,0xc0
+
+# ATT: {evex} seto (%rax)
+# INTEL: {evex} seto byte ptr [rax]
+0x62,0xf4,0x7f,0x08,0x40,0x00
+
+# ATT: {evex} setno (%rax)
+# INTEL: {evex} setno byte ptr [rax]
+0x62,0xf4,0x7f,0x08,0x41,0x00
+
+# ATT: {evex} setb (%rax)
+# INTEL: {evex} setb byte ptr [rax]
+0x62,0xf4,0x7f,0x08,0x42,0x00
+
+# ATT: {evex} setae (%rax)
+# INTEL: {evex} setae byte ptr [rax]
+0x62,0xf4,0x7f,0x08,0x43,0x00
+
+# ATT: {evex} sete (%rax)
+# INTEL: {evex} sete byte ptr [rax]
+0x62,0xf4,0x7f,0x08,0x44,0x00
+
+# ATT: {evex} setne (%rax)
+# INTEL: {evex} setne byte ptr [rax]
+0x62,0xf4,0x7f,0x08,0x45,0x00
+
+# ATT: {evex} setbe (%rax)
+# INTEL: {evex} setbe byte ptr [rax]
+0x62,0xf4,0x7f,0x08,0x46,0x00
+
+# ATT: {evex} seta (%rax)
+# INTEL: {evex} seta byte ptr [rax]
+0x62,0xf4,0x7f,0x08,0x47,0x00
+
+# ATT: {evex} sets (%rax)
+# INTEL: {evex} sets byte ptr [rax]
+0x62,0xf4,0x7f,0x08,0x48,0x00
+
+# ATT: {evex} setns (%rax)
+# INTEL: {evex} setns byte ptr [rax]
+0x62,0xf4,0x7f,0x08,0x49,0x00
+
+# ATT: {evex} setp (%rax)
+# INTEL: {evex} setp byte ptr [rax]
+0x62,0xf4,0x7f,0x08,0x4a,0x00
+
+# ATT: {evex} setnp (%rax)
+# INTEL: {evex} setnp byte ptr [rax]
+0x62,0xf4,0x7f,0x08,0x4b,0x00
+
+# ATT: {evex} setl (%rax)
+# INTEL: {evex} setl byte ptr [rax]
+0x62,0xf4,0x7f,0x08,0x4c,0x00
+
+# ATT: {evex} setge (%rax)
+# INTEL: {evex} setge byte ptr [rax]
+0x62,0xf4,0x7f,0x08,0x4d,0x00
+
+# ATT: {evex} setle (%rax)
+# INTEL: {evex} setle byte ptr [rax]
+0x62,0xf4,0x7f,0x08,0x4e,0x00
+
+# ATT: {evex} setg (%rax)
+# INTEL: {evex} setg byte ptr [rax]
+0x62,0xf4,0x7f,0x08,0x4f,0x00
diff --git a/llvm/test/MC/Disassembler/X86/apx/setzucc.txt b/llvm/test/MC/Disassembler/X86/apx/setzucc.txt
new file mode 100644
index 00000000000000..44aaa4b33cc854
--- /dev/null
+++ b/llvm/test/MC/Disassembler/X86/apx/setzucc.txt
@@ -0,0 +1,130 @@
+# RUN: llvm-mc -triple x86_64 -disassemble %s | FileCheck %s --check-prefix=ATT
+# RUN: llvm-mc -triple x86_64 -disassemble -output-asm-variant=1 %s | FileCheck %s --check-prefix=INTEL
+
+# ATT: setzuo %al
+# INTEL: setzuo al
+0x62,0xf4,0x7f,0x18,0x40,0xc0
+
+# ATT: setzuno %al
+# INTEL: setzuno al
+0x62,0xf4,0x7f,0x18,0x41,0xc0
+
+# ATT: setzub %al
+# INTEL: setzub al
+0x62,0xf4,0x7f,0x18,0x42,0xc0
+
+# ATT: setzuae %al
+# INTEL: setzuae al
+0x62,0xf4,0x7f,0x18,0x43,0xc0
+
+# ATT: setzue %al
+# INTEL: setzue al
+0x62,0xf4,0x7f,0x18,0x44,0xc0
+
+# ATT: setzune %al
+# INTEL: setzune al
+0x62,0xf4,0x7f,0x18,0x45,0xc0
+
+# ATT: setzube %al
+# INTEL: setzube al
+0x62,0xf4,0x7f,0x18,0x46,0xc0
+
+# ATT: setzua %al
+# INTEL: setzua al
+0x62,0xf4,0x7f,0x18,0x47,0xc0
+
+# ATT: setzus %al
+# INTEL: setzus al
+0x62,0xf4,0x7f,0x18,0x48,0xc0
+
+# ATT: setzuns %al
+# INTEL: setzuns al
+0x62,0xf4,0x7f,0x18,0x49,0xc0
+
+# ATT: setzup %al
+# INTEL: setzup al
+0x62,0xf4,0x7f,0x18,0x4a,0xc0
+
+# ATT: setzunp %al
+# INTEL: setzunp al
+0x62,0xf4,0x7f,0x18,0x4b,0xc0
+
+# ATT: setzul %al
+# INTEL: setzul al
+0x62,0xf4,0x7f,0x18,0x4c,0xc0
+
+# ATT: setzuge %al
+# INTEL: setzuge al
+0x62,0xf4,0x7f,0x18,0x4d,0xc0
+
+# ATT: setzule %al
+# INTEL: setzule al
+0x62,0xf4,0x7f,0x18,0x4e,0xc0
+
+# ATT: setzug %al
+# INTEL: setzug al
+0x62,0xf4,0x7f,0x18,0x4f,0xc0
+
+# ATT: setzuo (%rax)
+# INTEL: setzuo byte ptr [rax]
+0x62,0xf4,0x7f,0x18,0x40,0x00
+
+# ATT: setzuno (%rax)
+# INTEL: setzuno byte ptr [rax]
+0x62,0xf4,0x7f,0x18,0x41,0x00
+
+# ATT: setzub (%rax)
+# INTEL: setzub byte ptr [rax]
+0x62,0xf4,0x7f,0x18,0x42,0x00
+
+# ATT: setzuae (%rax)
+# INTEL: setzuae byte ptr [rax]
+0x62,0xf4,0x7f,0x18,0x43,0x00
+
+# ATT: setzue (%rax)
+# INTEL: setzue byte ptr [rax]
+0x62,0xf4,0x7f,0x18,0x44,0x00
+
+# ATT: setzune (%rax)
+# INTEL: setzune byte ptr [rax]
+0x62,0xf4,0x7f,0x18,0x45,0x00
+
+# ATT: setzube (%rax)
+# INTEL: setzube byte ptr [rax]
+0x62,0xf4,0x7f,0x18,0x46,0x00
+
+# ATT: setzua (%rax)
+# INTEL: setzua byte ptr [rax]
+0x62,0xf4,0x7f,0x18,0x47,0x00
+
+# ATT: setzus (%rax)
+# INTEL: setzus byte ptr [rax]
+0x62,0xf4,0x7f,0x18,0x48,0x00
+
+# ATT: setzuns (%rax)
+# INTEL: setzuns byte ptr [rax]
+0x62,0xf4,0x7f,0x18,0x49,0x00
+
+# ATT: setzup (%rax)
+# INTEL: setzup byte ptr [rax]
+0x62,0xf4,0x7f,0x18,0x4a,0x00
+
+# ATT: setzunp (%rax)
+# INTEL: setzunp byte ptr [rax]
+0x62,0xf4,0x7f,0x18,0x4b,0x00
+
+# ATT: setzul (%rax)
+# INTEL: setzul byte ptr [rax]
+0x62,0xf4,0x7f,0x18,0x4c,0x00
+
+# ATT: setzuge (%rax)
+# INTEL: setzuge byte ptr [rax]
+0x62,0xf4,0x7f,0x18,0x4d,0x00
+
+# ATT: setzule (%rax)
+# INTEL: setzule byte ptr [rax]
+0x62,0xf4,0x7f,0x18,0x4e,0x00
+
+# ATT: setzug (%rax)
+# INTEL: setzug byte ptr [rax]
+0x62,0xf4,0x7f,0x18,0x4f,0x00
diff --git a/llvm/test/MC/X86/apx/evex-format-att.s b/llvm/test/MC/X86/apx/evex-format-att.s
index 36df3f3757dc3f..e59039ea2d8225 100644
--- a/llvm/test/MC/X86/apx/evex-format-att.s
+++ b/llvm/test/MC/X86/apx/evex-format-att.s
@@ -210,6 +210,16 @@
# CHECK: encoding: [0x62,0xfc,0xf4,0x10,0xc1,0xf8,0x7b]
sarq $123, %r16, %r17
+## MRMXrCC
+# CHECK: setzuo %r16b
+# CHECK: encoding: [0x62,0xfc,0x7f,0x18,0x40,0xc0]
+ setzuo %r16b
+
+## MRMXmCC
+# CHECK: setzuo (%r16,%r17)
+# CHECK: encoding: [0x62,0xfc,0x7b,0x18,0x40,0x04,0x08]
+ setzuo (%r16,%r17)
+
## NoCD8
# CHECK: {nf} negq 123(%r16)
diff --git a/llvm/test/MC/X86/apx/evex-format-intel.s b/llvm/test/MC/X86/apx/evex-format-intel.s
index 2b346e0e858063..42d4c0c0081a74 100644
--- a/llvm/test/MC/X86/apx/evex-format-intel.s
+++ b/llvm/test/MC/X86/apx/evex-format-intel.s
@@ -210,6 +210,16 @@
# CHECK: encoding: [0x62,0xfc,0xf4,0x10,0xc1,0xf8,0x7b]
sar r17, r16, 123
+## MRMXrCC
+# CHECK: setzuo r16b
+# CHECK: encoding: [0x62,0xfc,0x7f,0x18,0x40,0xc0]
+ setzuo r16b
+
+## MRMXmCC
+# CHECK: setzuo byte ptr [r16 + r17]
+# CHECK: encoding: [0x62,0xfc,0x7b,0x18,0x40,0x04,0x08]
+ setzuo byte ptr [r16 + r17]
+
## NoCD8
# CHECK: {nf} neg qword ptr [r16 + 123]
diff --git a/llvm/test/MC/X86/apx/setcc-evex-att.s b/llvm/test/MC/X86/apx/setcc-evex-att.s
new file mode 100644
index 00000000000000..364c5ee77bf60c
--- /dev/null
+++ b/llvm/test/MC/X86/apx/setcc-evex-att.s
@@ -0,0 +1,98 @@
+# RUN: llvm-mc -triple x86_64 -show-encoding %s | FileCheck %s
+
+# CHECK: {evex} seto %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x40,0xc0]
+ {evex} setob %al
+# CHECK: {evex} setno %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x41,0xc0]
+ {evex} setnob %al
+# CHECK: {evex} setb %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x42,0xc0]
+ {evex} setbb %al
+# CHECK: {evex} setae %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x43,0xc0]
+ {evex} setaeb %al
+# CHECK: {evex} sete %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x44,0xc0]
+ {evex} seteb %al
+# CHECK: {evex} setne %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x45,0xc0]
+ {evex} setneb %al
+# CHECK: {evex} setbe %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x46,0xc0]
+ {evex} setbeb %al
+# CHECK: {evex} seta %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x47,0xc0]
+ {evex} setab %al
+# CHECK: {evex} sets %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x48,0xc0]
+ {evex} setsb %al
+# CHECK: {evex} setns %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x49,0xc0]
+ {evex} setnsb %al
+# CHECK: {evex} setp %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4a,0xc0]
+ {evex} setpb %al
+# CHECK: {evex} setnp %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4b,0xc0]
+ {evex} setnpb %al
+# CHECK: {evex} setl %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4c,0xc0]
+ {evex} setlb %al
+# CHECK: {evex} setge %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4d,0xc0]
+ {evex} setgeb %al
+# CHECK: {evex} setle %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4e,0xc0]
+ {evex} setleb %al
+# CHECK: {evex} setg %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4f,0xc0]
+ {evex} setgb %al
+# CHECK: {evex} seto (%rax)
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x40,0x00]
+ {evex} setob (%rax)
+# CHECK: {evex} setno (%rax)
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x41,0x00]
+ {evex} setnob (%rax)
+# CHECK: {evex} setb (%rax)
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x42,0x00]
+ {evex} setbb (%rax)
+# CHECK: {evex} setae (%rax)
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x43,0x00]
+ {evex} setaeb (%rax)
+# CHECK: {evex} sete (%rax)
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x44,0x00]
+ {evex} seteb (%rax)
+# CHECK: {evex} setne (%rax)
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x45,0x00]
+ {evex} setneb (%rax)
+# CHECK: {evex} setbe (%rax)
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x46,0x00]
+ {evex} setbeb (%rax)
+# CHECK: {evex} seta (%rax)
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x47,0x00]
+ {evex} setab (%rax)
+# CHECK: {evex} sets (%rax)
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x48,0x00]
+ {evex} setsb (%rax)
+# CHECK: {evex} setns (%rax)
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x49,0x00]
+ {evex} setnsb (%rax)
+# CHECK: {evex} setp (%rax)
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4a,0x00]
+ {evex} setpb (%rax)
+# CHECK: {evex} setnp (%rax)
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4b,0x00]
+ {evex} setnpb (%rax)
+# CHECK: {evex} setl (%rax)
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4c,0x00]
+ {evex} setlb (%rax)
+# CHECK: {evex} setge (%rax)
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4d,0x00]
+ {evex} setgeb (%rax)
+# CHECK: {evex} setle (%rax)
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4e,0x00]
+ {evex} setleb (%rax)
+# CHECK: {evex} setg (%rax)
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4f,0x00]
+ {evex} setgb (%rax)
diff --git a/llvm/test/MC/X86/apx/setcc-evex-intel.s b/llvm/test/MC/X86/apx/setcc-evex-intel.s
new file mode 100644
index 00000000000000..e005c2edb95c4b
--- /dev/null
+++ b/llvm/test/MC/X86/apx/setcc-evex-intel.s
@@ -0,0 +1,98 @@
+# RUN: llvm-mc -triple x86_64 -show-encoding -x86-asm-syntax=intel -output-asm-variant=1 %s | FileCheck %s
+
+# CHECK: {evex} seto al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x40,0xc0]
+ {evex} seto al
+# CHECK: {evex} setno al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x41,0xc0]
+ {evex} setno al
+# CHECK: {evex} setb al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x42,0xc0]
+ {evex} setb al
+# CHECK: {evex} setae al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x43,0xc0]
+ {evex} setae al
+# CHECK: {evex} sete al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x44,0xc0]
+ {evex} sete al
+# CHECK: {evex} setne al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x45,0xc0]
+ {evex} setne al
+# CHECK: {evex} setbe al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x46,0xc0]
+ {evex} setbe al
+# CHECK: {evex} seta al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x47,0xc0]
+ {evex} seta al
+# CHECK: {evex} sets al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x48,0xc0]
+ {evex} sets al
+# CHECK: {evex} setns al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x49,0xc0]
+ {evex} setns al
+# CHECK: {evex} setp al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4a,0xc0]
+ {evex} setp al
+# CHECK: {evex} setnp al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4b,0xc0]
+ {evex} setnp al
+# CHECK: {evex} setl al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4c,0xc0]
+ {evex} setl al
+# CHECK: {evex} setge al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4d,0xc0]
+ {evex} setge al
+# CHECK: {evex} setle al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4e,0xc0]
+ {evex} setle al
+# CHECK: {evex} setg al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4f,0xc0]
+ {evex} setg al
+# CHECK: {evex} seto byte ptr [rax]
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x40,0x00]
+ {evex} seto byte ptr [rax]
+# CHECK: {evex} setno byte ptr [rax]
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x41,0x00]
+ {evex} setno byte ptr [rax]
+# CHECK: {evex} setb byte ptr [rax]
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x42,0x00]
+ {evex} setb byte ptr [rax]
+# CHECK: {evex} setae byte ptr [rax]
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x43,0x00]
+ {evex} setae byte ptr [rax]
+# CHECK: {evex} sete byte ptr [rax]
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x44,0x00]
+ {evex} sete byte ptr [rax]
+# CHECK: {evex} setne byte ptr [rax]
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x45,0x00]
+ {evex} setne byte ptr [rax]
+# CHECK: {evex} setbe byte ptr [rax]
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x46,0x00]
+ {evex} setbe byte ptr [rax]
+# CHECK: {evex} seta byte ptr [rax]
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x47,0x00]
+ {evex} seta byte ptr [rax]
+# CHECK: {evex} sets byte ptr [rax]
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x48,0x00]
+ {evex} sets byte ptr [rax]
+# CHECK: {evex} setns byte ptr [rax]
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x49,0x00]
+ {evex} setns byte ptr [rax]
+# CHECK: {evex} setp byte ptr [rax]
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4a,0x00]
+ {evex} setp byte ptr [rax]
+# CHECK: {evex} setnp byte ptr [rax]
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4b,0x00]
+ {evex} setnp byte ptr [rax]
+# CHECK: {evex} setl byte ptr [rax]
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4c,0x00]
+ {evex} setl byte ptr [rax]
+# CHECK: {evex} setge byte ptr [rax]
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4d,0x00]
+ {evex} setge byte ptr [rax]
+# CHECK: {evex} setle byte ptr [rax]
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4e,0x00]
+ {evex} setle byte ptr [rax]
+# CHECK: {evex} setg byte ptr [rax]
+# CHECK: encoding: [0x62,0xf4,0x7f,0x08,0x4f,0x00]
+ {evex} setg byte ptr [rax]
diff --git a/llvm/test/MC/X86/apx/setzucc-att.s b/llvm/test/MC/X86/apx/setzucc-att.s
new file mode 100644
index 00000000000000..31c1ab27db7f83
--- /dev/null
+++ b/llvm/test/MC/X86/apx/setzucc-att.s
@@ -0,0 +1,98 @@
+# RUN: llvm-mc -triple x86_64 -show-encoding %s | FileCheck %s
+
+# CHECK: setzuo %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x40,0xc0]
+ setzuo %al
+# CHECK: setzuno %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x41,0xc0]
+ setzuno %al
+# CHECK: setzub %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x42,0xc0]
+ setzub %al
+# CHECK: setzuae %al
+# CHECK: encoding: [0x62,0xf4,0x7f,0x18,0x43,0xc0]
+ setzua...
[truncated]
|
✅ With the latest revision this PR passed the Python code formatter. |
✅ With the latest revision this PR passed the C/C++ code formatter. |
ping for review |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
apx-spec: https://cdrdv2.intel.com/v1/dl/getContent/784266
apx-syntax-recommendation: https://cdrdv2.intel.com/v1/dl/getContent/817241