Compiler projects using llvm
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -march=hexagon < %s | FileCheck %s

define void @f0(<128 x i8> %a0, <128 x i8>* %a1) #0 {
; CHECK-LABEL: f0:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <128 x i8>, <128 x i8>* %a1, i32 0
  store <128 x i8> %a0, <128 x i8>* %v0, align 128
  ret void
}

define void @f1(<128 x i8> %a0, <128 x i8> %a1, <128 x i8>* %a2) #0 {
; CHECK-LABEL: f1:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <128 x i8>, <128 x i8>* %a2, i32 0
  store <128 x i8> %a0, <128 x i8>* %v0, align 128
  %v1 = getelementptr <128 x i8>, <128 x i8>* %a2, i32 1
  store <128 x i8> %a1, <128 x i8>* %v1, align 128
  ret void
}

define void @f2(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8>* %a3) #0 {
; CHECK-LABEL: f2:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <128 x i8>, <128 x i8>* %a3, i32 0
  store <128 x i8> %a0, <128 x i8>* %v0, align 128
  %v1 = getelementptr <128 x i8>, <128 x i8>* %a3, i32 1
  store <128 x i8> %a1, <128 x i8>* %v1, align 128
  %v2 = getelementptr <128 x i8>, <128 x i8>* %a3, i32 2
  store <128 x i8> %a2, <128 x i8>* %v2, align 128
  ret void
}

define void @f3(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8>* %a4) #0 {
; CHECK-LABEL: f3:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <128 x i8>, <128 x i8>* %a4, i32 0
  store <128 x i8> %a0, <128 x i8>* %v0, align 128
  %v1 = getelementptr <128 x i8>, <128 x i8>* %a4, i32 1
  store <128 x i8> %a1, <128 x i8>* %v1, align 128
  %v2 = getelementptr <128 x i8>, <128 x i8>* %a4, i32 2
  store <128 x i8> %a2, <128 x i8>* %v2, align 128
  %v3 = getelementptr <128 x i8>, <128 x i8>* %a4, i32 3
  store <128 x i8> %a3, <128 x i8>* %v3, align 128
  ret void
}

define void @f4(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8>* %a5) #0 {
; CHECK-LABEL: f4:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:     vmem(r0+#4) = v4
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <128 x i8>, <128 x i8>* %a5, i32 0
  store <128 x i8> %a0, <128 x i8>* %v0, align 128
  %v1 = getelementptr <128 x i8>, <128 x i8>* %a5, i32 1
  store <128 x i8> %a1, <128 x i8>* %v1, align 128
  %v2 = getelementptr <128 x i8>, <128 x i8>* %a5, i32 2
  store <128 x i8> %a2, <128 x i8>* %v2, align 128
  %v3 = getelementptr <128 x i8>, <128 x i8>* %a5, i32 3
  store <128 x i8> %a3, <128 x i8>* %v3, align 128
  %v4 = getelementptr <128 x i8>, <128 x i8>* %a5, i32 4
  store <128 x i8> %a4, <128 x i8>* %v4, align 128
  ret void
}

define void @f5(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8>* %a6) #0 {
; CHECK-LABEL: f5:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#4) = v4
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:     vmem(r0+#5) = v5
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <128 x i8>, <128 x i8>* %a6, i32 0
  store <128 x i8> %a0, <128 x i8>* %v0, align 128
  %v1 = getelementptr <128 x i8>, <128 x i8>* %a6, i32 1
  store <128 x i8> %a1, <128 x i8>* %v1, align 128
  %v2 = getelementptr <128 x i8>, <128 x i8>* %a6, i32 2
  store <128 x i8> %a2, <128 x i8>* %v2, align 128
  %v3 = getelementptr <128 x i8>, <128 x i8>* %a6, i32 3
  store <128 x i8> %a3, <128 x i8>* %v3, align 128
  %v4 = getelementptr <128 x i8>, <128 x i8>* %a6, i32 4
  store <128 x i8> %a4, <128 x i8>* %v4, align 128
  %v5 = getelementptr <128 x i8>, <128 x i8>* %a6, i32 5
  store <128 x i8> %a5, <128 x i8>* %v5, align 128
  ret void
}

define void @f6(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8>* %a7) #0 {
; CHECK-LABEL: f6:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#4) = v4
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#5) = v5
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:     vmem(r0+#6) = v6
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <128 x i8>, <128 x i8>* %a7, i32 0
  store <128 x i8> %a0, <128 x i8>* %v0, align 128
  %v1 = getelementptr <128 x i8>, <128 x i8>* %a7, i32 1
  store <128 x i8> %a1, <128 x i8>* %v1, align 128
  %v2 = getelementptr <128 x i8>, <128 x i8>* %a7, i32 2
  store <128 x i8> %a2, <128 x i8>* %v2, align 128
  %v3 = getelementptr <128 x i8>, <128 x i8>* %a7, i32 3
  store <128 x i8> %a3, <128 x i8>* %v3, align 128
  %v4 = getelementptr <128 x i8>, <128 x i8>* %a7, i32 4
  store <128 x i8> %a4, <128 x i8>* %v4, align 128
  %v5 = getelementptr <128 x i8>, <128 x i8>* %a7, i32 5
  store <128 x i8> %a5, <128 x i8>* %v5, align 128
  %v6 = getelementptr <128 x i8>, <128 x i8>* %a7, i32 6
  store <128 x i8> %a6, <128 x i8>* %v6, align 128
  ret void
}

define void @f7(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8>* %a8) #0 {
; CHECK-LABEL: f7:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#4) = v4
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#5) = v5
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#6) = v6
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:     vmem(r0+#7) = v7
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <128 x i8>, <128 x i8>* %a8, i32 0
  store <128 x i8> %a0, <128 x i8>* %v0, align 128
  %v1 = getelementptr <128 x i8>, <128 x i8>* %a8, i32 1
  store <128 x i8> %a1, <128 x i8>* %v1, align 128
  %v2 = getelementptr <128 x i8>, <128 x i8>* %a8, i32 2
  store <128 x i8> %a2, <128 x i8>* %v2, align 128
  %v3 = getelementptr <128 x i8>, <128 x i8>* %a8, i32 3
  store <128 x i8> %a3, <128 x i8>* %v3, align 128
  %v4 = getelementptr <128 x i8>, <128 x i8>* %a8, i32 4
  store <128 x i8> %a4, <128 x i8>* %v4, align 128
  %v5 = getelementptr <128 x i8>, <128 x i8>* %a8, i32 5
  store <128 x i8> %a5, <128 x i8>* %v5, align 128
  %v6 = getelementptr <128 x i8>, <128 x i8>* %a8, i32 6
  store <128 x i8> %a6, <128 x i8>* %v6, align 128
  %v7 = getelementptr <128 x i8>, <128 x i8>* %a8, i32 7
  store <128 x i8> %a7, <128 x i8>* %v7, align 128
  ret void
}

