summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2019-08-07 05:34:27 +0000
committerCraig Topper <craig.topper@intel.com>2019-08-07 05:34:27 +0000
commit29688f4da0b62e760dcd65d607aa9a56cb1557e0 (patch)
tree293a2cc5eb55bffe628ebba214b1c5562757c15c /llvm/test
parent989679c3711a239c73057fb5446eef937935f4ba (diff)
downloadbcm5719-llvm-29688f4da0b62e760dcd65d607aa9a56cb1557e0.tar.gz
bcm5719-llvm-29688f4da0b62e760dcd65d607aa9a56cb1557e0.zip
[X86] Limit vpermil2pd/vpermil2ps immediates to 4 bits in the assembly parser.
The upper 4 bits of the immediate byte are used to encode a register. We need to limit the explicit immediate to fit in the remaining 4 bits. Fixes PR42899. llvm-svn: 368123
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/MC/X86/x86_errors.s4
-rw-r--r--llvm/test/tools/llvm-mca/X86/BdVer2/xop-super-registers-2.s12
-rw-r--r--llvm/test/tools/llvm-mca/X86/Generic/xop-super-registers-2.s12
3 files changed, 16 insertions, 12 deletions
diff --git a/llvm/test/MC/X86/x86_errors.s b/llvm/test/MC/X86/x86_errors.s
index c7d563bfda7..5e44aaa0942 100644
--- a/llvm/test/MC/X86/x86_errors.s
+++ b/llvm/test/MC/X86/x86_errors.s
@@ -179,3 +179,7 @@ cmpxchg16b (%eax)
// 32: error: unsupported instruction
// 64: error: unsupported instruction
{evex} vmovdqu %xmm0, %xmm0
+
+// 32: 12: error: invalid operand for instruction
+// 64: 12: error: invalid operand for instruction
+vpermil2pd $16, %xmm3, %xmm5, %xmm1, %xmm2
diff --git a/llvm/test/tools/llvm-mca/X86/BdVer2/xop-super-registers-2.s b/llvm/test/tools/llvm-mca/X86/BdVer2/xop-super-registers-2.s
index 2ddc7690ff0..af3b709bb4e 100644
--- a/llvm/test/tools/llvm-mca/X86/BdVer2/xop-super-registers-2.s
+++ b/llvm/test/tools/llvm-mca/X86/BdVer2/xop-super-registers-2.s
@@ -2,7 +2,7 @@
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=bdver2 -timeline -timeline-max-iterations=2 < %s | FileCheck %s
vmulps %ymm0, %ymm1, %ymm2
- vpermil2pd $16, %xmm3, %xmm5, %xmm1, %xmm2
+ vpermil2pd $15, %xmm3, %xmm5, %xmm1, %xmm2
vmulps %ymm2, %ymm3, %ymm4
vaddps %ymm4, %ymm5, %ymm6
vmulps %ymm6, %ymm3, %ymm4
@@ -28,7 +28,7 @@
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 2 5 1.00 vmulps %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: 1 3 1.00 vpermil2pd $16, %xmm3, %xmm5, %xmm1, %xmm2
+# CHECK-NEXT: 1 3 1.00 vpermil2pd $15, %xmm3, %xmm5, %xmm1, %xmm2
# CHECK-NEXT: 2 5 1.00 vmulps %ymm2, %ymm3, %ymm4
# CHECK-NEXT: 2 5 1.00 vaddps %ymm4, %ymm5, %ymm6
# CHECK-NEXT: 2 5 1.00 vmulps %ymm6, %ymm3, %ymm4
@@ -66,7 +66,7 @@
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7.0] [7.1] [8.0] [8.1] [9] [10] [11] [12] [13] [14] [15] [16.0] [16.1] [17] [18] Instructions:
# CHECK-NEXT: - - - - - - - - 1.58 0.42 - - - - - 1.00 - - - - - - - vmulps %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: - - - - - - - - 0.44 1.56 - - - - 0.61 0.39 - - - - - - - vpermil2pd $16, %xmm3, %xmm5, %xmm1, %xmm2
+# CHECK-NEXT: - - - - - - - - 0.44 1.56 - - - - 0.61 0.39 - - - - - - - vpermil2pd $15, %xmm3, %xmm5, %xmm1, %xmm2
# CHECK-NEXT: - - - - - - - - 1.58 0.42 - - - - - 1.00 - - - - - - - vmulps %ymm2, %ymm3, %ymm4
# CHECK-NEXT: - - - - - - - - 0.40 1.60 - - - - 1.00 - - - - - - - - vaddps %ymm4, %ymm5, %ymm6
# CHECK-NEXT: - - - - - - - - 1.58 0.42 - - - - - 1.00 - - - - - - - vmulps %ymm6, %ymm3, %ymm4
@@ -77,13 +77,13 @@
# CHECK-NEXT: Index 0123456789 0123456789
# CHECK: [0,0] DeeeeeER . . . . .. vmulps %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: [0,1] DeeeE--R . . . . .. vpermil2pd $16, %xmm3, %xmm5, %xmm1, %xmm2
+# CHECK-NEXT: [0,1] DeeeE--R . . . . .. vpermil2pd $15, %xmm3, %xmm5, %xmm1, %xmm2
# CHECK-NEXT: [0,2] .D==eeeeeER . . . .. vmulps %ymm2, %ymm3, %ymm4
# CHECK-NEXT: [0,3] .D=======eeeeeER . . .. vaddps %ymm4, %ymm5, %ymm6
# CHECK-NEXT: [0,4] . D===========eeeeeER . .. vmulps %ymm6, %ymm3, %ymm4
# CHECK-NEXT: [0,5] . D================eeeeeER .. vaddps %ymm4, %ymm5, %ymm0
# CHECK-NEXT: [1,0] . D====================eeeeeER. vmulps %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: [1,1] . DeeeE----------------------R. vpermil2pd $16, %xmm3, %xmm5, %xmm1, %xmm2
+# CHECK-NEXT: [1,1] . DeeeE----------------------R. vpermil2pd $15, %xmm3, %xmm5, %xmm1, %xmm2
# CHECK-NEXT: [1,2] . D==eeeeeE-----------------R. vmulps %ymm2, %ymm3, %ymm4
# CHECK-NEXT: [1,3] . D=======eeeeeE------------R. vaddps %ymm4, %ymm5, %ymm6
# CHECK-NEXT: [1,4] . D===========eeeeeE--------R vmulps %ymm6, %ymm3, %ymm4
@@ -97,7 +97,7 @@
# CHECK: [0] [1] [2] [3]
# CHECK-NEXT: 0. 2 11.0 0.5 0.0 vmulps %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: 1. 2 1.0 1.0 12.0 vpermil2pd $16, %xmm3, %xmm5, %xmm1, %xmm2
+# CHECK-NEXT: 1. 2 1.0 1.0 12.0 vpermil2pd $15, %xmm3, %xmm5, %xmm1, %xmm2
# CHECK-NEXT: 2. 2 3.0 0.0 8.5 vmulps %ymm2, %ymm3, %ymm4
# CHECK-NEXT: 3. 2 8.0 0.0 6.0 vaddps %ymm4, %ymm5, %ymm6
# CHECK-NEXT: 4. 2 12.0 0.0 4.0 vmulps %ymm6, %ymm3, %ymm4
diff --git a/llvm/test/tools/llvm-mca/X86/Generic/xop-super-registers-2.s b/llvm/test/tools/llvm-mca/X86/Generic/xop-super-registers-2.s
index ba59a86a048..a32bbc6fb0e 100644
--- a/llvm/test/tools/llvm-mca/X86/Generic/xop-super-registers-2.s
+++ b/llvm/test/tools/llvm-mca/X86/Generic/xop-super-registers-2.s
@@ -2,7 +2,7 @@
# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=x86-64 -timeline -timeline-max-iterations=2 < %s | FileCheck %s
vmulps %ymm0, %ymm1, %ymm2
- vpermil2pd $16, %xmm3, %xmm5, %xmm1, %xmm2
+ vpermil2pd $15, %xmm3, %xmm5, %xmm1, %xmm2
vmulps %ymm2, %ymm3, %ymm4
vaddps %ymm4, %ymm5, %ymm6
vmulps %ymm6, %ymm3, %ymm4
@@ -28,7 +28,7 @@
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 5 1.00 vmulps %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: 1 1 1.00 vpermil2pd $16, %xmm3, %xmm5, %xmm1, %xmm2
+# CHECK-NEXT: 1 1 1.00 vpermil2pd $15, %xmm3, %xmm5, %xmm1, %xmm2
# CHECK-NEXT: 1 5 1.00 vmulps %ymm2, %ymm3, %ymm4
# CHECK-NEXT: 1 3 1.00 vaddps %ymm4, %ymm5, %ymm6
# CHECK-NEXT: 1 5 1.00 vmulps %ymm6, %ymm3, %ymm4
@@ -51,7 +51,7 @@
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
# CHECK-NEXT: - - 1.00 - - - - - vmulps %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: - - - - - 1.00 - - vpermil2pd $16, %xmm3, %xmm5, %xmm1, %xmm2
+# CHECK-NEXT: - - - - - 1.00 - - vpermil2pd $15, %xmm3, %xmm5, %xmm1, %xmm2
# CHECK-NEXT: - - 1.00 - - - - - vmulps %ymm2, %ymm3, %ymm4
# CHECK-NEXT: - - - 1.00 - - - - vaddps %ymm4, %ymm5, %ymm6
# CHECK-NEXT: - - 1.00 - - - - - vmulps %ymm6, %ymm3, %ymm4
@@ -62,13 +62,13 @@
# CHECK-NEXT: Index 0123456789 01234
# CHECK: [0,0] DeeeeeER . . . . vmulps %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: [0,1] DeE----R . . . . vpermil2pd $16, %xmm3, %xmm5, %xmm1, %xmm2
+# CHECK-NEXT: [0,1] DeE----R . . . . vpermil2pd $15, %xmm3, %xmm5, %xmm1, %xmm2
# CHECK-NEXT: [0,2] D=eeeeeER . . . . vmulps %ymm2, %ymm3, %ymm4
# CHECK-NEXT: [0,3] D======eeeER . . . vaddps %ymm4, %ymm5, %ymm6
# CHECK-NEXT: [0,4] .D========eeeeeER . . vmulps %ymm6, %ymm3, %ymm4
# CHECK-NEXT: [0,5] .D=============eeeER. . vaddps %ymm4, %ymm5, %ymm0
# CHECK-NEXT: [1,0] .D================eeeeeER vmulps %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: [1,1] .DeE--------------------R vpermil2pd $16, %xmm3, %xmm5, %xmm1, %xmm2
+# CHECK-NEXT: [1,1] .DeE--------------------R vpermil2pd $15, %xmm3, %xmm5, %xmm1, %xmm2
# CHECK-NEXT: [1,2] . DeeeeeE---------------R vmulps %ymm2, %ymm3, %ymm4
# CHECK-NEXT: [1,3] . D=====eeeE------------R vaddps %ymm4, %ymm5, %ymm6
# CHECK-NEXT: [1,4] . D========eeeeeE-------R vmulps %ymm6, %ymm3, %ymm4
@@ -82,7 +82,7 @@
# CHECK: [0] [1] [2] [3]
# CHECK-NEXT: 0. 2 9.0 0.5 0.0 vmulps %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: 1. 2 1.0 1.0 12.0 vpermil2pd $16, %xmm3, %xmm5, %xmm1, %xmm2
+# CHECK-NEXT: 1. 2 1.0 1.0 12.0 vpermil2pd $15, %xmm3, %xmm5, %xmm1, %xmm2
# CHECK-NEXT: 2. 2 1.5 0.0 7.5 vmulps %ymm2, %ymm3, %ymm4
# CHECK-NEXT: 3. 2 6.5 0.0 6.0 vaddps %ymm4, %ymm5, %ymm6
# CHECK-NEXT: 4. 2 9.0 0.0 3.5 vmulps %ymm6, %ymm3, %ymm4
OpenPOWER on IntegriCloud