From efdb49bc9a9d1ba65a78121ce7312b6d1f15ea5b Mon Sep 17 00:00:00 2001 From: Gadi Haber Date: Thu, 28 Dec 2017 15:00:41 +0000 Subject: [PATCH] [X86][PREFETCH]: Adding full coverage of MC encoding for the PREFETCH isa sets. NFC. Adding MC regressions tests to cover the PREFETCH isa sets for 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, RKSimon, AndreiGrischenko Differential Revision: https://reviews.llvm.org/D41161 Change-Id: Icdc8c5fb68c414de7d2cfdb50da1cc6763d9932a llvm-svn: 321524 --- llvm/test/MC/X86/PREFETCH-32.s | 169 ++++++++++++++++++++++++++++++++ llvm/test/MC/X86/PREFETCH-64.s | 170 +++++++++++++++++++++++++++++++++ 2 files changed, 339 insertions(+) create mode 100644 llvm/test/MC/X86/PREFETCH-32.s create mode 100644 llvm/test/MC/X86/PREFETCH-64.s diff --git a/llvm/test/MC/X86/PREFETCH-32.s b/llvm/test/MC/X86/PREFETCH-32.s new file mode 100644 index 000000000000..caec44ea386c --- /dev/null +++ b/llvm/test/MC/X86/PREFETCH-32.s @@ -0,0 +1,169 @@ +// RUN: llvm-mc -triple i386-unknown-unknown --show-encoding %s | FileCheck %s + +// CHECK: prefetch -485498096(%edx,%eax,4) +// CHECK: encoding: [0x0f,0x0d,0x84,0x82,0x10,0xe3,0x0f,0xe3] +prefetch -485498096(%edx,%eax,4) + +// CHECK: prefetch 485498096(%edx,%eax,4) +// CHECK: encoding: [0x0f,0x0d,0x84,0x82,0xf0,0x1c,0xf0,0x1c] +prefetch 485498096(%edx,%eax,4) + +// CHECK: prefetch 485498096(%edx) +// CHECK: encoding: [0x0f,0x0d,0x82,0xf0,0x1c,0xf0,0x1c] +prefetch 485498096(%edx) + +// CHECK: prefetch 485498096 +// CHECK: encoding: [0x0f,0x0d,0x05,0xf0,0x1c,0xf0,0x1c] +prefetch 485498096 + +// CHECK: prefetch 64(%edx,%eax) +// CHECK: encoding: [0x0f,0x0d,0x44,0x02,0x40] +prefetch 64(%edx,%eax) + +// CHECK: prefetch (%edx) +// CHECK: encoding: [0x0f,0x0d,0x02] +prefetch (%edx) + +// CHECK: prefetchnta -485498096(%edx,%eax,4) +// CHECK: encoding: [0x0f,0x18,0x84,0x82,0x10,0xe3,0x0f,0xe3] +prefetchnta -485498096(%edx,%eax,4) + +// CHECK: prefetchnta 485498096(%edx,%eax,4) +// CHECK: encoding: [0x0f,0x18,0x84,0x82,0xf0,0x1c,0xf0,0x1c] +prefetchnta 485498096(%edx,%eax,4) + +// CHECK: prefetchnta 485498096(%edx) +// CHECK: encoding: [0x0f,0x18,0x82,0xf0,0x1c,0xf0,0x1c] +prefetchnta 485498096(%edx) + +// CHECK: prefetchnta 485498096 +// CHECK: encoding: [0x0f,0x18,0x05,0xf0,0x1c,0xf0,0x1c] +prefetchnta 485498096 + +// CHECK: prefetchnta 64(%edx,%eax) +// CHECK: encoding: [0x0f,0x18,0x44,0x02,0x40] +prefetchnta 64(%edx,%eax) + +// CHECK: prefetchnta (%edx) +// CHECK: encoding: [0x0f,0x18,0x02] +prefetchnta (%edx) + +// CHECK: prefetcht0 -485498096(%edx,%eax,4) +// CHECK: encoding: [0x0f,0x18,0x8c,0x82,0x10,0xe3,0x0f,0xe3] +prefetcht0 -485498096(%edx,%eax,4) + +// CHECK: prefetcht0 485498096(%edx,%eax,4) +// CHECK: encoding: [0x0f,0x18,0x8c,0x82,0xf0,0x1c,0xf0,0x1c] +prefetcht0 485498096(%edx,%eax,4) + +// CHECK: prefetcht0 485498096(%edx) +// CHECK: encoding: [0x0f,0x18,0x8a,0xf0,0x1c,0xf0,0x1c] +prefetcht0 485498096(%edx) + +// CHECK: prefetcht0 485498096 +// CHECK: encoding: [0x0f,0x18,0x0d,0xf0,0x1c,0xf0,0x1c] +prefetcht0 485498096 + +// CHECK: prefetcht0 64(%edx,%eax) +// CHECK: encoding: [0x0f,0x18,0x4c,0x02,0x40] +prefetcht0 64(%edx,%eax) + +// CHECK: prefetcht0 (%edx) +// CHECK: encoding: [0x0f,0x18,0x0a] +prefetcht0 (%edx) + +// CHECK: prefetcht1 -485498096(%edx,%eax,4) +// CHECK: encoding: [0x0f,0x18,0x94,0x82,0x10,0xe3,0x0f,0xe3] +prefetcht1 -485498096(%edx,%eax,4) + +// CHECK: prefetcht1 485498096(%edx,%eax,4) +// CHECK: encoding: [0x0f,0x18,0x94,0x82,0xf0,0x1c,0xf0,0x1c] +prefetcht1 485498096(%edx,%eax,4) + +// CHECK: prefetcht1 485498096(%edx) +// CHECK: encoding: [0x0f,0x18,0x92,0xf0,0x1c,0xf0,0x1c] +prefetcht1 485498096(%edx) + +// CHECK: prefetcht1 485498096 +// CHECK: encoding: [0x0f,0x18,0x15,0xf0,0x1c,0xf0,0x1c] +prefetcht1 485498096 + +// CHECK: prefetcht1 64(%edx,%eax) +// CHECK: encoding: [0x0f,0x18,0x54,0x02,0x40] +prefetcht1 64(%edx,%eax) + +// CHECK: prefetcht1 (%edx) +// CHECK: encoding: [0x0f,0x18,0x12] +prefetcht1 (%edx) + +// CHECK: prefetcht2 -485498096(%edx,%eax,4) +// CHECK: encoding: [0x0f,0x18,0x9c,0x82,0x10,0xe3,0x0f,0xe3] +prefetcht2 -485498096(%edx,%eax,4) + +// CHECK: prefetcht2 485498096(%edx,%eax,4) +// CHECK: encoding: [0x0f,0x18,0x9c,0x82,0xf0,0x1c,0xf0,0x1c] +prefetcht2 485498096(%edx,%eax,4) + +// CHECK: prefetcht2 485498096(%edx) +// CHECK: encoding: [0x0f,0x18,0x9a,0xf0,0x1c,0xf0,0x1c] +prefetcht2 485498096(%edx) + +// CHECK: prefetcht2 485498096 +// CHECK: encoding: [0x0f,0x18,0x1d,0xf0,0x1c,0xf0,0x1c] +prefetcht2 485498096 + +// CHECK: prefetcht2 64(%edx,%eax) +// CHECK: encoding: [0x0f,0x18,0x5c,0x02,0x40] +prefetcht2 64(%edx,%eax) + +// CHECK: prefetcht2 (%edx) +// CHECK: encoding: [0x0f,0x18,0x1a] +prefetcht2 (%edx) + +// CHECK: prefetchw -485498096(%edx,%eax,4) +// CHECK: encoding: [0x0f,0x0d,0x8c,0x82,0x10,0xe3,0x0f,0xe3] +prefetchw -485498096(%edx,%eax,4) + +// CHECK: prefetchw 485498096(%edx,%eax,4) +// CHECK: encoding: [0x0f,0x0d,0x8c,0x82,0xf0,0x1c,0xf0,0x1c] +prefetchw 485498096(%edx,%eax,4) + +// CHECK: prefetchw 485498096(%edx) +// CHECK: encoding: [0x0f,0x0d,0x8a,0xf0,0x1c,0xf0,0x1c] +prefetchw 485498096(%edx) + +// CHECK: prefetchw 485498096 +// CHECK: encoding: [0x0f,0x0d,0x0d,0xf0,0x1c,0xf0,0x1c] +prefetchw 485498096 + +// CHECK: prefetchw 64(%edx,%eax) +// CHECK: encoding: [0x0f,0x0d,0x4c,0x02,0x40] +prefetchw 64(%edx,%eax) + +// CHECK: prefetchw (%edx) +// CHECK: encoding: [0x0f,0x0d,0x0a] +prefetchw (%edx) + +// CHECK: prefetchwt1 -485498096(%edx,%eax,4) +// CHECK: encoding: [0x0f,0x0d,0x94,0x82,0x10,0xe3,0x0f,0xe3] +prefetchwt1 -485498096(%edx,%eax,4) + +// CHECK: prefetchwt1 485498096(%edx,%eax,4) +// CHECK: encoding: [0x0f,0x0d,0x94,0x82,0xf0,0x1c,0xf0,0x1c] +prefetchwt1 485498096(%edx,%eax,4) + +// CHECK: prefetchwt1 485498096(%edx) +// CHECK: encoding: [0x0f,0x0d,0x92,0xf0,0x1c,0xf0,0x1c] +prefetchwt1 485498096(%edx) + +// CHECK: prefetchwt1 485498096 +// CHECK: encoding: [0x0f,0x0d,0x15,0xf0,0x1c,0xf0,0x1c] +prefetchwt1 485498096 + +// CHECK: prefetchwt1 64(%edx,%eax) +// CHECK: encoding: [0x0f,0x0d,0x54,0x02,0x40 +prefetchwt1 64(%edx,%eax) + +// CHECK: prefetchwt1 (%edx) +// CHECK: encoding: [0x0f,0x0d,0x12] +prefetchwt1 (%edx) diff --git a/llvm/test/MC/X86/PREFETCH-64.s b/llvm/test/MC/X86/PREFETCH-64.s new file mode 100644 index 000000000000..0c4a126a2a20 --- /dev/null +++ b/llvm/test/MC/X86/PREFETCH-64.s @@ -0,0 +1,170 @@ +// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s + +// CHECK: prefetch 485498096 +// CHECK: encoding: [0x0f,0x0d,0x04,0x25,0xf0,0x1c,0xf0,0x1c] +prefetch 485498096 + +// CHECK: prefetch 64(%rdx) +// CHECK: encoding: [0x0f,0x0d,0x42,0x40] +prefetch 64(%rdx) + +// CHECK: prefetch 64(%rdx,%rax,4) +// CHECK: encoding: [0x0f,0x0d,0x44,0x82,0x40] +prefetch 64(%rdx,%rax,4) + +// CHECK: prefetch -64(%rdx,%rax,4) +// CHECK: encoding: [0x0f,0x0d,0x44,0x82,0xc0] +prefetch -64(%rdx,%rax,4) + +// CHECK: prefetch 64(%rdx,%rax) +// CHECK: encoding: [0x0f,0x0d,0x44,0x02,0x40] +prefetch 64(%rdx,%rax) + +// CHECK: prefetchnta 485498096 +// CHECK: encoding: [0x0f,0x18,0x04,0x25,0xf0,0x1c,0xf0,0x1c] +prefetchnta 485498096 + +// CHECK: prefetchnta 64(%rdx) +// CHECK: encoding: [0x0f,0x18,0x42,0x40] +prefetchnta 64(%rdx) + +// CHECK: prefetchnta 64(%rdx,%rax,4) +// CHECK: encoding: [0x0f,0x18,0x44,0x82,0x40] +prefetchnta 64(%rdx,%rax,4) + +// CHECK: prefetchnta -64(%rdx,%rax,4) +// CHECK: encoding: [0x0f,0x18,0x44,0x82,0xc0] +prefetchnta -64(%rdx,%rax,4) + +// CHECK: prefetchnta 64(%rdx,%rax) +// CHECK: encoding: [0x0f,0x18,0x44,0x02,0x40] +prefetchnta 64(%rdx,%rax) + +// CHECK: prefetchnta (%rdx) +// CHECK: encoding: [0x0f,0x18,0x02] +prefetchnta (%rdx) + +// CHECK: prefetch (%rdx) +// CHECK: encoding: [0x0f,0x0d,0x02] +prefetch (%rdx) + +// CHECK: prefetcht0 485498096 +// CHECK: encoding: [0x0f,0x18,0x0c,0x25,0xf0,0x1c,0xf0,0x1c] +prefetcht0 485498096 + +// CHECK: prefetcht0 64(%rdx) +// CHECK: encoding: [0x0f,0x18,0x4a,0x40] +prefetcht0 64(%rdx) + +// CHECK: prefetcht0 64(%rdx,%rax,4) +// CHECK: encoding: [0x0f,0x18,0x4c,0x82,0x40] +prefetcht0 64(%rdx,%rax,4) + +// CHECK: prefetcht0 -64(%rdx,%rax,4) +// CHECK: encoding: [0x0f,0x18,0x4c,0x82,0xc0] +prefetcht0 -64(%rdx,%rax,4) + +// CHECK: prefetcht0 64(%rdx,%rax) +// CHECK: encoding: [0x0f,0x18,0x4c,0x02,0x40] +prefetcht0 64(%rdx,%rax) + +// CHECK: prefetcht0 (%rdx) +// CHECK: encoding: [0x0f,0x18,0x0a] +prefetcht0 (%rdx) + +// CHECK: prefetcht1 485498096 +// CHECK: encoding: [0x0f,0x18,0x14,0x25,0xf0,0x1c,0xf0,0x1c] +prefetcht1 485498096 + +// CHECK: prefetcht1 64(%rdx) +// CHECK: encoding: [0x0f,0x18,0x52,0x40] +prefetcht1 64(%rdx) + +// CHECK: prefetcht1 64(%rdx,%rax,4) +// CHECK: encoding: [0x0f,0x18,0x54,0x82,0x40] +prefetcht1 64(%rdx,%rax,4) + +// CHECK: prefetcht1 -64(%rdx,%rax,4) +// CHECK: encoding: [0x0f,0x18,0x54,0x82,0xc0] +prefetcht1 -64(%rdx,%rax,4) + +// CHECK: prefetcht1 64(%rdx,%rax) +// CHECK: encoding: [0x0f,0x18,0x54,0x02,0x40] +prefetcht1 64(%rdx,%rax) + +// CHECK: prefetcht1 (%rdx) +// CHECK: encoding: [0x0f,0x18,0x12] +prefetcht1 (%rdx) + +// CHECK: prefetcht2 485498096 +// CHECK: encoding: [0x0f,0x18,0x1c,0x25,0xf0,0x1c,0xf0,0x1c] +prefetcht2 485498096 + +// CHECK: prefetcht2 64(%rdx) +// CHECK: encoding: [0x0f,0x18,0x5a,0x40] +prefetcht2 64(%rdx) + +// CHECK: prefetcht2 64(%rdx,%rax,4) +// CHECK: encoding: [0x0f,0x18,0x5c,0x82,0x40] +prefetcht2 64(%rdx,%rax,4) + +// CHECK: prefetcht2 -64(%rdx,%rax,4) +// CHECK: encoding: [0x0f,0x18,0x5c,0x82,0xc0] +prefetcht2 -64(%rdx,%rax,4) + +// CHECK: prefetcht2 64(%rdx,%rax) +// CHECK: encoding: [0x0f,0x18,0x5c,0x02,0x40] +prefetcht2 64(%rdx,%rax) + +// CHECK: prefetcht2 (%rdx) +// CHECK: encoding: [0x0f,0x18,0x1a] +prefetcht2 (%rdx) + +// CHECK: prefetchw 485498096 +// CHECK: encoding: [0x0f,0x0d,0x0c,0x25,0xf0,0x1c,0xf0,0x1c] +prefetchw 485498096 + +// CHECK: prefetchw 64(%rdx) +// CHECK: encoding: [0x0f,0x0d,0x4a,0x40] +prefetchw 64(%rdx) + +// CHECK: prefetchw 64(%rdx,%rax,4) +// CHECK: encoding: [0x0f,0x0d,0x4c,0x82,0x40] +prefetchw 64(%rdx,%rax,4) + +// CHECK: prefetchw -64(%rdx,%rax,4) +// CHECK: encoding: [0x0f,0x0d,0x4c,0x82,0xc0] +prefetchw -64(%rdx,%rax,4) + +// CHECK: prefetchw 64(%rdx,%rax) +// CHECK: encoding: [0x0f,0x0d,0x4c,0x02,0x40] +prefetchw 64(%rdx,%rax) + +// CHECK: prefetchw (%rdx) +// CHECK: encoding: [0x0f,0x0d,0x0a] +prefetchw (%rdx) + +// CHECK: prefetchwt1 485498096 +// CHECK: encoding: [0x0f,0x0d,0x14,0x25,0xf0,0x1c,0xf0,0x1c] +prefetchwt1 485498096 + +// CHECK: prefetchwt1 64(%rdx) +// CHECK: encoding: [0x0f,0x0d,0x52,0x40] +prefetchwt1 64(%rdx) + +// CHECK: prefetchwt1 64(%rdx,%rax,4) +// CHECK: encoding: [0x0f,0x0d,0x54,0x82,0x40] +prefetchwt1 64(%rdx,%rax,4) + +// CHECK: prefetchwt1 -64(%rdx,%rax,4) +// CHECK: encoding: [0x0f,0x0d,0x54,0x82,0xc0] +prefetchwt1 -64(%rdx,%rax,4) + +// CHECK: prefetchwt1 64(%rdx,%rax) +// CHECK: encoding: [0x0f,0x0d,0x54,0x02,0x40] +prefetchwt1 64(%rdx,%rax) + +// CHECK: prefetchwt1 (%rdx) +// CHECK: encoding: [0x0f,0x0d,0x12] +prefetchwt1 (%rdx) +