From: Gadi Haber Date: Thu, 14 Dec 2017 07:26:08 +0000 (+0000) Subject: [X86][AES]: Adding full coverage of MC encoding for the AES and AVXAES isa sets.... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5b7b2d567478452c7e199a041155674f37df8037;p=llvm [X86][AES]: Adding full coverage of MC encoding for the AES and AVXAES isa sets. NFC. Adding MC regressions tests to cover the AES and AVXAES ISA sets both 32 and 64 bit. This patch is part of a larger task to cover MC encoding of all X86 ISA Sets. started in revision: https://reviews.llvm.org/D39952 Reviewers: zvi, craig.topper, m_zuckerman, RKSimon Differential Revision: https://reviews.llvm.org/D41154 Change-Id: I2564f9797628d0c070c4766f837f399337fb87d2 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320670 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/MC/X86/AES-32.s b/test/MC/X86/AES-32.s new file mode 100644 index 00000000000..2009806b4e5 --- /dev/null +++ b/test/MC/X86/AES-32.s @@ -0,0 +1,170 @@ +// RUN: llvm-mc -triple i386-unknown-unknown --show-encoding %s | FileCheck %s + +// CHECK: aesdec -485498096(%edx,%eax,4), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xde,0x8c,0x82,0x10,0xe3,0x0f,0xe3] +aesdec -485498096(%edx,%eax,4), %xmm1 + +// CHECK: aesdec 485498096(%edx,%eax,4), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xde,0x8c,0x82,0xf0,0x1c,0xf0,0x1c] +aesdec 485498096(%edx,%eax,4), %xmm1 + +// CHECK: aesdec 485498096(%edx), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xde,0x8a,0xf0,0x1c,0xf0,0x1c] +aesdec 485498096(%edx), %xmm1 + +// CHECK: aesdec 485498096, %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xde,0x0d,0xf0,0x1c,0xf0,0x1c] +aesdec 485498096, %xmm1 + +// CHECK: aesdec 64(%edx,%eax), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xde,0x4c,0x02,0x40] +aesdec 64(%edx,%eax), %xmm1 + +// CHECK: aesdec (%edx), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xde,0x0a] +aesdec (%edx), %xmm1 + +// CHECK: aesdeclast -485498096(%edx,%eax,4), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdf,0x8c,0x82,0x10,0xe3,0x0f,0xe3] +aesdeclast -485498096(%edx,%eax,4), %xmm1 + +// CHECK: aesdeclast 485498096(%edx,%eax,4), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdf,0x8c,0x82,0xf0,0x1c,0xf0,0x1c] +aesdeclast 485498096(%edx,%eax,4), %xmm1 + +// CHECK: aesdeclast 485498096(%edx), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdf,0x8a,0xf0,0x1c,0xf0,0x1c] +aesdeclast 485498096(%edx), %xmm1 + +// CHECK: aesdeclast 485498096, %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdf,0x0d,0xf0,0x1c,0xf0,0x1c] +aesdeclast 485498096, %xmm1 + +// CHECK: aesdeclast 64(%edx,%eax), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdf,0x4c,0x02,0x40] +aesdeclast 64(%edx,%eax), %xmm1 + +// CHECK: aesdeclast (%edx), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdf,0x0a] +aesdeclast (%edx), %xmm1 + +// CHECK: aesdeclast %xmm1, %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdf,0xc9] +aesdeclast %xmm1, %xmm1 + +// CHECK: aesdec %xmm1, %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xde,0xc9] +aesdec %xmm1, %xmm1 + +// CHECK: aesenc -485498096(%edx,%eax,4), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdc,0x8c,0x82,0x10,0xe3,0x0f,0xe3] +aesenc -485498096(%edx,%eax,4), %xmm1 + +// CHECK: aesenc 485498096(%edx,%eax,4), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdc,0x8c,0x82,0xf0,0x1c,0xf0,0x1c] +aesenc 485498096(%edx,%eax,4), %xmm1 + +// CHECK: aesenc 485498096(%edx), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdc,0x8a,0xf0,0x1c,0xf0,0x1c] +aesenc 485498096(%edx), %xmm1 + +// CHECK: aesenc 485498096, %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdc,0x0d,0xf0,0x1c,0xf0,0x1c] +aesenc 485498096, %xmm1 + +// CHECK: aesenc 64(%edx,%eax), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdc,0x4c,0x02,0x40] +aesenc 64(%edx,%eax), %xmm1 + +// CHECK: aesenc (%edx), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdc,0x0a] +aesenc (%edx), %xmm1 + +// CHECK: aesenclast -485498096(%edx,%eax,4), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdd,0x8c,0x82,0x10,0xe3,0x0f,0xe3] +aesenclast -485498096(%edx,%eax,4), %xmm1 + +// CHECK: aesenclast 485498096(%edx,%eax,4), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdd,0x8c,0x82,0xf0,0x1c,0xf0,0x1c] +aesenclast 485498096(%edx,%eax,4), %xmm1 + +// CHECK: aesenclast 485498096(%edx), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdd,0x8a,0xf0,0x1c,0xf0,0x1c] +aesenclast 485498096(%edx), %xmm1 + +// CHECK: aesenclast 485498096, %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdd,0x0d,0xf0,0x1c,0xf0,0x1c] +aesenclast 485498096, %xmm1 + +// CHECK: aesenclast 64(%edx,%eax), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdd,0x4c,0x02,0x40] +aesenclast 64(%edx,%eax), %xmm1 + +// CHECK: aesenclast (%edx), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdd,0x0a] +aesenclast (%edx), %xmm1 + +// CHECK: aesenclast %xmm1, %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdd,0xc9] +aesenclast %xmm1, %xmm1 + +// CHECK: aesenc %xmm1, %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdc,0xc9] +aesenc %xmm1, %xmm1 + +// CHECK: aesimc -485498096(%edx,%eax,4), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdb,0x8c,0x82,0x10,0xe3,0x0f,0xe3] +aesimc -485498096(%edx,%eax,4), %xmm1 + +// CHECK: aesimc 485498096(%edx,%eax,4), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdb,0x8c,0x82,0xf0,0x1c,0xf0,0x1c] +aesimc 485498096(%edx,%eax,4), %xmm1 + +// CHECK: aesimc 485498096(%edx), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdb,0x8a,0xf0,0x1c,0xf0,0x1c] +aesimc 485498096(%edx), %xmm1 + +// CHECK: aesimc 485498096, %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdb,0x0d,0xf0,0x1c,0xf0,0x1c] +aesimc 485498096, %xmm1 + +// CHECK: aesimc 64(%edx,%eax), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdb,0x4c,0x02,0x40] +aesimc 64(%edx,%eax), %xmm1 + +// CHECK: aesimc (%edx), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdb,0x0a] +aesimc (%edx), %xmm1 + +// CHECK: aesimc %xmm1, %xmm1 +// CHECK: encoding: [0x66,0x0f,0x38,0xdb,0xc9] +aesimc %xmm1, %xmm1 + +// CHECK: aeskeygenassist $0, -485498096(%edx,%eax,4), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x3a,0xdf,0x8c,0x82,0x10,0xe3,0x0f,0xe3,0x00] +aeskeygenassist $0, -485498096(%edx,%eax,4), %xmm1 + +// CHECK: aeskeygenassist $0, 485498096(%edx,%eax,4), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x3a,0xdf,0x8c,0x82,0xf0,0x1c,0xf0,0x1c,0x00] +aeskeygenassist $0, 485498096(%edx,%eax,4), %xmm1 + +// CHECK: aeskeygenassist $0, 485498096(%edx), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x3a,0xdf,0x8a,0xf0,0x1c,0xf0,0x1c,0x00] +aeskeygenassist $0, 485498096(%edx), %xmm1 + +// CHECK: aeskeygenassist $0, 485498096, %xmm1 +// CHECK: encoding: [0x66,0x0f,0x3a,0xdf,0x0d,0xf0,0x1c,0xf0,0x1c,0x00] +aeskeygenassist $0, 485498096, %xmm1 + +// CHECK: aeskeygenassist $0, 64(%edx,%eax), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x3a,0xdf,0x4c,0x02,0x40,0x00] +aeskeygenassist $0, 64(%edx,%eax), %xmm1 + +// CHECK: aeskeygenassist $0, (%edx), %xmm1 +// CHECK: encoding: [0x66,0x0f,0x3a,0xdf,0x0a,0x00] +aeskeygenassist $0, (%edx), %xmm1 + +// CHECK: aeskeygenassist $0, %xmm1, %xmm1 +// CHECK: encoding: [0x66,0x0f,0x3a,0xdf,0xc9,0x00] +aeskeygenassist $0, %xmm1, %xmm1 + diff --git a/test/MC/X86/AES-64.s b/test/MC/X86/AES-64.s new file mode 100644 index 00000000000..e451c3c0562 --- /dev/null +++ b/test/MC/X86/AES-64.s @@ -0,0 +1,338 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s + +// CHECK: aesdec 485498096, %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xde,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] +aesdec 485498096, %xmm15 + +// CHECK: aesdec 485498096, %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xde,0x34,0x25,0xf0,0x1c,0xf0,0x1c] +aesdec 485498096, %xmm6 + +// CHECK: aesdec 64(%rdx,%rax,4), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xde,0x7c,0x82,0x40] +aesdec 64(%rdx,%rax,4), %xmm15 + +// CHECK: aesdec -64(%rdx,%rax,4), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xde,0x7c,0x82,0xc0] +aesdec -64(%rdx,%rax,4), %xmm15 + +// CHECK: aesdec 64(%rdx,%rax,4), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xde,0x74,0x82,0x40] +aesdec 64(%rdx,%rax,4), %xmm6 + +// CHECK: aesdec -64(%rdx,%rax,4), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xde,0x74,0x82,0xc0] +aesdec -64(%rdx,%rax,4), %xmm6 + +// CHECK: aesdec 64(%rdx,%rax), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xde,0x7c,0x02,0x40] +aesdec 64(%rdx,%rax), %xmm15 + +// CHECK: aesdec 64(%rdx,%rax), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xde,0x74,0x02,0x40] +aesdec 64(%rdx,%rax), %xmm6 + +// CHECK: aesdec 64(%rdx), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xde,0x7a,0x40] +aesdec 64(%rdx), %xmm15 + +// CHECK: aesdec 64(%rdx), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xde,0x72,0x40] +aesdec 64(%rdx), %xmm6 + +// CHECK: aesdeclast 485498096, %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdf,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] +aesdeclast 485498096, %xmm15 + +// CHECK: aesdeclast 485498096, %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdf,0x34,0x25,0xf0,0x1c,0xf0,0x1c] +aesdeclast 485498096, %xmm6 + +// CHECK: aesdeclast 64(%rdx,%rax,4), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdf,0x7c,0x82,0x40] +aesdeclast 64(%rdx,%rax,4), %xmm15 + +// CHECK: aesdeclast -64(%rdx,%rax,4), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdf,0x7c,0x82,0xc0] +aesdeclast -64(%rdx,%rax,4), %xmm15 + +// CHECK: aesdeclast 64(%rdx,%rax,4), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdf,0x74,0x82,0x40] +aesdeclast 64(%rdx,%rax,4), %xmm6 + +// CHECK: aesdeclast -64(%rdx,%rax,4), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdf,0x74,0x82,0xc0] +aesdeclast -64(%rdx,%rax,4), %xmm6 + +// CHECK: aesdeclast 64(%rdx,%rax), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdf,0x7c,0x02,0x40] +aesdeclast 64(%rdx,%rax), %xmm15 + +// CHECK: aesdeclast 64(%rdx,%rax), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdf,0x74,0x02,0x40] +aesdeclast 64(%rdx,%rax), %xmm6 + +// CHECK: aesdeclast 64(%rdx), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdf,0x7a,0x40] +aesdeclast 64(%rdx), %xmm15 + +// CHECK: aesdeclast 64(%rdx), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdf,0x72,0x40] +aesdeclast 64(%rdx), %xmm6 + +// CHECK: aesdeclast (%rdx), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdf,0x3a] +aesdeclast (%rdx), %xmm15 + +// CHECK: aesdeclast (%rdx), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdf,0x32] +aesdeclast (%rdx), %xmm6 + +// CHECK: aesdeclast %xmm15, %xmm15 +// CHECK: encoding: [0x66,0x45,0x0f,0x38,0xdf,0xff] +aesdeclast %xmm15, %xmm15 + +// CHECK: aesdeclast %xmm6, %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdf,0xf6] +aesdeclast %xmm6, %xmm6 + +// CHECK: aesdec (%rdx), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xde,0x3a] +aesdec (%rdx), %xmm15 + +// CHECK: aesdec (%rdx), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xde,0x32] +aesdec (%rdx), %xmm6 + +// CHECK: aesdec %xmm15, %xmm15 +// CHECK: encoding: [0x66,0x45,0x0f,0x38,0xde,0xff] +aesdec %xmm15, %xmm15 + +// CHECK: aesdec %xmm6, %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xde,0xf6] +aesdec %xmm6, %xmm6 + +// CHECK: aesenc 485498096, %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdc,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] +aesenc 485498096, %xmm15 + +// CHECK: aesenc 485498096, %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdc,0x34,0x25,0xf0,0x1c,0xf0,0x1c] +aesenc 485498096, %xmm6 + +// CHECK: aesenc 64(%rdx,%rax,4), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdc,0x7c,0x82,0x40] +aesenc 64(%rdx,%rax,4), %xmm15 + +// CHECK: aesenc -64(%rdx,%rax,4), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdc,0x7c,0x82,0xc0] +aesenc -64(%rdx,%rax,4), %xmm15 + +// CHECK: aesenc 64(%rdx,%rax,4), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdc,0x74,0x82,0x40] +aesenc 64(%rdx,%rax,4), %xmm6 + +// CHECK: aesenc -64(%rdx,%rax,4), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdc,0x74,0x82,0xc0] +aesenc -64(%rdx,%rax,4), %xmm6 + +// CHECK: aesenc 64(%rdx,%rax), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdc,0x7c,0x02,0x40] +aesenc 64(%rdx,%rax), %xmm15 + +// CHECK: aesenc 64(%rdx,%rax), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdc,0x74,0x02,0x40] +aesenc 64(%rdx,%rax), %xmm6 + +// CHECK: aesenc 64(%rdx), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdc,0x7a,0x40] +aesenc 64(%rdx), %xmm15 + +// CHECK: aesenc 64(%rdx), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdc,0x72,0x40] +aesenc 64(%rdx), %xmm6 + +// CHECK: aesenclast 485498096, %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdd,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] +aesenclast 485498096, %xmm15 + +// CHECK: aesenclast 485498096, %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdd,0x34,0x25,0xf0,0x1c,0xf0,0x1c] +aesenclast 485498096, %xmm6 + +// CHECK: aesenclast 64(%rdx,%rax,4), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdd,0x7c,0x82,0x40] +aesenclast 64(%rdx,%rax,4), %xmm15 + +// CHECK: aesenclast -64(%rdx,%rax,4), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdd,0x7c,0x82,0xc0] +aesenclast -64(%rdx,%rax,4), %xmm15 + +// CHECK: aesenclast 64(%rdx,%rax,4), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdd,0x74,0x82,0x40] +aesenclast 64(%rdx,%rax,4), %xmm6 + +// CHECK: aesenclast -64(%rdx,%rax,4), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdd,0x74,0x82,0xc0] +aesenclast -64(%rdx,%rax,4), %xmm6 + +// CHECK: aesenclast 64(%rdx,%rax), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdd,0x7c,0x02,0x40] +aesenclast 64(%rdx,%rax), %xmm15 + +// CHECK: aesenclast 64(%rdx,%rax), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdd,0x74,0x02,0x40] +aesenclast 64(%rdx,%rax), %xmm6 + +// CHECK: aesenclast 64(%rdx), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdd,0x7a,0x40] +aesenclast 64(%rdx), %xmm15 + +// CHECK: aesenclast 64(%rdx), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdd,0x72,0x40] +aesenclast 64(%rdx), %xmm6 + +// CHECK: aesenclast (%rdx), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdd,0x3a] +aesenclast (%rdx), %xmm15 + +// CHECK: aesenclast (%rdx), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdd,0x32] +aesenclast (%rdx), %xmm6 + +// CHECK: aesenclast %xmm15, %xmm15 +// CHECK: encoding: [0x66,0x45,0x0f,0x38,0xdd,0xff] +aesenclast %xmm15, %xmm15 + +// CHECK: aesenclast %xmm6, %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdd,0xf6] +aesenclast %xmm6, %xmm6 + +// CHECK: aesenc (%rdx), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdc,0x3a] +aesenc (%rdx), %xmm15 + +// CHECK: aesenc (%rdx), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdc,0x32] +aesenc (%rdx), %xmm6 + +// CHECK: aesenc %xmm15, %xmm15 +// CHECK: encoding: [0x66,0x45,0x0f,0x38,0xdc,0xff] +aesenc %xmm15, %xmm15 + +// CHECK: aesenc %xmm6, %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdc,0xf6] +aesenc %xmm6, %xmm6 + +// CHECK: aesimc 485498096, %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdb,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] +aesimc 485498096, %xmm15 + +// CHECK: aesimc 485498096, %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdb,0x34,0x25,0xf0,0x1c,0xf0,0x1c] +aesimc 485498096, %xmm6 + +// CHECK: aesimc 64(%rdx,%rax,4), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdb,0x7c,0x82,0x40] +aesimc 64(%rdx,%rax,4), %xmm15 + +// CHECK: aesimc -64(%rdx,%rax,4), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdb,0x7c,0x82,0xc0] +aesimc -64(%rdx,%rax,4), %xmm15 + +// CHECK: aesimc 64(%rdx,%rax,4), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdb,0x74,0x82,0x40] +aesimc 64(%rdx,%rax,4), %xmm6 + +// CHECK: aesimc -64(%rdx,%rax,4), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdb,0x74,0x82,0xc0] +aesimc -64(%rdx,%rax,4), %xmm6 + +// CHECK: aesimc 64(%rdx,%rax), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdb,0x7c,0x02,0x40] +aesimc 64(%rdx,%rax), %xmm15 + +// CHECK: aesimc 64(%rdx,%rax), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdb,0x74,0x02,0x40] +aesimc 64(%rdx,%rax), %xmm6 + +// CHECK: aesimc 64(%rdx), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdb,0x7a,0x40] +aesimc 64(%rdx), %xmm15 + +// CHECK: aesimc 64(%rdx), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdb,0x72,0x40] +aesimc 64(%rdx), %xmm6 + +// CHECK: aesimc (%rdx), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x38,0xdb,0x3a] +aesimc (%rdx), %xmm15 + +// CHECK: aesimc (%rdx), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdb,0x32] +aesimc (%rdx), %xmm6 + +// CHECK: aesimc %xmm15, %xmm15 +// CHECK: encoding: [0x66,0x45,0x0f,0x38,0xdb,0xff] +aesimc %xmm15, %xmm15 + +// CHECK: aesimc %xmm6, %xmm6 +// CHECK: encoding: [0x66,0x0f,0x38,0xdb,0xf6] +aesimc %xmm6, %xmm6 + +// CHECK: aeskeygenassist $0, 485498096, %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x3a,0xdf,0x3c,0x25,0xf0,0x1c,0xf0,0x1c,0x00] +aeskeygenassist $0, 485498096, %xmm15 + +// CHECK: aeskeygenassist $0, 485498096, %xmm6 +// CHECK: encoding: [0x66,0x0f,0x3a,0xdf,0x34,0x25,0xf0,0x1c,0xf0,0x1c,0x00] +aeskeygenassist $0, 485498096, %xmm6 + +// CHECK: aeskeygenassist $0, 64(%rdx,%rax,4), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x3a,0xdf,0x7c,0x82,0x40,0x00] +aeskeygenassist $0, 64(%rdx,%rax,4), %xmm15 + +// CHECK: aeskeygenassist $0, -64(%rdx,%rax,4), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x3a,0xdf,0x7c,0x82,0xc0,0x00] +aeskeygenassist $0, -64(%rdx,%rax,4), %xmm15 + +// CHECK: aeskeygenassist $0, 64(%rdx,%rax,4), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x3a,0xdf,0x74,0x82,0x40,0x00] +aeskeygenassist $0, 64(%rdx,%rax,4), %xmm6 + +// CHECK: aeskeygenassist $0, -64(%rdx,%rax,4), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x3a,0xdf,0x74,0x82,0xc0,0x00] +aeskeygenassist $0, -64(%rdx,%rax,4), %xmm6 + +// CHECK: aeskeygenassist $0, 64(%rdx,%rax), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x3a,0xdf,0x7c,0x02,0x40,0x00] +aeskeygenassist $0, 64(%rdx,%rax), %xmm15 + +// CHECK: aeskeygenassist $0, 64(%rdx,%rax), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x3a,0xdf,0x74,0x02,0x40,0x00] +aeskeygenassist $0, 64(%rdx,%rax), %xmm6 + +// CHECK: aeskeygenassist $0, 64(%rdx), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x3a,0xdf,0x7a,0x40,0x00] +aeskeygenassist $0, 64(%rdx), %xmm15 + +// CHECK: aeskeygenassist $0, 64(%rdx), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x3a,0xdf,0x72,0x40,0x00] +aeskeygenassist $0, 64(%rdx), %xmm6 + +// CHECK: aeskeygenassist $0, (%rdx), %xmm15 +// CHECK: encoding: [0x66,0x44,0x0f,0x3a,0xdf,0x3a,0x00] +aeskeygenassist $0, (%rdx), %xmm15 + +// CHECK: aeskeygenassist $0, (%rdx), %xmm6 +// CHECK: encoding: [0x66,0x0f,0x3a,0xdf,0x32,0x00] +aeskeygenassist $0, (%rdx), %xmm6 + +// CHECK: aeskeygenassist $0, %xmm15, %xmm15 +// CHECK: encoding: [0x66,0x45,0x0f,0x3a,0xdf,0xff,0x00] +aeskeygenassist $0, %xmm15, %xmm15 + +// CHECK: aeskeygenassist $0, %xmm6, %xmm6 +// CHECK: encoding: [0x66,0x0f,0x3a,0xdf,0xf6,0x00] +aeskeygenassist $0, %xmm6, %xmm6 + diff --git a/test/MC/X86/AVXAES-32.s b/test/MC/X86/AVXAES-32.s new file mode 100644 index 00000000000..5063d836739 --- /dev/null +++ b/test/MC/X86/AVXAES-32.s @@ -0,0 +1,170 @@ +// RUN: llvm-mc -triple i386-unknown-unknown --show-encoding %s | FileCheck %s + +// CHECK: vaesdec -485498096(%edx,%eax,4), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xde,0x8c,0x82,0x10,0xe3,0x0f,0xe3] +vaesdec -485498096(%edx,%eax,4), %xmm1, %xmm1 + +// CHECK: vaesdec 485498096(%edx,%eax,4), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xde,0x8c,0x82,0xf0,0x1c,0xf0,0x1c] +vaesdec 485498096(%edx,%eax,4), %xmm1, %xmm1 + +// CHECK: vaesdec 485498096(%edx), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xde,0x8a,0xf0,0x1c,0xf0,0x1c] +vaesdec 485498096(%edx), %xmm1, %xmm1 + +// CHECK: vaesdec 485498096, %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xde,0x0d,0xf0,0x1c,0xf0,0x1c] +vaesdec 485498096, %xmm1, %xmm1 + +// CHECK: vaesdec 64(%edx,%eax), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xde,0x4c,0x02,0x40] +vaesdec 64(%edx,%eax), %xmm1, %xmm1 + +// CHECK: vaesdec (%edx), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xde,0x0a] +vaesdec (%edx), %xmm1, %xmm1 + +// CHECK: vaesdeclast -485498096(%edx,%eax,4), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdf,0x8c,0x82,0x10,0xe3,0x0f,0xe3] +vaesdeclast -485498096(%edx,%eax,4), %xmm1, %xmm1 + +// CHECK: vaesdeclast 485498096(%edx,%eax,4), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdf,0x8c,0x82,0xf0,0x1c,0xf0,0x1c] +vaesdeclast 485498096(%edx,%eax,4), %xmm1, %xmm1 + +// CHECK: vaesdeclast 485498096(%edx), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdf,0x8a,0xf0,0x1c,0xf0,0x1c] +vaesdeclast 485498096(%edx), %xmm1, %xmm1 + +// CHECK: vaesdeclast 485498096, %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdf,0x0d,0xf0,0x1c,0xf0,0x1c] +vaesdeclast 485498096, %xmm1, %xmm1 + +// CHECK: vaesdeclast 64(%edx,%eax), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdf,0x4c,0x02,0x40] +vaesdeclast 64(%edx,%eax), %xmm1, %xmm1 + +// CHECK: vaesdeclast (%edx), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdf,0x0a] +vaesdeclast (%edx), %xmm1, %xmm1 + +// CHECK: vaesdeclast %xmm1, %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdf,0xc9] +vaesdeclast %xmm1, %xmm1, %xmm1 + +// CHECK: vaesdec %xmm1, %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xde,0xc9] +vaesdec %xmm1, %xmm1, %xmm1 + +// CHECK: vaesenc -485498096(%edx,%eax,4), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdc,0x8c,0x82,0x10,0xe3,0x0f,0xe3] +vaesenc -485498096(%edx,%eax,4), %xmm1, %xmm1 + +// CHECK: vaesenc 485498096(%edx,%eax,4), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdc,0x8c,0x82,0xf0,0x1c,0xf0,0x1c] +vaesenc 485498096(%edx,%eax,4), %xmm1, %xmm1 + +// CHECK: vaesenc 485498096(%edx), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdc,0x8a,0xf0,0x1c,0xf0,0x1c] +vaesenc 485498096(%edx), %xmm1, %xmm1 + +// CHECK: vaesenc 485498096, %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdc,0x0d,0xf0,0x1c,0xf0,0x1c] +vaesenc 485498096, %xmm1, %xmm1 + +// CHECK: vaesenc 64(%edx,%eax), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdc,0x4c,0x02,0x40] +vaesenc 64(%edx,%eax), %xmm1, %xmm1 + +// CHECK: vaesenc (%edx), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdc,0x0a] +vaesenc (%edx), %xmm1, %xmm1 + +// CHECK: vaesenclast -485498096(%edx,%eax,4), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdd,0x8c,0x82,0x10,0xe3,0x0f,0xe3] +vaesenclast -485498096(%edx,%eax,4), %xmm1, %xmm1 + +// CHECK: vaesenclast 485498096(%edx,%eax,4), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdd,0x8c,0x82,0xf0,0x1c,0xf0,0x1c] +vaesenclast 485498096(%edx,%eax,4), %xmm1, %xmm1 + +// CHECK: vaesenclast 485498096(%edx), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdd,0x8a,0xf0,0x1c,0xf0,0x1c] +vaesenclast 485498096(%edx), %xmm1, %xmm1 + +// CHECK: vaesenclast 485498096, %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdd,0x0d,0xf0,0x1c,0xf0,0x1c] +vaesenclast 485498096, %xmm1, %xmm1 + +// CHECK: vaesenclast 64(%edx,%eax), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdd,0x4c,0x02,0x40] +vaesenclast 64(%edx,%eax), %xmm1, %xmm1 + +// CHECK: vaesenclast (%edx), %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdd,0x0a] +vaesenclast (%edx), %xmm1, %xmm1 + +// CHECK: vaesenclast %xmm1, %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdd,0xc9] +vaesenclast %xmm1, %xmm1, %xmm1 + +// CHECK: vaesenc %xmm1, %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x71,0xdc,0xc9] +vaesenc %xmm1, %xmm1, %xmm1 + +// CHECK: vaesimc -485498096(%edx,%eax,4), %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x79,0xdb,0x8c,0x82,0x10,0xe3,0x0f,0xe3] +vaesimc -485498096(%edx,%eax,4), %xmm1 + +// CHECK: vaesimc 485498096(%edx,%eax,4), %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x79,0xdb,0x8c,0x82,0xf0,0x1c,0xf0,0x1c] +vaesimc 485498096(%edx,%eax,4), %xmm1 + +// CHECK: vaesimc 485498096(%edx), %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x79,0xdb,0x8a,0xf0,0x1c,0xf0,0x1c] +vaesimc 485498096(%edx), %xmm1 + +// CHECK: vaesimc 485498096, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x79,0xdb,0x0d,0xf0,0x1c,0xf0,0x1c] +vaesimc 485498096, %xmm1 + +// CHECK: vaesimc 64(%edx,%eax), %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x79,0xdb,0x4c,0x02,0x40] +vaesimc 64(%edx,%eax), %xmm1 + +// CHECK: vaesimc (%edx), %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x79,0xdb,0x0a] +vaesimc (%edx), %xmm1 + +// CHECK: vaesimc %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe2,0x79,0xdb,0xc9] +vaesimc %xmm1, %xmm1 + +// CHECK: vaeskeygenassist $0, -485498096(%edx,%eax,4), %xmm1 +// CHECK: encoding: [0xc4,0xe3,0x79,0xdf,0x8c,0x82,0x10,0xe3,0x0f,0xe3,0x00] +vaeskeygenassist $0, -485498096(%edx,%eax,4), %xmm1 + +// CHECK: vaeskeygenassist $0, 485498096(%edx,%eax,4), %xmm1 +// CHECK: encoding: [0xc4,0xe3,0x79,0xdf,0x8c,0x82,0xf0,0x1c,0xf0,0x1c,0x00] +vaeskeygenassist $0, 485498096(%edx,%eax,4), %xmm1 + +// CHECK: vaeskeygenassist $0, 485498096(%edx), %xmm1 +// CHECK: encoding: [0xc4,0xe3,0x79,0xdf,0x8a,0xf0,0x1c,0xf0,0x1c,0x00] +vaeskeygenassist $0, 485498096(%edx), %xmm1 + +// CHECK: vaeskeygenassist $0, 485498096, %xmm1 +// CHECK: encoding: [0xc4,0xe3,0x79,0xdf,0x0d,0xf0,0x1c,0xf0,0x1c,0x00] +vaeskeygenassist $0, 485498096, %xmm1 + +// CHECK: vaeskeygenassist $0, 64(%edx,%eax), %xmm1 +// CHECK: encoding: [0xc4,0xe3,0x79,0xdf,0x4c,0x02,0x40,0x00] +vaeskeygenassist $0, 64(%edx,%eax), %xmm1 + +// CHECK: vaeskeygenassist $0, (%edx), %xmm1 +// CHECK: encoding: [0xc4,0xe3,0x79,0xdf,0x0a,0x00] +vaeskeygenassist $0, (%edx), %xmm1 + +// CHECK: vaeskeygenassist $0, %xmm1, %xmm1 +// CHECK: encoding: [0xc4,0xe3,0x79,0xdf,0xc9,0x00] +vaeskeygenassist $0, %xmm1, %xmm1 + diff --git a/test/MC/X86/AVXAES-64.s b/test/MC/X86/AVXAES-64.s new file mode 100644 index 00000000000..6e648f9906b --- /dev/null +++ b/test/MC/X86/AVXAES-64.s @@ -0,0 +1,338 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s + +// CHECK: vaesdec 485498096, %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xde,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] +vaesdec 485498096, %xmm15, %xmm15 + +// CHECK: vaesdec 485498096, %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xde,0x34,0x25,0xf0,0x1c,0xf0,0x1c] +vaesdec 485498096, %xmm6, %xmm6 + +// CHECK: vaesdec 64(%rdx,%rax,4), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xde,0x7c,0x82,0x40] +vaesdec 64(%rdx,%rax,4), %xmm15, %xmm15 + +// CHECK: vaesdec -64(%rdx,%rax,4), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xde,0x7c,0x82,0xc0] +vaesdec -64(%rdx,%rax,4), %xmm15, %xmm15 + +// CHECK: vaesdec 64(%rdx,%rax,4), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xde,0x74,0x82,0x40] +vaesdec 64(%rdx,%rax,4), %xmm6, %xmm6 + +// CHECK: vaesdec -64(%rdx,%rax,4), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xde,0x74,0x82,0xc0] +vaesdec -64(%rdx,%rax,4), %xmm6, %xmm6 + +// CHECK: vaesdec 64(%rdx,%rax), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xde,0x7c,0x02,0x40] +vaesdec 64(%rdx,%rax), %xmm15, %xmm15 + +// CHECK: vaesdec 64(%rdx,%rax), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xde,0x74,0x02,0x40] +vaesdec 64(%rdx,%rax), %xmm6, %xmm6 + +// CHECK: vaesdec 64(%rdx), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xde,0x7a,0x40] +vaesdec 64(%rdx), %xmm15, %xmm15 + +// CHECK: vaesdec 64(%rdx), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xde,0x72,0x40] +vaesdec 64(%rdx), %xmm6, %xmm6 + +// CHECK: vaesdeclast 485498096, %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdf,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] +vaesdeclast 485498096, %xmm15, %xmm15 + +// CHECK: vaesdeclast 485498096, %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdf,0x34,0x25,0xf0,0x1c,0xf0,0x1c] +vaesdeclast 485498096, %xmm6, %xmm6 + +// CHECK: vaesdeclast 64(%rdx,%rax,4), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdf,0x7c,0x82,0x40] +vaesdeclast 64(%rdx,%rax,4), %xmm15, %xmm15 + +// CHECK: vaesdeclast -64(%rdx,%rax,4), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdf,0x7c,0x82,0xc0] +vaesdeclast -64(%rdx,%rax,4), %xmm15, %xmm15 + +// CHECK: vaesdeclast 64(%rdx,%rax,4), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdf,0x74,0x82,0x40] +vaesdeclast 64(%rdx,%rax,4), %xmm6, %xmm6 + +// CHECK: vaesdeclast -64(%rdx,%rax,4), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdf,0x74,0x82,0xc0] +vaesdeclast -64(%rdx,%rax,4), %xmm6, %xmm6 + +// CHECK: vaesdeclast 64(%rdx,%rax), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdf,0x7c,0x02,0x40] +vaesdeclast 64(%rdx,%rax), %xmm15, %xmm15 + +// CHECK: vaesdeclast 64(%rdx,%rax), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdf,0x74,0x02,0x40] +vaesdeclast 64(%rdx,%rax), %xmm6, %xmm6 + +// CHECK: vaesdeclast 64(%rdx), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdf,0x7a,0x40] +vaesdeclast 64(%rdx), %xmm15, %xmm15 + +// CHECK: vaesdeclast 64(%rdx), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdf,0x72,0x40] +vaesdeclast 64(%rdx), %xmm6, %xmm6 + +// CHECK: vaesdeclast (%rdx), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdf,0x3a] +vaesdeclast (%rdx), %xmm15, %xmm15 + +// CHECK: vaesdeclast (%rdx), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdf,0x32] +vaesdeclast (%rdx), %xmm6, %xmm6 + +// CHECK: vaesdeclast %xmm15, %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x42,0x01,0xdf,0xff] +vaesdeclast %xmm15, %xmm15, %xmm15 + +// CHECK: vaesdeclast %xmm6, %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdf,0xf6] +vaesdeclast %xmm6, %xmm6, %xmm6 + +// CHECK: vaesdec (%rdx), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xde,0x3a] +vaesdec (%rdx), %xmm15, %xmm15 + +// CHECK: vaesdec (%rdx), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xde,0x32] +vaesdec (%rdx), %xmm6, %xmm6 + +// CHECK: vaesdec %xmm15, %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x42,0x01,0xde,0xff] +vaesdec %xmm15, %xmm15, %xmm15 + +// CHECK: vaesdec %xmm6, %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xde,0xf6] +vaesdec %xmm6, %xmm6, %xmm6 + +// CHECK: vaesenc 485498096, %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdc,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] +vaesenc 485498096, %xmm15, %xmm15 + +// CHECK: vaesenc 485498096, %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdc,0x34,0x25,0xf0,0x1c,0xf0,0x1c] +vaesenc 485498096, %xmm6, %xmm6 + +// CHECK: vaesenc 64(%rdx,%rax,4), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdc,0x7c,0x82,0x40] +vaesenc 64(%rdx,%rax,4), %xmm15, %xmm15 + +// CHECK: vaesenc -64(%rdx,%rax,4), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdc,0x7c,0x82,0xc0] +vaesenc -64(%rdx,%rax,4), %xmm15, %xmm15 + +// CHECK: vaesenc 64(%rdx,%rax,4), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdc,0x74,0x82,0x40] +vaesenc 64(%rdx,%rax,4), %xmm6, %xmm6 + +// CHECK: vaesenc -64(%rdx,%rax,4), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdc,0x74,0x82,0xc0] +vaesenc -64(%rdx,%rax,4), %xmm6, %xmm6 + +// CHECK: vaesenc 64(%rdx,%rax), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdc,0x7c,0x02,0x40] +vaesenc 64(%rdx,%rax), %xmm15, %xmm15 + +// CHECK: vaesenc 64(%rdx,%rax), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdc,0x74,0x02,0x40] +vaesenc 64(%rdx,%rax), %xmm6, %xmm6 + +// CHECK: vaesenc 64(%rdx), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdc,0x7a,0x40] +vaesenc 64(%rdx), %xmm15, %xmm15 + +// CHECK: vaesenc 64(%rdx), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdc,0x72,0x40] +vaesenc 64(%rdx), %xmm6, %xmm6 + +// CHECK: vaesenclast 485498096, %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdd,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] +vaesenclast 485498096, %xmm15, %xmm15 + +// CHECK: vaesenclast 485498096, %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdd,0x34,0x25,0xf0,0x1c,0xf0,0x1c] +vaesenclast 485498096, %xmm6, %xmm6 + +// CHECK: vaesenclast 64(%rdx,%rax,4), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdd,0x7c,0x82,0x40] +vaesenclast 64(%rdx,%rax,4), %xmm15, %xmm15 + +// CHECK: vaesenclast -64(%rdx,%rax,4), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdd,0x7c,0x82,0xc0] +vaesenclast -64(%rdx,%rax,4), %xmm15, %xmm15 + +// CHECK: vaesenclast 64(%rdx,%rax,4), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdd,0x74,0x82,0x40] +vaesenclast 64(%rdx,%rax,4), %xmm6, %xmm6 + +// CHECK: vaesenclast -64(%rdx,%rax,4), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdd,0x74,0x82,0xc0] +vaesenclast -64(%rdx,%rax,4), %xmm6, %xmm6 + +// CHECK: vaesenclast 64(%rdx,%rax), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdd,0x7c,0x02,0x40] +vaesenclast 64(%rdx,%rax), %xmm15, %xmm15 + +// CHECK: vaesenclast 64(%rdx,%rax), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdd,0x74,0x02,0x40] +vaesenclast 64(%rdx,%rax), %xmm6, %xmm6 + +// CHECK: vaesenclast 64(%rdx), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdd,0x7a,0x40] +vaesenclast 64(%rdx), %xmm15, %xmm15 + +// CHECK: vaesenclast 64(%rdx), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdd,0x72,0x40] +vaesenclast 64(%rdx), %xmm6, %xmm6 + +// CHECK: vaesenclast (%rdx), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdd,0x3a] +vaesenclast (%rdx), %xmm15, %xmm15 + +// CHECK: vaesenclast (%rdx), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdd,0x32] +vaesenclast (%rdx), %xmm6, %xmm6 + +// CHECK: vaesenclast %xmm15, %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x42,0x01,0xdd,0xff] +vaesenclast %xmm15, %xmm15, %xmm15 + +// CHECK: vaesenclast %xmm6, %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdd,0xf6] +vaesenclast %xmm6, %xmm6, %xmm6 + +// CHECK: vaesenc (%rdx), %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x01,0xdc,0x3a] +vaesenc (%rdx), %xmm15, %xmm15 + +// CHECK: vaesenc (%rdx), %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdc,0x32] +vaesenc (%rdx), %xmm6, %xmm6 + +// CHECK: vaesenc %xmm15, %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x42,0x01,0xdc,0xff] +vaesenc %xmm15, %xmm15, %xmm15 + +// CHECK: vaesenc %xmm6, %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x49,0xdc,0xf6] +vaesenc %xmm6, %xmm6, %xmm6 + +// CHECK: vaesimc 485498096, %xmm15 +// CHECK: encoding: [0xc4,0x62,0x79,0xdb,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] +vaesimc 485498096, %xmm15 + +// CHECK: vaesimc 485498096, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x79,0xdb,0x34,0x25,0xf0,0x1c,0xf0,0x1c] +vaesimc 485498096, %xmm6 + +// CHECK: vaesimc 64(%rdx,%rax,4), %xmm15 +// CHECK: encoding: [0xc4,0x62,0x79,0xdb,0x7c,0x82,0x40] +vaesimc 64(%rdx,%rax,4), %xmm15 + +// CHECK: vaesimc -64(%rdx,%rax,4), %xmm15 +// CHECK: encoding: [0xc4,0x62,0x79,0xdb,0x7c,0x82,0xc0] +vaesimc -64(%rdx,%rax,4), %xmm15 + +// CHECK: vaesimc 64(%rdx,%rax,4), %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x79,0xdb,0x74,0x82,0x40] +vaesimc 64(%rdx,%rax,4), %xmm6 + +// CHECK: vaesimc -64(%rdx,%rax,4), %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x79,0xdb,0x74,0x82,0xc0] +vaesimc -64(%rdx,%rax,4), %xmm6 + +// CHECK: vaesimc 64(%rdx,%rax), %xmm15 +// CHECK: encoding: [0xc4,0x62,0x79,0xdb,0x7c,0x02,0x40] +vaesimc 64(%rdx,%rax), %xmm15 + +// CHECK: vaesimc 64(%rdx,%rax), %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x79,0xdb,0x74,0x02,0x40] +vaesimc 64(%rdx,%rax), %xmm6 + +// CHECK: vaesimc 64(%rdx), %xmm15 +// CHECK: encoding: [0xc4,0x62,0x79,0xdb,0x7a,0x40] +vaesimc 64(%rdx), %xmm15 + +// CHECK: vaesimc 64(%rdx), %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x79,0xdb,0x72,0x40] +vaesimc 64(%rdx), %xmm6 + +// CHECK: vaesimc (%rdx), %xmm15 +// CHECK: encoding: [0xc4,0x62,0x79,0xdb,0x3a] +vaesimc (%rdx), %xmm15 + +// CHECK: vaesimc (%rdx), %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x79,0xdb,0x32] +vaesimc (%rdx), %xmm6 + +// CHECK: vaesimc %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x42,0x79,0xdb,0xff] +vaesimc %xmm15, %xmm15 + +// CHECK: vaesimc %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe2,0x79,0xdb,0xf6] +vaesimc %xmm6, %xmm6 + +// CHECK: vaeskeygenassist $0, 485498096, %xmm15 +// CHECK: encoding: [0xc4,0x63,0x79,0xdf,0x3c,0x25,0xf0,0x1c,0xf0,0x1c,0x00] +vaeskeygenassist $0, 485498096, %xmm15 + +// CHECK: vaeskeygenassist $0, 485498096, %xmm6 +// CHECK: encoding: [0xc4,0xe3,0x79,0xdf,0x34,0x25,0xf0,0x1c,0xf0,0x1c,0x00] +vaeskeygenassist $0, 485498096, %xmm6 + +// CHECK: vaeskeygenassist $0, 64(%rdx,%rax,4), %xmm15 +// CHECK: encoding: [0xc4,0x63,0x79,0xdf,0x7c,0x82,0x40,0x00] +vaeskeygenassist $0, 64(%rdx,%rax,4), %xmm15 + +// CHECK: vaeskeygenassist $0, -64(%rdx,%rax,4), %xmm15 +// CHECK: encoding: [0xc4,0x63,0x79,0xdf,0x7c,0x82,0xc0,0x00] +vaeskeygenassist $0, -64(%rdx,%rax,4), %xmm15 + +// CHECK: vaeskeygenassist $0, 64(%rdx,%rax,4), %xmm6 +// CHECK: encoding: [0xc4,0xe3,0x79,0xdf,0x74,0x82,0x40,0x00] +vaeskeygenassist $0, 64(%rdx,%rax,4), %xmm6 + +// CHECK: vaeskeygenassist $0, -64(%rdx,%rax,4), %xmm6 +// CHECK: encoding: [0xc4,0xe3,0x79,0xdf,0x74,0x82,0xc0,0x00] +vaeskeygenassist $0, -64(%rdx,%rax,4), %xmm6 + +// CHECK: vaeskeygenassist $0, 64(%rdx,%rax), %xmm15 +// CHECK: encoding: [0xc4,0x63,0x79,0xdf,0x7c,0x02,0x40,0x00] +vaeskeygenassist $0, 64(%rdx,%rax), %xmm15 + +// CHECK: vaeskeygenassist $0, 64(%rdx,%rax), %xmm6 +// CHECK: encoding: [0xc4,0xe3,0x79,0xdf,0x74,0x02,0x40,0x00] +vaeskeygenassist $0, 64(%rdx,%rax), %xmm6 + +// CHECK: vaeskeygenassist $0, 64(%rdx), %xmm15 +// CHECK: encoding: [0xc4,0x63,0x79,0xdf,0x7a,0x40,0x00] +vaeskeygenassist $0, 64(%rdx), %xmm15 + +// CHECK: vaeskeygenassist $0, 64(%rdx), %xmm6 +// CHECK: encoding: [0xc4,0xe3,0x79,0xdf,0x72,0x40,0x00] +vaeskeygenassist $0, 64(%rdx), %xmm6 + +// CHECK: vaeskeygenassist $0, (%rdx), %xmm15 +// CHECK: encoding: [0xc4,0x63,0x79,0xdf,0x3a,0x00] +vaeskeygenassist $0, (%rdx), %xmm15 + +// CHECK: vaeskeygenassist $0, (%rdx), %xmm6 +// CHECK: encoding: [0xc4,0xe3,0x79,0xdf,0x32,0x00] +vaeskeygenassist $0, (%rdx), %xmm6 + +// CHECK: vaeskeygenassist $0, %xmm15, %xmm15 +// CHECK: encoding: [0xc4,0x43,0x79,0xdf,0xff,0x00] +vaeskeygenassist $0, %xmm15, %xmm15 + +// CHECK: vaeskeygenassist $0, %xmm6, %xmm6 +// CHECK: encoding: [0xc4,0xe3,0x79,0xdf,0xf6,0x00] +vaeskeygenassist $0, %xmm6, %xmm6 +