1 ; RUN: llc -mv65 -mattr=+hvxv65,hvx-length64b -march=hexagon -O2 < %s | FileCheck %s
3 ; CHECK-LABEL: V6_vgathermw
4 ; CHECK: vtmp.w = vgather(r1,m{{[0-9]+}},v{{[0-9]+}}.w).w
5 ; CHECK: vmem(r{{[0-9]+}}+#0) = vtmp.new
6 ; CHECK-LABEL: V6_vgathermh
7 ; CHECK: vtmp.h = vgather(r1,m{{[0-9]+}},v{{[0-9]+}}.h).h
8 ; CHECK: vmem(r{{[0-9]+}}+#0) = vtmp.new
9 ; CHECK-LABEL: V6_vgathermhw
10 ; CHECK: vtmp.h = vgather(r1,m{{[0-9]+}},v{{[0-9]+}}:{{[0-9]+}}.w).h
11 ; CHECK: vmem(r{{[0-9]+}}+#0) = vtmp.new
12 ; CHECK-LABEL: V6_vgathermwq
13 ; CHECK: if (q{{[0-3]+}}) vtmp.w = vgather(r1,m{{[0-9]+}},v{{[0-9]+}}.w).w
14 ; CHECK: vmem(r{{[0-9]+}}+#0) = vtmp.new
15 ; CHECK-LABEL: V6_vgathermhq
16 ; CHECK: if (q{{[0-3]+}}) vtmp.h = vgather(r1,m{{[0-9]+}},v{{[0-9]+}}.h).h
17 ; CHECK: vmem(r{{[0-9]+}}+#0) = vtmp.new
18 ; CHECK-LABEL: V6_vgathermhwq
19 ; CHECK: if (q{{[0-3]+}}) vtmp.h = vgather(r1,m{{[0-9]+}},v{{[0-9]+}}:{{[0-9]+}}.w).h
20 ; CHECK: vmem(r{{[0-9]+}}+#0) = vtmp.new
22 declare void @llvm.hexagon.V6.vgathermw(i8*, i32, i32, <16 x i32>)
23 define void @V6_vgathermw(i8* %a, i32 %b, i32 %c, <16 x i32> %d) {
24 call void @llvm.hexagon.V6.vgathermw(i8* %a, i32 %b, i32 %c, <16 x i32> %d)
28 declare void @llvm.hexagon.V6.vgathermh(i8*, i32, i32, <16 x i32>)
29 define void @V6_vgathermh(i8* %a, i32 %b, i32 %c, <16 x i32> %d) {
30 call void @llvm.hexagon.V6.vgathermh(i8* %a, i32 %b, i32 %c, <16 x i32> %d)
34 declare void @llvm.hexagon.V6.vgathermhw(i8*, i32, i32, <32 x i32>)
35 define void @V6_vgathermhw(i8* %a, i32 %b, i32 %c, <32 x i32> %d) {
36 call void @llvm.hexagon.V6.vgathermhw(i8* %a, i32 %b, i32 %c, <32 x i32> %d)
40 declare void @llvm.hexagon.V6.vgathermwq(i8*, <512 x i1>, i32, i32, <16 x i32>)
41 define void @V6_vgathermwq(i8* %a, <16 x i32> %b, i32 %c, i32 %d, <16 x i32> %e) {
42 %1 = bitcast <16 x i32> %b to <512 x i1>
43 call void @llvm.hexagon.V6.vgathermwq(i8* %a, <512 x i1> %1, i32 %c, i32 %d, <16 x i32> %e)
47 declare void @llvm.hexagon.V6.vgathermhq(i8*, <512 x i1>, i32, i32, <16 x i32>)
48 define void @V6_vgathermhq(i8* %a, <16 x i32> %b, i32 %c, i32 %d, <16 x i32> %e) {
49 %1 = bitcast <16 x i32> %b to <512 x i1>
50 call void @llvm.hexagon.V6.vgathermhq(i8* %a, <512 x i1> %1, i32 %c, i32 %d, <16 x i32> %e)
54 declare void @llvm.hexagon.V6.vgathermhwq(i8*, <512 x i1>, i32, i32, <32 x i32>)
55 define void @V6_vgathermhwq(i8* %a, <16 x i32> %b, i32 %c, i32 %d, <32 x i32> %e) {
56 %1 = bitcast <16 x i32> %b to <512 x i1>
57 call void @llvm.hexagon.V6.vgathermhwq(i8* %a, <512 x i1> %1, i32 %c, i32 %d, <32 x i32> %e)