diff --git a/lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h b/lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h index f5a37603375..cb504b5c3d5 100644 --- a/lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h +++ b/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/test/MC/Hexagon/vgather-new.s b/test/MC/Hexagon/vgather-new.s new file mode 100644 index 00000000000..679aaefa72e --- /dev/null +++ b/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 +} +