summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>2018-06-19 18:09:54 +0000
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>2018-06-19 18:09:54 +0000
commit03aa8f3a245e5e7a3aa81617aa4637af33c2213c (patch)
treeb914ca252fcf8851252eeccd9a7e58437cdf388f
parent0b7936737b0488d06a8a3ce3c37a4836309bc08d (diff)
downloadbcm5719-llvm-03aa8f3a245e5e7a3aa81617aa4637af33c2213c.tar.gz
bcm5719-llvm-03aa8f3a245e5e7a3aa81617aa4637af33c2213c.zip
[Hexagon] Fix the value of HexagonII::TypeCVI_FIRST
This value is the first vector instruction type in numerical order. The previous value was incorrect, leaving TypeCVI_GATHER outside of the range for vector instructions. This caused vector .new instructions to be incorrectly encoded in the presence of gather. llvm-svn: 335065
-rw-r--r--llvm/lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h2
-rw-r--r--llvm/test/MC/Hexagon/vgather-new.s12
2 files changed, 13 insertions, 1 deletions
diff --git a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h
index f5a37603375..cb504b5c3d5 100644
--- a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h
+++ b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h
@@ -25,7 +25,7 @@ namespace llvm {
/// HexagonII - This namespace holds all of the target specific flags that
/// instruction info tracks.
namespace HexagonII {
- unsigned const TypeCVI_FIRST = TypeCVI_HIST;
+ unsigned const TypeCVI_FIRST = TypeCVI_4SLOT_MPY;
unsigned const TypeCVI_LAST = TypeCVI_VX_LATE;
enum SubTarget {
diff --git a/llvm/test/MC/Hexagon/vgather-new.s b/llvm/test/MC/Hexagon/vgather-new.s
new file mode 100644
index 00000000000..679aaefa72e
--- /dev/null
+++ b/llvm/test/MC/Hexagon/vgather-new.s
@@ -0,0 +1,12 @@
+// RUN: llvm-mc -arch=hexagon -mcpu=hexagonv65 -mhvx -show-encoding %s -o - | FileCheck %s
+
+// TypeCVI_FIRST was set incorrectly, causing vgather not to be considered
+// a vector instruction. This resulted in an incorrect encoding of the vtmp.new
+// operand in the store.
+// CHECK: encoding: [0x1f,0x45,0x05,0x2f,0x22,0xc0,0x21,0x28]
+
+{
+ if (q0) vtmp.h = vgather(r5,m0,v31.h).h
+ vmem(r1+#0) = vtmp.new
+}
+
OpenPOWER on IntegriCloud