1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 12:12:47 +01:00
llvm-mirror/test/MC/X86/KEYLOCKER/x86-64-keylocker-att.s
Xiang1 Zhang 92910706f0 [X86] Support Intel Key Locker
Key Locker provides a mechanism to encrypt and decrypt data with an AES key without having access
to the raw key value by converting AES keys into “handles”. These handles can be used to perform the
same encryption and decryption operations as the original AES keys, but they only work on the current
system and only until they are revoked. If software revokes Key Locker handles (e.g., on a reboot),
then any previous handles can no longer be used.

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D88398
2020-09-30 18:08:45 +08:00

206 lines
8.2 KiB
ArmAsm

// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s
// CHECK: aesdec128kl 268435456(%rbp,%r14,8), %xmm6
// CHECK: encoding: [0xf3,0x42,0x0f,0x38,0xdd,0xb4,0xf5,0x00,0x00,0x00,0x10]
aesdec128kl 268435456(%rbp,%r14,8), %xmm6
// CHECK: aesdec128kl 291(%r8,%rax,4), %xmm6
// CHECK: encoding: [0xf3,0x41,0x0f,0x38,0xdd,0xb4,0x80,0x23,0x01,0x00,0x00]
aesdec128kl 291(%r8,%rax,4), %xmm6
// CHECK: aesdec128kl (%rip), %xmm6
// CHECK: encoding: [0xf3,0x0f,0x38,0xdd,0x35,0x00,0x00,0x00,0x00]
aesdec128kl (%rip), %xmm6
// CHECK: aesdec128kl -1536(,%rbp,2), %xmm6
// CHECK: encoding: [0xf3,0x0f,0x38,0xdd,0x34,0x6d,0x00,0xfa,0xff,0xff]
aesdec128kl -1536(,%rbp,2), %xmm6
// CHECK: aesdec128kl 6096(%rcx), %xmm6
// CHECK: encoding: [0xf3,0x0f,0x38,0xdd,0xb1,0xd0,0x17,0x00,0x00]
aesdec128kl 6096(%rcx), %xmm6
// CHECK: aesdec128kl -6144(%rdx), %xmm6
// CHECK: encoding: [0xf3,0x0f,0x38,0xdd,0xb2,0x00,0xe8,0xff,0xff]
aesdec128kl -6144(%rdx), %xmm6
// CHECK: aesdec256kl 268435456(%rbp,%r14,8), %xmm6
// CHECK: encoding: [0xf3,0x42,0x0f,0x38,0xdf,0xb4,0xf5,0x00,0x00,0x00,0x10]
aesdec256kl 268435456(%rbp,%r14,8), %xmm6
// CHECK: aesdec256kl 291(%r8,%rax,4), %xmm6
// CHECK: encoding: [0xf3,0x41,0x0f,0x38,0xdf,0xb4,0x80,0x23,0x01,0x00,0x00]
aesdec256kl 291(%r8,%rax,4), %xmm6
// CHECK: aesdec256kl (%rip), %xmm6
// CHECK: encoding: [0xf3,0x0f,0x38,0xdf,0x35,0x00,0x00,0x00,0x00]
aesdec256kl (%rip), %xmm6
// CHECK: aesdec256kl -2048(,%rbp,2), %xmm6
// CHECK: encoding: [0xf3,0x0f,0x38,0xdf,0x34,0x6d,0x00,0xf8,0xff,0xff]
aesdec256kl -2048(,%rbp,2), %xmm6
// CHECK: aesdec256kl 8128(%rcx), %xmm6
// CHECK: encoding: [0xf3,0x0f,0x38,0xdf,0xb1,0xc0,0x1f,0x00,0x00]
aesdec256kl 8128(%rcx), %xmm6
// CHECK: aesdec256kl -8192(%rdx), %xmm6
// CHECK: encoding: [0xf3,0x0f,0x38,0xdf,0xb2,0x00,0xe0,0xff,0xff]
aesdec256kl -8192(%rdx), %xmm6
// CHECK: aesenc128kl 268435456(%rbp,%r14,8), %xmm6
// CHECK: encoding: [0xf3,0x42,0x0f,0x38,0xdc,0xb4,0xf5,0x00,0x00,0x00,0x10]
aesenc128kl 268435456(%rbp,%r14,8), %xmm6
// CHECK: aesenc128kl 291(%r8,%rax,4), %xmm6
// CHECK: encoding: [0xf3,0x41,0x0f,0x38,0xdc,0xb4,0x80,0x23,0x01,0x00,0x00]
aesenc128kl 291(%r8,%rax,4), %xmm6
// CHECK: aesenc128kl (%rip), %xmm6
// CHECK: encoding: [0xf3,0x0f,0x38,0xdc,0x35,0x00,0x00,0x00,0x00]
aesenc128kl (%rip), %xmm6
// CHECK: aesenc128kl -1536(,%rbp,2), %xmm6
// CHECK: encoding: [0xf3,0x0f,0x38,0xdc,0x34,0x6d,0x00,0xfa,0xff,0xff]
aesenc128kl -1536(,%rbp,2), %xmm6
// CHECK: aesenc128kl 6096(%rcx), %xmm6
// CHECK: encoding: [0xf3,0x0f,0x38,0xdc,0xb1,0xd0,0x17,0x00,0x00]
aesenc128kl 6096(%rcx), %xmm6
// CHECK: aesenc128kl -6144(%rdx), %xmm6
// CHECK: encoding: [0xf3,0x0f,0x38,0xdc,0xb2,0x00,0xe8,0xff,0xff]
aesenc128kl -6144(%rdx), %xmm6
// CHECK: aesenc256kl 268435456(%rbp,%r14,8), %xmm6
// CHECK: encoding: [0xf3,0x42,0x0f,0x38,0xde,0xb4,0xf5,0x00,0x00,0x00,0x10]
aesenc256kl 268435456(%rbp,%r14,8), %xmm6
// CHECK: aesenc256kl 291(%r8,%rax,4), %xmm6
// CHECK: encoding: [0xf3,0x41,0x0f,0x38,0xde,0xb4,0x80,0x23,0x01,0x00,0x00]
aesenc256kl 291(%r8,%rax,4), %xmm6
// CHECK: aesenc256kl (%rip), %xmm6
// CHECK: encoding: [0xf3,0x0f,0x38,0xde,0x35,0x00,0x00,0x00,0x00]
aesenc256kl (%rip), %xmm6
// CHECK: aesenc256kl -2048(,%rbp,2), %xmm6
// CHECK: encoding: [0xf3,0x0f,0x38,0xde,0x34,0x6d,0x00,0xf8,0xff,0xff]
aesenc256kl -2048(,%rbp,2), %xmm6
// CHECK: aesenc256kl 8128(%rcx), %xmm6
// CHECK: encoding: [0xf3,0x0f,0x38,0xde,0xb1,0xc0,0x1f,0x00,0x00]
aesenc256kl 8128(%rcx), %xmm6
// CHECK: aesenc256kl -8192(%rdx), %xmm6
// CHECK: encoding: [0xf3,0x0f,0x38,0xde,0xb2,0x00,0xe0,0xff,0xff]
aesenc256kl -8192(%rdx), %xmm6
// CHECK: encodekey128 %ecx, %ecx
// CHECK: encoding: [0xf3,0x0f,0x38,0xfa,0xc9]
encodekey128 %ecx, %ecx
// CHECK: encodekey256 %ecx, %ecx
// CHECK: encoding: [0xf3,0x0f,0x38,0xfb,0xc9]
encodekey256 %ecx, %ecx
// CHECK: loadiwkey %xmm7, %xmm6
// CHECK: encoding: [0xf3,0x0f,0x38,0xdc,0xf7]
loadiwkey %xmm7, %xmm6
// CHECK: aesdecwide128kl 268435456(%rbp,%r14,8)
// CHECK: encoding: [0xf3,0x42,0x0f,0x38,0xd8,0x8c,0xf5,0x00,0x00,0x00,0x10]
aesdecwide128kl 268435456(%rbp,%r14,8)
// CHECK: aesdecwide128kl 291(%r8,%rax,4)
// CHECK: encoding: [0xf3,0x41,0x0f,0x38,0xd8,0x8c,0x80,0x23,0x01,0x00,0x00]
aesdecwide128kl 291(%r8,%rax,4)
// CHECK: aesdecwide128kl (%rip)
// CHECK: encoding: [0xf3,0x0f,0x38,0xd8,0x0d,0x00,0x00,0x00,0x00]
aesdecwide128kl (%rip)
// CHECK: aesdecwide128kl -1536(,%rbp,2)
// CHECK: encoding: [0xf3,0x0f,0x38,0xd8,0x0c,0x6d,0x00,0xfa,0xff,0xff]
aesdecwide128kl -1536(,%rbp,2)
// CHECK: aesdecwide128kl 6096(%rcx)
// CHECK: encoding: [0xf3,0x0f,0x38,0xd8,0x89,0xd0,0x17,0x00,0x00]
aesdecwide128kl 6096(%rcx)
// CHECK: aesdecwide128kl -6144(%rdx)
// CHECK: encoding: [0xf3,0x0f,0x38,0xd8,0x8a,0x00,0xe8,0xff,0xff]
aesdecwide128kl -6144(%rdx)
// CHECK: aesdecwide256kl 268435456(%rbp,%r14,8)
// CHECK: encoding: [0xf3,0x42,0x0f,0x38,0xd8,0x9c,0xf5,0x00,0x00,0x00,0x10]
aesdecwide256kl 268435456(%rbp,%r14,8)
// CHECK: aesdecwide256kl 291(%r8,%rax,4)
// CHECK: encoding: [0xf3,0x41,0x0f,0x38,0xd8,0x9c,0x80,0x23,0x01,0x00,0x00]
aesdecwide256kl 291(%r8,%rax,4)
// CHECK: aesdecwide256kl (%rip)
// CHECK: encoding: [0xf3,0x0f,0x38,0xd8,0x1d,0x00,0x00,0x00,0x00]
aesdecwide256kl (%rip)
// CHECK: aesdecwide256kl -2048(,%rbp,2)
// CHECK: encoding: [0xf3,0x0f,0x38,0xd8,0x1c,0x6d,0x00,0xf8,0xff,0xff]
aesdecwide256kl -2048(,%rbp,2)
// CHECK: aesdecwide256kl 8128(%rcx)
// CHECK: encoding: [0xf3,0x0f,0x38,0xd8,0x99,0xc0,0x1f,0x00,0x00]
aesdecwide256kl 8128(%rcx)
// CHECK: aesdecwide256kl -8192(%rdx)
// CHECK: encoding: [0xf3,0x0f,0x38,0xd8,0x9a,0x00,0xe0,0xff,0xff]
aesdecwide256kl -8192(%rdx)
// CHECK: aesencwide128kl 268435456(%rbp,%r14,8)
// CHECK: encoding: [0xf3,0x42,0x0f,0x38,0xd8,0x84,0xf5,0x00,0x00,0x00,0x10]
aesencwide128kl 268435456(%rbp,%r14,8)
// CHECK: aesencwide128kl 291(%r8,%rax,4)
// CHECK: encoding: [0xf3,0x41,0x0f,0x38,0xd8,0x84,0x80,0x23,0x01,0x00,0x00]
aesencwide128kl 291(%r8,%rax,4)
// CHECK: aesencwide128kl (%rip)
// CHECK: encoding: [0xf3,0x0f,0x38,0xd8,0x05,0x00,0x00,0x00,0x00]
aesencwide128kl (%rip)
// CHECK: aesencwide128kl -1536(,%rbp,2)
// CHECK: encoding: [0xf3,0x0f,0x38,0xd8,0x04,0x6d,0x00,0xfa,0xff,0xff]
aesencwide128kl -1536(,%rbp,2)
// CHECK: aesencwide128kl 6096(%rcx)
// CHECK: encoding: [0xf3,0x0f,0x38,0xd8,0x81,0xd0,0x17,0x00,0x00]
aesencwide128kl 6096(%rcx)
// CHECK: aesencwide128kl -6144(%rdx)
// CHECK: encoding: [0xf3,0x0f,0x38,0xd8,0x82,0x00,0xe8,0xff,0xff]
aesencwide128kl -6144(%rdx)
// CHECK: aesencwide256kl 268435456(%rbp,%r14,8)
// CHECK: encoding: [0xf3,0x42,0x0f,0x38,0xd8,0x94,0xf5,0x00,0x00,0x00,0x10]
aesencwide256kl 268435456(%rbp,%r14,8)
// CHECK: aesencwide256kl 291(%r8,%rax,4)
// CHECK: encoding: [0xf3,0x41,0x0f,0x38,0xd8,0x94,0x80,0x23,0x01,0x00,0x00]
aesencwide256kl 291(%r8,%rax,4)
// CHECK: aesencwide256kl (%rip)
// CHECK: encoding: [0xf3,0x0f,0x38,0xd8,0x15,0x00,0x00,0x00,0x00]
aesencwide256kl (%rip)
// CHECK: aesencwide256kl -2048(,%rbp,2)
// CHECK: encoding: [0xf3,0x0f,0x38,0xd8,0x14,0x6d,0x00,0xf8,0xff,0xff]
aesencwide256kl -2048(,%rbp,2)
// CHECK: aesencwide256kl 8128(%rcx)
// CHECK: encoding: [0xf3,0x0f,0x38,0xd8,0x91,0xc0,0x1f,0x00,0x00]
aesencwide256kl 8128(%rcx)
// CHECK: aesencwide256kl -8192(%rdx)
// CHECK: encoding: [0xf3,0x0f,0x38,0xd8,0x92,0x00,0xe0,0xff,0xff]
aesencwide256kl -8192(%rdx)