define void @f8(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, <128 x i8>* %a9) #0 {
; CHECK-LABEL: f8:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     r1 = add(r0,#1024)
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#4) = v4
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#5) = v5
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#6) = v6
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#7) = v7
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:     vmem(r1+#0) = v8
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <128 x i8>, <128 x i8>* %a9, i32 0
  store <128 x i8> %a0, <128 x i8>* %v0, align 128
  %v1 = getelementptr <128 x i8>, <128 x i8>* %a9, i32 1
  store <128 x i8> %a1, <128 x i8>* %v1, align 128
  %v2 = getelementptr <128 x i8>, <128 x i8>* %a9, i32 2
  store <128 x i8> %a2, <128 x i8>* %v2, align 128
  %v3 = getelementptr <128 x i8>, <128 x i8>* %a9, i32 3
  store <128 x i8> %a3, <128 x i8>* %v3, align 128
  %v4 = getelementptr <128 x i8>, <128 x i8>* %a9, i32 4
  store <128 x i8> %a4, <128 x i8>* %v4, align 128
  %v5 = getelementptr <128 x i8>, <128 x i8>* %a9, i32 5
  store <128 x i8> %a5, <128 x i8>* %v5, align 128
  %v6 = getelementptr <128 x i8>, <128 x i8>* %a9, i32 6
  store <128 x i8> %a6, <128 x i8>* %v6, align 128
  %v7 = getelementptr <128 x i8>, <128 x i8>* %a9, i32 7
  store <128 x i8> %a7, <128 x i8>* %v7, align 128
  %v8 = getelementptr <128 x i8>, <128 x i8>* %a9, i32 8
  store <128 x i8> %a8, <128 x i8>* %v8, align 128
  ret void
}

define void @f9(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, <128 x i8> %a9, <128 x i8>* %a10) #0 {
; CHECK-LABEL: f9:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     r1 = add(r0,#1024)
; CHECK-NEXT:     r2 = add(r0,#1152)
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#4) = v4
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#5) = v5
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#6) = v6
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#7) = v7
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r1+#0) = v8
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:     vmem(r2+#0) = v9
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <128 x i8>, <128 x i8>* %a10, i32 0
  store <128 x i8> %a0, <128 x i8>* %v0, align 128
  %v1 = getelementptr <128 x i8>, <128 x i8>* %a10, i32 1
  store <128 x i8> %a1, <128 x i8>* %v1, align 128
  %v2 = getelementptr <128 x i8>, <128 x i8>* %a10, i32 2
  store <128 x i8> %a2, <128 x i8>* %v2, align 128
  %v3 = getelementptr <128 x i8>, <128 x i8>* %a10, i32 3
  store <128 x i8> %a3, <128 x i8>* %v3, align 128
  %v4 = getelementptr <128 x i8>, <128 x i8>* %a10, i32 4
  store <128 x i8> %a4, <128 x i8>* %v4, align 128
  %v5 = getelementptr <128 x i8>, <128 x i8>* %a10, i32 5
  store <128 x i8> %a5, <128 x i8>* %v5, align 128
  %v6 = getelementptr <128 x i8>, <128 x i8>* %a10, i32 6
  store <128 x i8> %a6, <128 x i8>* %v6, align 128
  %v7 = getelementptr <128 x i8>, <128 x i8>* %a10, i32 7
  store <128 x i8> %a7, <128 x i8>* %v7, align 128
  %v8 = getelementptr <128 x i8>, <128 x i8>* %a10, i32 8
  store <128 x i8> %a8, <128 x i8>* %v8, align 128
  %v9 = getelementptr <128 x i8>, <128 x i8>* %a10, i32 9
  store <128 x i8> %a9, <128 x i8>* %v9, align 128
  ret void
}

define void @f10(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, <128 x i8> %a9, <128 x i8> %a10, <128 x i8>* %a11) #0 {
; CHECK-LABEL: f10:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     r1 = add(r0,#1024)
; CHECK-NEXT:     r2 = add(r0,#1152)
; CHECK-NEXT:     r3 = add(r0,#1280)
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#4) = v4
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#5) = v5
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#6) = v6
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#7) = v7
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r1+#0) = v8
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r2+#0) = v9
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:     vmem(r3+#0) = v10
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <128 x i8>, <128 x i8>* %a11, i32 0
  store <128 x i8> %a0, <128 x i8>* %v0, align 128
  %v1 = getelementptr <128 x i8>, <128 x i8>* %a11, i32 1
  store <128 x i8> %a1, <128 x i8>* %v1, align 128
  %v2 = getelementptr <128 x i8>, <128 x i8>* %a11, i32 2
  store <128 x i8> %a2, <128 x i8>* %v2, align 128
  %v3 = getelementptr <128 x i8>, <128 x i8>* %a11, i32 3
  store <128 x i8> %a3, <128 x i8>* %v3, align 128
  %v4 = getelementptr <128 x i8>, <128 x i8>* %a11, i32 4
  store <128 x i8> %a4, <128 x i8>* %v4, align 128
  %v5 = getelementptr <128 x i8>, <128 x i8>* %a11, i32 5
  store <128 x i8> %a5, <128 x i8>* %v5, align 128
  %v6 = getelementptr <128 x i8>, <128 x i8>* %a11, i32 6
  store <128 x i8> %a6, <128 x i8>* %v6, align 128
  %v7 = getelementptr <128 x i8>, <128 x i8>* %a11, i32 7
  store <128 x i8> %a7, <128 x i8>* %v7, align 128
  %v8 = getelementptr <128 x i8>, <128 x i8>* %a11, i32 8
  store <128 x i8> %a8, <128 x i8>* %v8, align 128
  %v9 = getelementptr <128 x i8>, <128 x i8>* %a11, i32 9
  store <128 x i8> %a9, <128 x i8>* %v9, align 128
  %v10 = getelementptr <128 x i8>, <128 x i8>* %a11, i32 10
  store <128 x i8> %a10, <128 x i8>* %v10, align 128
  ret void
}

define void @f11(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, <128 x i8> %a9, <128 x i8> %a10, <128 x i8> %a11, <128 x i8>* %a12) #0 {
; CHECK-LABEL: f11:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     r1 = add(r0,#1024)
; CHECK-NEXT:     r2 = add(r0,#1152)
; CHECK-NEXT:     r3 = add(r0,#1280)
; CHECK-NEXT:     r4 = add(r0,#1408)
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#4) = v4
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#5) = v5
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#6) = v6
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#7) = v7
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r1+#0) = v8
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r2+#0) = v9
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r3+#0) = v10
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:     vmem(r4+#0) = v11
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <128 x i8>, <128 x i8>* %a12, i32 0
  store <128 x i8> %a0, <128 x i8>* %v0, align 128
  %v1 = getelementptr <128 x i8>, <128 x i8>* %a12, i32 1
  store <128 x i8> %a1, <128 x i8>* %v1, align 128
  %v2 = getelementptr <128 x i8>, <128 x i8>* %a12, i32 2
  store <128 x i8> %a2, <128 x i8>* %v2, align 128
  %v3 = getelementptr <128 x i8>, <128 x i8>* %a12, i32 3
  store <128 x i8> %a3, <128 x i8>* %v3, align 128
  %v4 = getelementptr <128 x i8>, <128 x i8>* %a12, i32 4
  store <128 x i8> %a4, <128 x i8>* %v4, align 128
  %v5 = getelementptr <128 x i8>, <128 x i8>* %a12, i32 5
  store <128 x i8> %a5, <128 x i8>* %v5, align 128
  %v6 = getelementptr <128 x i8>, <128 x i8>* %a12, i32 6
  store <128 x i8> %a6, <128 x i8>* %v6, align 128
  %v7 = getelementptr <128 x i8>, <128 x i8>* %a12, i32 7
  store <128 x i8> %a7, <128 x i8>* %v7, align 128
  %v8 = getelementptr <128 x i8>, <128 x i8>* %a12, i32 8
  store <128 x i8> %a8, <128 x i8>* %v8, align 128
  %v9 = getelementptr <128 x i8>, <128 x i8>* %a12, i32 9
  store <128 x i8> %a9, <128 x i8>* %v9, align 128
  %v10 = getelementptr <128 x i8>, <128 x i8>* %a12, i32 10
  store <128 x i8> %a10, <128 x i8>* %v10, align 128
  %v11 = getelementptr <128 x i8>, <128 x i8>* %a12, i32 11
  store <128 x i8> %a11, <128 x i8>* %v11, align 128
  ret void
}

define void @f12(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, <128 x i8> %a9, <128 x i8> %a10, <128 x i8> %a11, <128 x i8> %a12, <128 x i8>* %a13) #0 {
; CHECK-LABEL: f12:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     r1 = add(r0,#1024)
; CHECK-NEXT:     r2 = add(r0,#1152)
; CHECK-NEXT:     r3 = add(r0,#1280)
; CHECK-NEXT:     r4 = add(r0,#1408)
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r5 = add(r0,#1536)
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#4) = v4
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#5) = v5
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#6) = v6
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#7) = v7
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r1+#0) = v8
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r2+#0) = v9
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r3+#0) = v10
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r4+#0) = v11
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:     vmem(r5+#0) = v12
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <128 x i8>, <128 x i8>* %a13, i32 0
  store <128 x i8> %a0, <128 x i8>* %v0, align 128
  %v1 = getelementptr <128 x i8>, <128 x i8>* %a13, i32 1
  store <128 x i8> %a1, <128 x i8>* %v1, align 128
  %v2 = getelementptr <128 x i8>, <128 x i8>* %a13, i32 2
  store <128 x i8> %a2, <128 x i8>* %v2, align 128
  %v3 = getelementptr <128 x i8>, <128 x i8>* %a13, i32 3
  store <128 x i8> %a3, <128 x i8>* %v3, align 128
  %v4 = getelementptr <128 x i8>, <128 x i8>* %a13, i32 4
  store <128 x i8> %a4, <128 x i8>* %v4, align 128
  %v5 = getelementptr <128 x i8>, <128 x i8>* %a13, i32 5
  store <128 x i8> %a5, <128 x i8>* %v5, align 128
  %v6 = getelementptr <128 x i8>, <128 x i8>* %a13, i32 6
  store <128 x i8> %a6, <128 x i8>* %v6, align 128
  %v7 = getelementptr <128 x i8>, <128 x i8>* %a13, i32 7
  store <128 x i8> %a7, <128 x i8>* %v7, align 128
  %v8 = getelementptr <128 x i8>, <128 x i8>* %a13, i32 8
  store <128 x i8> %a8, <128 x i8>* %v8, align 128
  %v9 = getelementptr <128 x i8>, <128 x i8>* %a13, i32 9
  store <128 x i8> %a9, <128 x i8>* %v9, align 128
  %v10 = getelementptr <128 x i8>, <128 x i8>* %a13, i32 10
  store <128 x i8> %a10, <128 x i8>* %v10, align 128
  %v11 = getelementptr <128 x i8>, <128 x i8>* %a13, i32 11
  store <128 x i8> %a11, <128 x i8>* %v11, align 128
  %v12 = getelementptr <128 x i8>, <128 x i8>* %a13, i32 12
  store <128 x i8> %a12, <128 x i8>* %v12, align 128
  ret void
}

define void @f13(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, <128 x i8> %a9, <128 x i8> %a10, <128 x i8> %a11, <128 x i8> %a12, <128 x i8> %a13, <128 x i8>* %a14) #0 {
; CHECK-LABEL: f13:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     r2 = add(r0,#1152)
; CHECK-NEXT:     r3 = add(r0,#1280)
; CHECK-NEXT:     r1 = add(r0,#1024)
; CHECK-NEXT:     r4 = add(r0,#1408)
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r2 = add(r0,#1664)
; CHECK-NEXT:     vmem(r2+#0) = v9
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r3 = add(r0,#1536)
; CHECK-NEXT:     vmem(r3+#0) = v10
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r1+#0) = v8
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#4) = v4
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#5) = v5
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#6) = v6
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r4+#0) = v11
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#7) = v7
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r3+#0) = v12
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:     vmem(r2+#0) = v13
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <128 x i8>, <128 x i8>* %a14, i32 0
  store <128 x i8> %a0, <128 x i8>* %v0, align 128
  %v1 = getelementptr <128 x i8>, <128 x i8>* %a14, i32 1
  store <128 x i8> %a1, <128 x i8>* %v1, align 128
  %v2 = getelementptr <128 x i8>, <128 x i8>* %a14, i32 2
  store <128 x i8> %a2, <128 x i8>* %v2, align 128
  %v3 = getelementptr <128 x i8>, <128 x i8>* %a14, i32 3
  store <128 x i8> %a3, <128 x i8>* %v3, align 128
  %v4 = getelementptr <128 x i8>, <128 x i8>* %a14, i32 4
  store <128 x i8> %a4, <128 x i8>* %v4, align 128
  %v5 = getelementptr <128 x i8>, <128 x i8>* %a14, i32 5
  store <128 x i8> %a5, <128 x i8>* %v5, align 128
  %v6 = getelementptr <128 x i8>, <128 x i8>* %a14, i32 6
  store <128 x i8> %a6, <128 x i8>* %v6, align 128
  %v7 = getelementptr <128 x i8>, <128 x i8>* %a14, i32 7
  store <128 x i8> %a7, <128 x i8>* %v7, align 128
  %v8 = getelementptr <128 x i8>, <128 x i8>* %a14, i32 8
  store <128 x i8> %a8, <128 x i8>* %v8, align 128
  %v9 = getelementptr <128 x i8>, <128 x i8>* %a14, i32 9
  store <128 x i8> %a9, <128 x i8>* %v9, align 128
  %v10 = getelementptr <128 x i8>, <128 x i8>* %a14, i32 10
  store <128 x i8> %a10, <128 x i8>* %v10, align 128
  %v11 = getelementptr <128 x i8>, <128 x i8>* %a14, i32 11
  store <128 x i8> %a11, <128 x i8>* %v11, align 128
  %v12 = getelementptr <128 x i8>, <128 x i8>* %a14, i32 12
  store <128 x i8> %a12, <128 x i8>* %v12, align 128
  %v13 = getelementptr <128 x i8>, <128 x i8>* %a14, i32 13
  store <128 x i8> %a13, <128 x i8>* %v13, align 128
  ret void
}

define void @f14(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, <128 x i8> %a9, <128 x i8> %a10, <128 x i8> %a11, <128 x i8> %a12, <128 x i8> %a13, <128 x i8> %a14, <128 x i8>* %a15) #0 {
; CHECK-LABEL: f14:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     r2 = add(r0,#1152)
; CHECK-NEXT:     r3 = add(r0,#1280)
; CHECK-NEXT:     r4 = add(r0,#1408)
; CHECK-NEXT:     r1 = add(r0,#1024)
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r2 = add(r0,#1792)
; CHECK-NEXT:     vmem(r2+#0) = v9
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r3 = add(r0,#1664)
; CHECK-NEXT:     vmem(r3+#0) = v10
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r4 = add(r0,#1536)
; CHECK-NEXT:     vmem(r4+#0) = v11
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r1+#0) = v8
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#4) = v4
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#5) = v5
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#6) = v6
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r4+#0) = v12
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#7) = v7
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r3+#0) = v13
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:     vmem(r2+#0) = v14
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <128 x i8>, <128 x i8>* %a15, i32 0
  store <128 x i8> %a0, <128 x i8>* %v0, align 128
  %v1 = getelementptr <128 x i8>, <128 x i8>* %a15, i32 1
  store <128 x i8> %a1, <128 x i8>* %v1, align 128
  %v2 = getelementptr <128 x i8>, <128 x i8>* %a15, i32 2
  store <128 x i8> %a2, <128 x i8>* %v2, align 128
  %v3 = getelementptr <128 x i8>, <128 x i8>* %a15, i32 3
  store <128 x i8> %a3, <128 x i8>* %v3, align 128
  %v4 = getelementptr <128 x i8>, <128 x i8>* %a15, i32 4
  store <128 x i8> %a4, <128 x i8>* %v4, align 128
  %v5 = getelementptr <128 x i8>, <128 x i8>* %a15, i32 5
  store <128 x i8> %a5, <128 x i8>* %v5, align 128
  %v6 = getelementptr <128 x i8>, <128 x i8>* %a15, i32 6
  store <128 x i8> %a6, <128 x i8>* %v6, align 128
  %v7 = getelementptr <128 x i8>, <128 x i8>* %a15, i32 7
  store <128 x i8> %a7, <128 x i8>* %v7, align 128
  %v8 = getelementptr <128 x i8>, <128 x i8>* %a15, i32 8
  store <128 x i8> %a8, <128 x i8>* %v8, align 128
  %v9 = getelementptr <128 x i8>, <128 x i8>* %a15, i32 9
  store <128 x i8> %a9, <128 x i8>* %v9, align 128
  %v10 = getelementptr <128 x i8>, <128 x i8>* %a15, i32 10
  store <128 x i8> %a10, <128 x i8>* %v10, align 128
  %v11 = getelementptr <128 x i8>, <128 x i8>* %a15, i32 11
  store <128 x i8> %a11, <128 x i8>* %v11, align 128
  %v12 = getelementptr <128 x i8>, <128 x i8>* %a15, i32 12
  store <128 x i8> %a12, <128 x i8>* %v12, align 128
  %v13 = getelementptr <128 x i8>, <128 x i8>* %a15, i32 13
  store <128 x i8> %a13, <128 x i8>* %v13, align 128
  %v14 = getelementptr <128 x i8>, <128 x i8>* %a15, i32 14
  store <128 x i8> %a14, <128 x i8>* %v14, align 128
  ret void
}

define void @f15(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, <128 x i8> %a9, <128 x i8> %a10, <128 x i8> %a11, <128 x i8> %a12, <128 x i8> %a13, <128 x i8> %a14, <128 x i8> %a15, <128 x i8>* %a16) #0 {
; CHECK-LABEL: f15:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     r2 = add(r0,#1152)
; CHECK-NEXT:     r3 = add(r0,#1280)
; CHECK-NEXT:     r1 = add(r0,#1024)
; CHECK-NEXT:     r6 = add(r0,#1408)
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r5 = add(r0,#1536)
; CHECK-NEXT:     r4 = add(r0,#1664)
; CHECK-NEXT:     r2 = add(r0,#1920)
; CHECK-NEXT:     vmem(r2+#0) = v9
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r3 = add(r0,#1792)
; CHECK-NEXT:     vmem(r3+#0) = v10
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r1+#0) = v8
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#4) = v4
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r6+#0) = v11
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#5) = v5
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r5+#0) = v12
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#6) = v6
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r4+#0) = v13
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#7) = v7
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r3+#0) = v14
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:     vmem(r2+#0) = v15
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <128 x i8>, <128 x i8>* %a16, i32 0
  store <128 x i8> %a0, <128 x i8>* %v0, align 128
  %v1 = getelementptr <128 x i8>, <128 x i8>* %a16, i32 1
  store <128 x i8> %a1, <128 x i8>* %v1, align 128
  %v2 = getelementptr <128 x i8>, <128 x i8>* %a16, i32 2
  store <128 x i8> %a2, <128 x i8>* %v2, align 128
  %v3 = getelementptr <128 x i8>, <128 x i8>* %a16, i32 3
  store <128 x i8> %a3, <128 x i8>* %v3, align 128
  %v4 = getelementptr <128 x i8>, <128 x i8>* %a16, i32 4
  store <128 x i8> %a4, <128 x i8>* %v4, align 128
  %v5 = getelementptr <128 x i8>, <128 x i8>* %a16, i32 5
  store <128 x i8> %a5, <128 x i8>* %v5, align 128
  %v6 = getelementptr <128 x i8>, <128 x i8>* %a16, i32 6
  store <128 x i8> %a6, <128 x i8>* %v6, align 128
  %v7 = getelementptr <128 x i8>, <128 x i8>* %a16, i32 7
  store <128 x i8> %a7, <128 x i8>* %v7, align 128
  %v8 = getelementptr <128 x i8>, <128 x i8>* %a16, i32 8
  store <128 x i8> %a8, <128 x i8>* %v8, align 128
  %v9 = getelementptr <128 x i8>, <128 x i8>* %a16, i32 9
  store <128 x i8> %a9, <128 x i8>* %v9, align 128
  %v10 = getelementptr <128 x i8>, <128 x i8>* %a16, i32 10
  store <128 x i8> %a10, <128 x i8>* %v10, align 128
  %v11 = getelementptr <128 x i8>, <128 x i8>* %a16, i32 11
  store <128 x i8> %a11, <128 x i8>* %v11, align 128
  %v12 = getelementptr <128 x i8>, <128 x i8>* %a16, i32 12
  store <128 x i8> %a12, <128 x i8>* %v12, align 128
  %v13 = getelementptr <128 x i8>, <128 x i8>* %a16, i32 13
  store <128 x i8> %a13, <128 x i8>* %v13, align 128
  %v14 = getelementptr <128 x i8>, <128 x i8>* %a16, i32 14
  store <128 x i8> %a14, <128 x i8>* %v14, align 128
  %v15 = getelementptr <128 x i8>, <128 x i8>* %a16, i32 15
  store <128 x i8> %a15, <128 x i8>* %v15, align 128
  ret void
}

define void @f16(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, <128 x i8> %a9, <128 x i8> %a10, <128 x i8> %a11, <128 x i8> %a12, <128 x i8> %a13, <128 x i8> %a14, <128 x i8> %a15, <128 x i8> %a16, <128 x i8>* %a17) #0 {
; CHECK-LABEL: f16:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     r2 = add(r0,#1152)
; CHECK-NEXT:     r3 = add(r0,#1280)
; CHECK-NEXT:     r4 = add(r0,#1408)
; CHECK-NEXT:     allocframe(r29,#0):raw
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r1 = add(r30,#8)
; CHECK-NEXT:     r7 = add(r0,#1024)
; CHECK-NEXT:     r6 = add(r0,#1536)
; CHECK-NEXT:     vmem(r2+#0) = v9
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r5 = add(r0,#1664)
; CHECK-NEXT:     r3 = add(r0,#1920)
; CHECK-NEXT:     r2 = add(r0,#2048)
; CHECK-NEXT:     vmem(r3+#0) = v10
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r4 = add(r0,#1792)
; CHECK-NEXT:     r29 = and(r29,#-128)
; CHECK-NEXT:     v16 = vmem(r1+#0)
; CHECK-NEXT:     vmem(r4+#0) = v11
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r7+#0) = v8
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#4) = v4
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r6+#0) = v12
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#5) = v5
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r5+#0) = v13
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#6) = v6
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r4+#0) = v14
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#7) = v7
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r3+#0) = v15
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r2+#0) = v16
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r31:30 = dealloc_return(r30):raw
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <128 x i8>, <128 x i8>* %a17, i32 0
  store <128 x i8> %a0, <128 x i8>* %v0, align 128
  %v1 = getelementptr <128 x i8>, <128 x i8>* %a17, i32 1
  store <128 x i8> %a1, <128 x i8>* %v1, align 128
  %v2 = getelementptr <128 x i8>, <128 x i8>* %a17, i32 2
  store <128 x i8> %a2, <128 x i8>* %v2, align 128
  %v3 = getelementptr <128 x i8>, <128 x i8>* %a17, i32 3
  store <128 x i8> %a3, <128 x i8>* %v3, align 128
  %v4 = getelementptr <128 x i8>, <128 x i8>* %a17, i32 4
  store <128 x i8> %a4, <128 x i8>* %v4, align 128
  %v5 = getelementptr <128 x i8>, <128 x i8>* %a17, i32 5
  store <128 x i8> %a5, <128 x i8>* %v5, align 128
  %v6 = getelementptr <128 x i8>, <128 x i8>* %a17, i32 6
  store <128 x i8> %a6, <128 x i8>* %v6, align 128
  %v7 = getelementptr <128 x i8>, <128 x i8>* %a17, i32 7
  store <128 x i8> %a7, <128 x i8>* %v7, align 128
  %v8 = getelementptr <128 x i8>, <128 x i8>* %a17, i32 8
  store <128 x i8> %a8, <128 x i8>* %v8, align 128
  %v9 = getelementptr <128 x i8>, <128 x i8>* %a17, i32 9
  store <128 x i8> %a9, <128 x i8>* %v9, align 128
  %v10 = getelementptr <128 x i8>, <128 x i8>* %a17, i32 10
  store <128 x i8> %a10, <128 x i8>* %v10, align 128
  %v11 = getelementptr <128 x i8>, <128 x i8>* %a17, i32 11
  store <128 x i8> %a11, <128 x i8>* %v11, align 128
  %v12 = getelementptr <128 x i8>, <128 x i8>* %a17, i32 12
  store <128 x i8> %a12, <128 x i8>* %v12, align 128
  %v13 = getelementptr <128 x i8>, <128 x i8>* %a17, i32 13
  store <128 x i8> %a13, <128 x i8>* %v13, align 128
  %v14 = getelementptr <128 x i8>, <128 x i8>* %a17, i32 14
  store <128 x i8> %a14, <128 x i8>* %v14, align 128
  %v15 = getelementptr <128 x i8>, <128 x i8>* %a17, i32 15
  store <128 x i8> %a15, <128 x i8>* %v15, align 128
  %v16 = getelementptr <128 x i8>, <128 x i8>* %a17, i32 16
  store <128 x i8> %a16, <128 x i8>* %v16, align 128
  ret void
}

define void @f17(<64 x i16> %a0, <64 x i16> %a1, <64 x i16> %a2, <64 x i16> %a3, <64 x i16> %a4, <64 x i16> %a5, <64 x i16> %a6, <64 x i16> %a7, <64 x i16> %a8, <64 x i16> %a9, <64 x i16> %a10, <64 x i16> %a11, <64 x i16> %a12, <64 x i16> %a13, <64 x i16> %a14, <64 x i16> %a15, <64 x i16> %a16, <64 x i16>* %a17) #0 {
; CHECK-LABEL: f17:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     r2 = add(r0,#1152)
; CHECK-NEXT:     r3 = add(r0,#1280)
; CHECK-NEXT:     r4 = add(r0,#1408)
; CHECK-NEXT:     allocframe(r29,#0):raw
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r1 = add(r30,#8)
; CHECK-NEXT:     r7 = add(r0,#1024)
; CHECK-NEXT:     r6 = add(r0,#1536)
; CHECK-NEXT:     vmem(r2+#0) = v9
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r5 = add(r0,#1664)
; CHECK-NEXT:     r3 = add(r0,#1920)
; CHECK-NEXT:     r2 = add(r0,#2048)
; CHECK-NEXT:     vmem(r3+#0) = v10
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r4 = add(r0,#1792)
; CHECK-NEXT:     r29 = and(r29,#-128)
; CHECK-NEXT:     v16 = vmem(r1+#0)
; CHECK-NEXT:     vmem(r4+#0) = v11
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r7+#0) = v8
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#4) = v4
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r6+#0) = v12
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#5) = v5
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r5+#0) = v13
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#6) = v6
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r4+#0) = v14
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#7) = v7
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r3+#0) = v15
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r2+#0) = v16
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r31:30 = dealloc_return(r30):raw
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <64 x i16>, <64 x i16>* %a17, i32 0
  store <64 x i16> %a0, <64 x i16>* %v0, align 128
  %v1 = getelementptr <64 x i16>, <64 x i16>* %a17, i32 1
  store <64 x i16> %a1, <64 x i16>* %v1, align 128
  %v2 = getelementptr <64 x i16>, <64 x i16>* %a17, i32 2
  store <64 x i16> %a2, <64 x i16>* %v2, align 128
  %v3 = getelementptr <64 x i16>, <64 x i16>* %a17, i32 3
  store <64 x i16> %a3, <64 x i16>* %v3, align 128
  %v4 = getelementptr <64 x i16>, <64 x i16>* %a17, i32 4
  store <64 x i16> %a4, <64 x i16>* %v4, align 128
  %v5 = getelementptr <64 x i16>, <64 x i16>* %a17, i32 5
  store <64 x i16> %a5, <64 x i16>* %v5, align 128
  %v6 = getelementptr <64 x i16>, <64 x i16>* %a17, i32 6
  store <64 x i16> %a6, <64 x i16>* %v6, align 128
  %v7 = getelementptr <64 x i16>, <64 x i16>* %a17, i32 7
  store <64 x i16> %a7, <64 x i16>* %v7, align 128
  %v8 = getelementptr <64 x i16>, <64 x i16>* %a17, i32 8
  store <64 x i16> %a8, <64 x i16>* %v8, align 128
  %v9 = getelementptr <64 x i16>, <64 x i16>* %a17, i32 9
  store <64 x i16> %a9, <64 x i16>* %v9, align 128
  %v10 = getelementptr <64 x i16>, <64 x i16>* %a17, i32 10
  store <64 x i16> %a10, <64 x i16>* %v10, align 128
  %v11 = getelementptr <64 x i16>, <64 x i16>* %a17, i32 11
  store <64 x i16> %a11, <64 x i16>* %v11, align 128
  %v12 = getelementptr <64 x i16>, <64 x i16>* %a17, i32 12
  store <64 x i16> %a12, <64 x i16>* %v12, align 128
  %v13 = getelementptr <64 x i16>, <64 x i16>* %a17, i32 13
  store <64 x i16> %a13, <64 x i16>* %v13, align 128
  %v14 = getelementptr <64 x i16>, <64 x i16>* %a17, i32 14
  store <64 x i16> %a14, <64 x i16>* %v14, align 128
  %v15 = getelementptr <64 x i16>, <64 x i16>* %a17, i32 15
  store <64 x i16> %a15, <64 x i16>* %v15, align 128
  %v16 = getelementptr <64 x i16>, <64 x i16>* %a17, i32 16
  store <64 x i16> %a16, <64 x i16>* %v16, align 128
  ret void
}

define void @f18(<32 x i32> %a0, <32 x i32> %a1, <32 x i32> %a2, <32 x i32> %a3, <32 x i32> %a4, <32 x i32> %a5, <32 x i32> %a6, <32 x i32> %a7, <32 x i32> %a8, <32 x i32> %a9, <32 x i32> %a10, <32 x i32> %a11, <32 x i32> %a12, <32 x i32> %a13, <32 x i32> %a14, <32 x i32> %a15, <32 x i32> %a16, <32 x i32>* %a17) #0 {
; CHECK-LABEL: f18:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     r2 = add(r0,#1152)
; CHECK-NEXT:     r3 = add(r0,#1280)
; CHECK-NEXT:     r4 = add(r0,#1408)
; CHECK-NEXT:     allocframe(r29,#0):raw
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r1 = add(r30,#8)
; CHECK-NEXT:     r7 = add(r0,#1024)
; CHECK-NEXT:     r6 = add(r0,#1536)
; CHECK-NEXT:     vmem(r2+#0) = v9
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r5 = add(r0,#1664)
; CHECK-NEXT:     r3 = add(r0,#1920)
; CHECK-NEXT:     r2 = add(r0,#2048)
; CHECK-NEXT:     vmem(r3+#0) = v10
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r4 = add(r0,#1792)
; CHECK-NEXT:     r29 = and(r29,#-128)
; CHECK-NEXT:     v16 = vmem(r1+#0)
; CHECK-NEXT:     vmem(r4+#0) = v11
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r7+#0) = v8
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#4) = v4
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r6+#0) = v12
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#5) = v5
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r5+#0) = v13
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#6) = v6
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r4+#0) = v14
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#7) = v7
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r3+#0) = v15
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r2+#0) = v16
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r31:30 = dealloc_return(r30):raw
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <32 x i32>, <32 x i32>* %a17, i32 0
  store <32 x i32> %a0, <32 x i32>* %v0, align 128
  %v1 = getelementptr <32 x i32>, <32 x i32>* %a17, i32 1
  store <32 x i32> %a1, <32 x i32>* %v1, align 128
  %v2 = getelementptr <32 x i32>, <32 x i32>* %a17, i32 2
  store <32 x i32> %a2, <32 x i32>* %v2, align 128
  %v3 = getelementptr <32 x i32>, <32 x i32>* %a17, i32 3
  store <32 x i32> %a3, <32 x i32>* %v3, align 128
  %v4 = getelementptr <32 x i32>, <32 x i32>* %a17, i32 4
  store <32 x i32> %a4, <32 x i32>* %v4, align 128
  %v5 = getelementptr <32 x i32>, <32 x i32>* %a17, i32 5
  store <32 x i32> %a5, <32 x i32>* %v5, align 128
  %v6 = getelementptr <32 x i32>, <32 x i32>* %a17, i32 6
  store <32 x i32> %a6, <32 x i32>* %v6, align 128
  %v7 = getelementptr <32 x i32>, <32 x i32>* %a17, i32 7
  store <32 x i32> %a7, <32 x i32>* %v7, align 128
  %v8 = getelementptr <32 x i32>, <32 x i32>* %a17, i32 8
  store <32 x i32> %a8, <32 x i32>* %v8, align 128
  %v9 = getelementptr <32 x i32>, <32 x i32>* %a17, i32 9
  store <32 x i32> %a9, <32 x i32>* %v9, align 128
  %v10 = getelementptr <32 x i32>, <32 x i32>* %a17, i32 10
  store <32 x i32> %a10, <32 x i32>* %v10, align 128
  %v11 = getelementptr <32 x i32>, <32 x i32>* %a17, i32 11
  store <32 x i32> %a11, <32 x i32>* %v11, align 128
  %v12 = getelementptr <32 x i32>, <32 x i32>* %a17, i32 12
  store <32 x i32> %a12, <32 x i32>* %v12, align 128
  %v13 = getelementptr <32 x i32>, <32 x i32>* %a17, i32 13
  store <32 x i32> %a13, <32 x i32>* %v13, align 128
  %v14 = getelementptr <32 x i32>, <32 x i32>* %a17, i32 14
  store <32 x i32> %a14, <32 x i32>* %v14, align 128
  %v15 = getelementptr <32 x i32>, <32 x i32>* %a17, i32 15
  store <32 x i32> %a15, <32 x i32>* %v15, align 128
  %v16 = getelementptr <32 x i32>, <32 x i32>* %a17, i32 16
  store <32 x i32> %a16, <32 x i32>* %v16, align 128
  ret void
}

define void @f19(<64 x half> %a0, <64 x half> %a1, <64 x half> %a2, <64 x half> %a3, <64 x half> %a4, <64 x half> %a5, <64 x half> %a6, <64 x half> %a7, <64 x half> %a8, <64 x half> %a9, <64 x half> %a10, <64 x half> %a11, <64 x half> %a12, <64 x half> %a13, <64 x half> %a14, <64 x half> %a15, <64 x half> %a16, <64 x half>* %a17) #0 {
; CHECK-LABEL: f19:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     r2 = add(r0,#1152)
; CHECK-NEXT:     r3 = add(r0,#1280)
; CHECK-NEXT:     r4 = add(r0,#1408)
; CHECK-NEXT:     allocframe(r29,#0):raw
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r1 = add(r30,#8)
; CHECK-NEXT:     r7 = add(r0,#1024)
; CHECK-NEXT:     r6 = add(r0,#1536)
; CHECK-NEXT:     vmem(r2+#0) = v9
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r5 = add(r0,#1664)
; CHECK-NEXT:     r3 = add(r0,#1920)
; CHECK-NEXT:     r2 = add(r0,#2048)
; CHECK-NEXT:     vmem(r3+#0) = v10
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r4 = add(r0,#1792)
; CHECK-NEXT:     r29 = and(r29,#-128)
; CHECK-NEXT:     v16 = vmem(r1+#0)
; CHECK-NEXT:     vmem(r4+#0) = v11
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r7+#0) = v8
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#4) = v4
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r6+#0) = v12
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#5) = v5
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r5+#0) = v13
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#6) = v6
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r4+#0) = v14
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#7) = v7
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r3+#0) = v15
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r2+#0) = v16
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r31:30 = dealloc_return(r30):raw
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <64 x half>, <64 x half>* %a17, i32 0
  store <64 x half> %a0, <64 x half>* %v0, align 128
  %v1 = getelementptr <64 x half>, <64 x half>* %a17, i32 1
  store <64 x half> %a1, <64 x half>* %v1, align 128
  %v2 = getelementptr <64 x half>, <64 x half>* %a17, i32 2
  store <64 x half> %a2, <64 x half>* %v2, align 128
  %v3 = getelementptr <64 x half>, <64 x half>* %a17, i32 3
  store <64 x half> %a3, <64 x half>* %v3, align 128
  %v4 = getelementptr <64 x half>, <64 x half>* %a17, i32 4
  store <64 x half> %a4, <64 x half>* %v4, align 128
  %v5 = getelementptr <64 x half>, <64 x half>* %a17, i32 5
  store <64 x half> %a5, <64 x half>* %v5, align 128
  %v6 = getelementptr <64 x half>, <64 x half>* %a17, i32 6
  store <64 x half> %a6, <64 x half>* %v6, align 128
  %v7 = getelementptr <64 x half>, <64 x half>* %a17, i32 7
  store <64 x half> %a7, <64 x half>* %v7, align 128
  %v8 = getelementptr <64 x half>, <64 x half>* %a17, i32 8
  store <64 x half> %a8, <64 x half>* %v8, align 128
  %v9 = getelementptr <64 x half>, <64 x half>* %a17, i32 9
  store <64 x half> %a9, <64 x half>* %v9, align 128
  %v10 = getelementptr <64 x half>, <64 x half>* %a17, i32 10
  store <64 x half> %a10, <64 x half>* %v10, align 128
  %v11 = getelementptr <64 x half>, <64 x half>* %a17, i32 11
  store <64 x half> %a11, <64 x half>* %v11, align 128
  %v12 = getelementptr <64 x half>, <64 x half>* %a17, i32 12
  store <64 x half> %a12, <64 x half>* %v12, align 128
  %v13 = getelementptr <64 x half>, <64 x half>* %a17, i32 13
  store <64 x half> %a13, <64 x half>* %v13, align 128
  %v14 = getelementptr <64 x half>, <64 x half>* %a17, i32 14
  store <64 x half> %a14, <64 x half>* %v14, align 128
  %v15 = getelementptr <64 x half>, <64 x half>* %a17, i32 15
  store <64 x half> %a15, <64 x half>* %v15, align 128
  %v16 = getelementptr <64 x half>, <64 x half>* %a17, i32 16
  store <64 x half> %a16, <64 x half>* %v16, align 128
  ret void
}

define void @f20(<32 x float> %a0, <32 x float> %a1, <32 x float> %a2, <32 x float> %a3, <32 x float> %a4, <32 x float> %a5, <32 x float> %a6, <32 x float> %a7, <32 x float> %a8, <32 x float> %a9, <32 x float> %a10, <32 x float> %a11, <32 x float> %a12, <32 x float> %a13, <32 x float> %a14, <32 x float> %a15, <32 x float> %a16, <32 x float>* %a17) #0 {
; CHECK-LABEL: f20:
; CHECK:       // %bb.0: // %b0
; CHECK-NEXT:    {
; CHECK-NEXT:     r2 = add(r0,#1152)
; CHECK-NEXT:     r3 = add(r0,#1280)
; CHECK-NEXT:     r4 = add(r0,#1408)
; CHECK-NEXT:     allocframe(r29,#0):raw
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r1 = add(r30,#8)
; CHECK-NEXT:     r7 = add(r0,#1024)
; CHECK-NEXT:     r6 = add(r0,#1536)
; CHECK-NEXT:     vmem(r2+#0) = v9
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r5 = add(r0,#1664)
; CHECK-NEXT:     r3 = add(r0,#1920)
; CHECK-NEXT:     r2 = add(r0,#2048)
; CHECK-NEXT:     vmem(r3+#0) = v10
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r4 = add(r0,#1792)
; CHECK-NEXT:     r29 = and(r29,#-128)
; CHECK-NEXT:     v16 = vmem(r1+#0)
; CHECK-NEXT:     vmem(r4+#0) = v11
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#0) = v0
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#1) = v1
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r7+#0) = v8
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#2) = v2
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#3) = v3
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#4) = v4
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r6+#0) = v12
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#5) = v5
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r5+#0) = v13
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#6) = v6
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r4+#0) = v14
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r0+#7) = v7
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r3+#0) = v15
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     vmem(r2+#0) = v16
; CHECK-NEXT:    }
; CHECK-NEXT:    {
; CHECK-NEXT:     r31:30 = dealloc_return(r30):raw
; CHECK-NEXT:    }
b0:
  %v0 = getelementptr <32 x float>, <32 x float>* %a17, i32 0
  store <32 x float> %a0, <32 x float>* %v0, align 128
  %v1 = getelementptr <32 x float>, <32 x float>* %a17, i32 1
  store <32 x float> %a1, <32 x float>* %v1, align 128
  %v2 = getelementptr <32 x float>, <32 x float>* %a17, i32 2
  store <32 x float> %a2, <32 x float>* %v2, align 128
  %v3 = getelementptr <32 x float>, <32 x float>* %a17, i32 3
  store <32 x float> %a3, <32 x float>* %v3, align 128
  %v4 = getelementptr <32 x float>, <32 x float>* %a17, i32 4
  store <32 x float> %a4, <32 x float>* %v4, align 128
  %v5 = getelementptr <32 x float>, <32 x float>* %a17, i32 5
  store <32 x float> %a5, <32 x float>* %v5, align 128
  %v6 = getelementptr <32 x float>, <32 x float>* %a17, i32 6
  store <32 x float> %a6, <32 x float>* %v6, align 128
  %v7 = getelementptr <32 x float>, <32 x float>* %a17, i32 7
  store <32 x float> %a7, <32 x float>* %v7, align 128
  %v8 = getelementptr <32 x float>, <32 x float>* %a17, i32 8
  store <32 x float> %a8, <32 x float>* %v8, align 128
  %v9 = getelementptr <32 x float>, <32 x float>* %a17, i32 9
  store <32 x float> %a9, <32 x float>* %v9, align 128
  %v10 = getelementptr <32 x float>, <32 x float>* %a17, i32 10
  store <32 x float> %a10, <32 x float>* %v10, align 128
  %v11 = getelementptr <32 x float>, <32 x float>* %a17, i32 11
  store <32 x float> %a11, <32 x float>* %v11, align 128
  %v12 = getelementptr <32 x float>, <32 x float>* %a17, i32 12
  store <32 x float> %a12, <32 x float>* %v12, align 128
  %v13 = getelementptr <32 x float>, <32 x float>* %a17, i32 13
  store <32 x float> %a13, <32 x float>* %v13, align 128
  %v14 = getelementptr <32 x float>, <32 x float>* %a17, i32 14
  store <32 x float> %a14, <32 x float>* %v14, align 128
  %v15 = getelementptr <32 x float>, <32 x float>* %a17, i32 15
  store <32 x float> %a15, <32 x float>* %v15, align 128
  %v16 = getelementptr <32 x float>, <32 x float>* %a17, i32 16
  store <32 x float> %a16, <32 x float>* %v16, align 128
  ret void
}

define <128 x i8> @f21() #0 {
; CHECK-LABEL: f21:
; CHECK:       // %bb.0:
; CHECK-NEXT:    {
; CHECK-NEXT:     v0 = vxor(v0,v0)
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:    }
  %v0 = insertelement <128 x i8> undef, i8 0, i32 0
  %v1 = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> zeroinitializer
  ret <128 x i8> %v1
}

define <256 x i8> @f22() #0 {
; CHECK-LABEL: f22:
; CHECK:       // %bb.0:
; CHECK-NEXT:    {
; CHECK-NEXT:     v1:0.w = vsub(v1:0.w,v1:0.w)
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:    }
  %v0 = insertelement <256 x i8> undef, i8 0, i32 0
  %v1 = shufflevector <256 x i8> %v0, <256 x i8> undef, <256 x i32> zeroinitializer
  ret <256 x i8> %v1
}

define <64 x i16> @f23() #0 {
; CHECK-LABEL: f23:
; CHECK:       // %bb.0:
; CHECK-NEXT:    {
; CHECK-NEXT:     v0 = vxor(v0,v0)
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:    }
  %v0 = insertelement <64 x i16> undef, i16 0, i32 0
  %v1 = shufflevector <64 x i16> %v0, <64 x i16> undef, <64 x i32> zeroinitializer
  ret <64 x i16> %v1
}

define <128 x i16> @f24() #0 {
; CHECK-LABEL: f24:
; CHECK:       // %bb.0:
; CHECK-NEXT:    {
; CHECK-NEXT:     v1:0.w = vsub(v1:0.w,v1:0.w)
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:    }
  %v0 = insertelement <128 x i16> undef, i16 0, i32 0
  %v1 = shufflevector <128 x i16> %v0, <128 x i16> undef, <128 x i32> zeroinitializer
  ret <128 x i16> %v1
}

define <32 x i32> @f25() #0 {
; CHECK-LABEL: f25:
; CHECK:       // %bb.0:
; CHECK-NEXT:    {
; CHECK-NEXT:     v0 = vxor(v0,v0)
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:    }
  %v0 = insertelement <32 x i32> undef, i32 0, i32 0
  %v1 = shufflevector <32 x i32> %v0, <32 x i32> undef, <32 x i32> zeroinitializer
  ret <32 x i32> %v1
}

define <64 x i32> @f26() #0 {
; CHECK-LABEL: f26:
; CHECK:       // %bb.0:
; CHECK-NEXT:    {
; CHECK-NEXT:     v1:0.w = vsub(v1:0.w,v1:0.w)
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:    }
  %v0 = insertelement <64 x i32> undef, i32 0, i32 0
  %v1 = shufflevector <64 x i32> %v0, <64 x i32> undef, <64 x i32> zeroinitializer
  ret <64 x i32> %v1
}

define <64 x half> @f27() #0 {
; CHECK-LABEL: f27:
; CHECK:       // %bb.0:
; CHECK-NEXT:    {
; CHECK-NEXT:     v0 = vxor(v0,v0)
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:    }
  %v0 = insertelement <64 x half> undef, half 0xH0, i32 0
  %v1 = shufflevector <64 x half> %v0, <64 x half> undef, <64 x i32> zeroinitializer
  ret <64 x half> %v1
}

define <128 x half> @f28() #0 {
; CHECK-LABEL: f28:
; CHECK:       // %bb.0:
; CHECK-NEXT:    {
; CHECK-NEXT:     v1:0.w = vsub(v1:0.w,v1:0.w)
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:    }
  %v0 = insertelement <128 x half> undef, half 0xH0, i32 0
  %v1 = shufflevector <128 x half> %v0, <128 x half> undef, <128 x i32> zeroinitializer
  ret <128 x half> %v1
}

define <32 x float> @f29() #0 {
; CHECK-LABEL: f29:
; CHECK:       // %bb.0:
; CHECK-NEXT:    {
; CHECK-NEXT:     v0 = vxor(v0,v0)
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:    }
  %v0 = insertelement <32 x float> undef, float 0.0, i32 0
  %v1 = shufflevector <32 x float> %v0, <32 x float> undef, <32 x i32> zeroinitializer
  ret <32 x float> %v1
}

define <64 x float> @f30() #0 {
; CHECK-LABEL: f30:
; CHECK:       // %bb.0:
; CHECK-NEXT:    {
; CHECK-NEXT:     v1:0.w = vsub(v1:0.w,v1:0.w)
; CHECK-NEXT:     jumpr r31
; CHECK-NEXT:    }
  %v0 = insertelement <64 x float> undef, float 0.0, i32 0
  %v1 = shufflevector <64 x float> %v0, <64 x float> undef, <64 x i32> zeroinitializer
  ret <64 x float> %v1
}

attributes #0 = { nounwind "target-cpu"="hexagonv69" "target-features"="+hvxv69,+hvx-length128b,+hvx-qfloat" }