; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py

; RUN: llc -mtriple=thumbv8.1m.main-none-none-eabi -mattr=+mve.fp %s -o 2>/dev/null - | FileCheck %s

define void @ptr_iv_v4i32(i32* noalias nocapture readonly %A, i32* noalias nocapture %B, i32 %y) {
; CHECK-LABEL: ptr_iv_v4i32:
; CHECK:       @ %bb.0: @ %vector.ph
; CHECK-NEXT:    .save {r7, lr}
; CHECK-NEXT:    push {r7, lr}
; CHECK-NEXT:    mov.w lr, #249
; CHECK-NEXT:    adr r3, .LCPI0_0
; CHECK-NEXT:    vldrw.u32 q0, [r3]
; CHECK-NEXT:  .LBB0_1: @ %vector.body
; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=1
; CHECK-NEXT:    vldrw.u32 q1, [r0, q0, uxtw #2]
; CHECK-NEXT:    adds r0, #64
; CHECK-NEXT:    vadd.i32 q1, q1, r2
; CHECK-NEXT:    vstrw.32 q1, [r1, q0, uxtw #2]
; CHECK-NEXT:    adds r1, #64
; CHECK-NEXT:    le lr, .LBB0_1
; CHECK-NEXT:  @ %bb.2: @ %end
; CHECK-NEXT:    pop {r7, pc}
; CHECK-NEXT:    .p2align 4
; CHECK-NEXT:  @ %bb.3:
; CHECK-NEXT:  .LCPI0_0:
; CHECK-NEXT:    .long 0 @ 0x0
; CHECK-NEXT:    .long 4 @ 0x4
; CHECK-NEXT:    .long 8 @ 0x8
; CHECK-NEXT:    .long 12 @ 0xc
vector.ph:
  %broadcast.splatinsert = insertelement <4 x i32> undef, i32 %y, i32 0
  %broadcast.splat = shufflevector <4 x i32> %broadcast.splatinsert, <4 x i32> undef, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:
  %pointer.phi = phi i32* [ %A, %vector.ph ], [ %0, %vector.body ]
  %pointer.phi13 = phi i32* [ %B, %vector.ph ], [ %2, %vector.body ]
  %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %0 = getelementptr i32, i32* %pointer.phi, i32 16
  %1 = getelementptr i32, i32* %pointer.phi, <4 x i32> <i32 0, i32 4, i32 8, i32 12>
  %2 = getelementptr i32, i32* %pointer.phi13, i32 16
  %3 = getelementptr i32, i32* %pointer.phi13, <4 x i32> <i32 0, i32 4, i32 8, i32 12>
  %wide.masked.gather = call <4 x i32> @llvm.masked.gather.v4i32.v4p0i32(<4 x i32*> %1, i32 4, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x i32> undef)
  %4 = add nsw <4 x i32> %wide.masked.gather, %broadcast.splat
  call void @llvm.masked.scatter.v4i32.v4p0i32(<4 x i32> %4, <4 x i32*> %3, i32 4, <4 x i1> <i1 true, i1 true, i1 true, i1 true>)
  %index.next = add i32 %index, 4
  %5 = icmp eq i32 %index.next, 996
  br i1 %5, label %end, label %vector.body

end:
  ret void
}

define void @ptr_iv_v4i32_mult(i32* noalias nocapture readonly %A, i32* noalias nocapture %B, i32 %y) {
; CHECK-LABEL: ptr_iv_v4i32_mult:
; CHECK:       @ %bb.0: @ %vector.ph
; CHECK-NEXT:    .save {r7, lr}
; CHECK-NEXT:    push {r7, lr}
; CHECK-NEXT:    mov.w lr, #249
; CHECK-NEXT:    adr r1, .LCPI1_0
; CHECK-NEXT:    adr r3, .LCPI1_1
; CHECK-NEXT:    vldrw.u32 q0, [r3]
; CHECK-NEXT:    vldrw.u32 q1, [r1]
; CHECK-NEXT:  .LBB1_1: @ %vector.body
; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=1
; CHECK-NEXT:    vldrw.u32 q2, [r0, q0, uxtw #2]
; CHECK-NEXT:    vadd.i32 q2, q2, r2
; CHECK-NEXT:    vstrw.32 q2, [r0, q1, uxtw #2]
; CHECK-NEXT:    adds r0, #64
; CHECK-NEXT:    le lr, .LBB1_1
; CHECK-NEXT:  @ %bb.2: @ %end
; CHECK-NEXT:    pop {r7, pc}
; CHECK-NEXT:    .p2align 4
; CHECK-NEXT:  @ %bb.3:
; CHECK-NEXT:  .LCPI1_0:
; CHECK-NEXT:    .long 5 @ 0x5
; CHECK-NEXT:    .long 9 @ 0x9
; CHECK-NEXT:    .long 13 @ 0xd
; CHECK-NEXT:    .long 17 @ 0x11
; CHECK-NEXT:  .LCPI1_1:
; CHECK-NEXT:    .long 3 @ 0x3
; CHECK-NEXT:    .long 7 @ 0x7
; CHECK-NEXT:    .long 11 @ 0xb
; CHECK-NEXT:    .long 15 @ 0xf
vector.ph:
  %broadcast.splatinsert = insertelement <4 x i32> undef, i32 %y, i32 0
  %broadcast.splat = shufflevector <4 x i32> %broadcast.splatinsert, <4 x i32> undef, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:
  %pointer.phi = phi i32* [ %A, %vector.ph ], [ %0, %vector.body ]
  %pointer.phi13 = phi i32* [ %B, %vector.ph ], [ %2, %vector.body ]
  %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %0 = getelementptr i32, i32* %pointer.phi, i32 16
  %1 = getelementptr i32, i32* %pointer.phi, <4 x i32> <i32 0, i32 4, i32 8, i32 12>
  %gather.address = getelementptr i32, <4 x i32*> %1, i32 3
  %2 = getelementptr i32, i32* %pointer.phi13, i32 16
  %3 = getelementptr i32, i32* %pointer.phi13, <4 x i32> <i32 0, i32 4, i32 8, i32 12>
  %scatter.address = getelementptr i32, <4 x i32*> %1, i32 5
  %wide.masked.gather = call <4 x i32> @llvm.masked.gather.v4i32.v4p0i32(<4 x i32*> %gather.address, i32 4, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x i32> undef)
  %4 = add nsw <4 x i32> %wide.masked.gather, %broadcast.splat
  call void @llvm.masked.scatter.v4i32.v4p0i32(<4 x i32> %4, <4 x i32*> %scatter.address, i32 4, <4 x i1> <i1 true, i1 true, i1 true, i1 true>)
  %index.next = add i32 %index, 4
  %5 = icmp eq i32 %index.next, 996
  br i1 %5, label %end, label %vector.body

end:
  ret void
}

define void @ptr_iv_v8i16(i16* noalias nocapture readonly %A, i16* noalias nocapture %B, i16 %y) {
; CHECK-LABEL: ptr_iv_v8i16:
; CHECK:       @ %bb.0: @ %vector.ph
; CHECK-NEXT:    .save {r7, lr}
; CHECK-NEXT:    push {r7, lr}
; CHECK-NEXT:    mov.w lr, #249
; CHECK-NEXT:    adr r3, .LCPI2_0
; CHECK-NEXT:    vldrw.u32 q0, [r3]
; CHECK-NEXT:  .LBB2_1: @ %vector.body
; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=1
; CHECK-NEXT:    vldrh.u16 q1, [r0, q0, uxtw #1]
; CHECK-NEXT:    adds r0, #64
; CHECK-NEXT:    vadd.i16 q1, q1, r2
; CHECK-NEXT:    vstrh.16 q1, [r1, q0, uxtw #1]
; CHECK-NEXT:    adds r1, #64
; CHECK-NEXT:    le lr, .LBB2_1
; CHECK-NEXT:  @ %bb.2: @ %end
; CHECK-NEXT:    pop {r7, pc}
; CHECK-NEXT:    .p2align 4
; CHECK-NEXT:  @ %bb.3:
; CHECK-NEXT:  .LCPI2_0:
; CHECK-NEXT:    .short 0 @ 0x0
; CHECK-NEXT:    .short 4 @ 0x4
; CHECK-NEXT:    .short 8 @ 0x8
; CHECK-NEXT:    .short 12 @ 0xc
; CHECK-NEXT:    .short 16 @ 0x10
; CHECK-NEXT:    .short 20 @ 0x14
; CHECK-NEXT:    .short 24 @ 0x18
; CHECK-NEXT:    .short 28 @ 0x1c
vector.ph:
  %broadcast.splatinsert = insertelement <8 x i16> undef, i16 %y, i32 0
  %broadcast.splat = shufflevector <8 x i16> %broadcast.splatinsert, <8 x i16> undef, <8 x i32> zeroinitializer
  br label %vector.body

vector.body:
  %pointer.phi = phi i16* [ %A, %vector.ph ], [ %0, %vector.body ]
  %pointer.phi13 = phi i16* [ %B, %vector.ph ], [ %2, %vector.body ]
  %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %0 = getelementptr i16, i16* %pointer.phi, i32 32
  %1 = getelementptr i16, i16* %pointer.phi, <8 x i16> <i16 0, i16 4, i16 8, i16 12, i16 16, i16 20, i16 24, i16 28>
  %2 = getelementptr i16, i16* %pointer.phi13, i32 32
  %3 = getelementptr i16, i16* %pointer.phi13, <8 x i16> <i16 0, i16 4, i16 8, i16 12, i16 16, i16 20, i16 24, i16 28>
  %wide.masked.gather = call <8 x i16> @llvm.masked.gather.v8i16.v8p0i16(<8 x i16*> %1, i32 4, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <8 x i16> undef)
  %4 = add nsw <8 x i16> %wide.masked.gather, %broadcast.splat
  call void @llvm.masked.scatter.v8i16.v8p0i16(<8 x i16> %4, <8 x i16*> %3, i32 4, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>)
  %index.next = add i32 %index, 4
  %5 = icmp eq i32 %index.next, 996
  br i1 %5, label %end, label %vector.body

end:
  ret void
}


define void @ptr_iv_v8i16_mult(i16* noalias nocapture readonly %A, i16* noalias nocapture %B, i16 %y) {
; CHECK-LABEL: ptr_iv_v8i16_mult:
; CHECK:       @ %bb.0: @ %vector.ph
; CHECK-NEXT:    .save {r7, lr}
; CHECK-NEXT:    push {r7, lr}
; CHECK-NEXT:    mov.w lr, #249
; CHECK-NEXT:    adr.w r12, .LCPI3_0
; CHECK-NEXT:    adr r3, .LCPI3_1
; CHECK-NEXT:    vldrw.u32 q0, [r3]
; CHECK-NEXT:    vldrw.u32 q1, [r12]
; CHECK-NEXT:  .LBB3_1: @ %vector.body
; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=1
; CHECK-NEXT:    vldrh.u16 q2, [r0, q0, uxtw #1]
; CHECK-NEXT:    adds r0, #64
; CHECK-NEXT:    vadd.i16 q2, q2, r2
; CHECK-NEXT:    vstrh.16 q2, [r1, q1, uxtw #1]
; CHECK-NEXT:    adds r1, #64
; CHECK-NEXT:    le lr, .LBB3_1
; CHECK-NEXT:  @ %bb.2: @ %end
; CHECK-NEXT:    pop {r7, pc}
; CHECK-NEXT:    .p2align 4
; CHECK-NEXT:  @ %bb.3:
; CHECK-NEXT:  .LCPI3_0:
; CHECK-NEXT:    .short 5 @ 0x5
; CHECK-NEXT:    .short 9 @ 0x9
; CHECK-NEXT:    .short 13 @ 0xd
; CHECK-NEXT:    .short 17 @ 0x11
; CHECK-NEXT:    .short 21 @ 0x15
; CHECK-NEXT:    .short 25 @ 0x19
; CHECK-NEXT:    .short 29 @ 0x1d
; CHECK-NEXT:    .short 33 @ 0x21
; CHECK-NEXT:  .LCPI3_1:
; CHECK-NEXT:    .short 3 @ 0x3
; CHECK-NEXT:    .short 7 @ 0x7
; CHECK-NEXT:    .short 11 @ 0xb
; CHECK-NEXT:    .short 15 @ 0xf
; CHECK-NEXT:    .short 19 @ 0x13
; CHECK-NEXT:    .short 23 @ 0x17
; CHECK-NEXT:    .short 27 @ 0x1b
; CHECK-NEXT:    .short 31 @ 0x1f
vector.ph:
  %broadcast.splatinsert = insertelement <8 x i16> undef, i16 %y, i32 0
  %broadcast.splat = shufflevector <8 x i16> %broadcast.splatinsert, <8 x i16> undef, <8 x i32> zeroinitializer
  br label %vector.body

vector.body:
  %pointer.phi = phi i16* [ %A, %vector.ph ], [ %0, %vector.body ]
  %pointer.phi13 = phi i16* [ %B, %vector.ph ], [ %2, %vector.body ]
  %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %0 = getelementptr i16, i16* %pointer.phi, i32 32
  %1 = getelementptr i16, i16* %pointer.phi, <8 x i16> <i16 0, i16 4, i16 8, i16 12, i16 16, i16 20, i16 24, i16 28>
  %gather.address = getelementptr i16, <8 x i16*> %1, i16 3
  %2 = getelementptr i16, i16* %pointer.phi13, i32 32
  %3 = getelementptr i16, i16* %pointer.phi13, <8 x i16> <i16 0, i16 4, i16 8, i16 12, i16 16, i16 20, i16 24, i16 28>
  %scatter.address = getelementptr i16, <8 x i16*> %3, i16 5
  %wide.masked.gather = call <8 x i16> @llvm.masked.gather.v8i16.v8p0i16(<8 x i16*> %gather.address, i32 4, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <8 x i16> undef)
  %4 = add nsw <8 x i16> %wide.masked.gather, %broadcast.splat
  call void @llvm.masked.scatter.v8i16.v8p0i16(<8 x i16> %4, <8 x i16*> %scatter.address, i32 4, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>)
  %index.next = add i32 %index, 4
  %5 = icmp eq i32 %index.next, 996
  br i1 %5, label %end, label %vector.body

end:
  ret void
}

define void @ptr_iv_v16i8(i8* noalias nocapture readonly %A, i8* noalias nocapture %B, i8 %y) {
; CHECK-LABEL: ptr_iv_v16i8:
; CHECK:       @ %bb.0: @ %vector.ph
; CHECK-NEXT:    .save {r7, lr}
; CHECK-NEXT:    push {r7, lr}
; CHECK-NEXT:    mov.w lr, #249
; CHECK-NEXT:    adr r3, .LCPI4_0
; CHECK-NEXT:    vldrw.u32 q0, [r3]
; CHECK-NEXT:  .LBB4_1: @ %vector.body
; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=1
; CHECK-NEXT:    vldrb.u8 q1, [r0, q0]
; CHECK-NEXT:    adds r0, #64
; CHECK-NEXT:    vadd.i8 q1, q1, r2
; CHECK-NEXT:    vstrb.8 q1, [r1, q0]
; CHECK-NEXT:    adds r1, #64
; CHECK-NEXT:    le lr, .LBB4_1
; CHECK-NEXT:  @ %bb.2: @ %end
; CHECK-NEXT:    pop {r7, pc}
; CHECK-NEXT:    .p2align 4
; CHECK-NEXT:  @ %bb.3:
; CHECK-NEXT:  .LCPI4_0:
; CHECK-NEXT:    .byte 0 @ 0x0
; CHECK-NEXT:    .byte 4 @ 0x4
; CHECK-NEXT:    .byte 8 @ 0x8
; CHECK-NEXT:    .byte 12 @ 0xc
; CHECK-NEXT:    .byte 16 @ 0x10
; CHECK-NEXT:    .byte 20 @ 0x14
; CHECK-NEXT:    .byte 24 @ 0x18
; CHECK-NEXT:    .byte 28 @ 0x1c
; CHECK-NEXT:    .byte 32 @ 0x20
; CHECK-NEXT:    .byte 36 @ 0x24
; CHECK-NEXT:    .byte 40 @ 0x28
; CHECK-NEXT:    .byte 44 @ 0x2c
; CHECK-NEXT:    .byte 48 @ 0x30
; CHECK-NEXT:    .byte 52 @ 0x34
; CHECK-NEXT:    .byte 56 @ 0x38
; CHECK-NEXT:    .byte 60 @ 0x3c
vector.ph:                                        ; preds = %entry
  %broadcast.splatinsert = insertelement <16 x i8> undef, i8 %y, i32 0
  %broadcast.splat = shufflevector <16 x i8> %broadcast.splatinsert, <16 x i8> undef, <16 x i32> zeroinitializer
  br label %vector.body

vector.body:
  %pointer.phi = phi i8* [ %A, %vector.ph ], [ %0, %vector.body ]
  %pointer.phi13 = phi i8* [ %B, %vector.ph ], [ %2, %vector.body ]
  %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %0 = getelementptr i8, i8* %pointer.phi, i32 64
  %1 = getelementptr i8, i8* %pointer.phi, <16 x i8> <i8 0, i8 4, i8 8, i8 12, i8 16, i8 20, i8 24, i8 28, i8 32, i8 36, i8 40, i8 44, i8 48, i8 52, i8 56, i8 60>
  %2 = getelementptr i8, i8* %pointer.phi13, i32 64
  %3 = getelementptr i8, i8* %pointer.phi13, <16 x i8> <i8 0, i8 4, i8 8, i8 12, i8 16, i8 20, i8 24, i8 28, i8 32, i8 36, i8 40, i8 44, i8 48, i8 52, i8 56, i8 60>
  %wide.masked.gather = call <16 x i8> @llvm.masked.gather.v16i8.v16p0i8(<16 x i8*> %1, i32 4, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <16 x i8> undef)
  %4 = add nsw <16 x i8> %wide.masked.gather, %broadcast.splat
  call void @llvm.masked.scatter.v16i8.v16p0i8(<16 x i8> %4, <16 x i8*> %3, i32 4, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>)
  %index.next = add i32 %index, 4
  %5 = icmp eq i32 %index.next, 996
  br i1 %5, label %end, label %vector.body

end:
  ret void
}


define void @ptr_iv_v16i8_mult(i8* noalias nocapture readonly %A, i8* noalias nocapture %B, i8 %y) {
; CHECK-LABEL: ptr_iv_v16i8_mult:
; CHECK:       @ %bb.0: @ %vector.ph
; CHECK-NEXT:    .save {r7, lr}
; CHECK-NEXT:    push {r7, lr}
; CHECK-NEXT:    mov.w lr, #249
; CHECK-NEXT:    adr.w r12, .LCPI5_0
; CHECK-NEXT:    adr r3, .LCPI5_1
; CHECK-NEXT:    vldrw.u32 q0, [r3]
; CHECK-NEXT:    vldrw.u32 q1, [r12]
; CHECK-NEXT:  .LBB5_1: @ %vector.body
; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=1
; CHECK-NEXT:    vldrb.u8 q2, [r0, q0]
; CHECK-NEXT:    adds r0, #64
; CHECK-NEXT:    vadd.i8 q2, q2, r2
; CHECK-NEXT:    vstrb.8 q2, [r1, q1]
; CHECK-NEXT:    adds r1, #64
; CHECK-NEXT:    le lr, .LBB5_1
; CHECK-NEXT:  @ %bb.2: @ %end
; CHECK-NEXT:    pop {r7, pc}
; CHECK-NEXT:    .p2align 4
; CHECK-NEXT:  @ %bb.3:
; CHECK-NEXT:  .LCPI5_0:
; CHECK-NEXT:    .byte 5 @ 0x5
; CHECK-NEXT:    .byte 9 @ 0x9
; CHECK-NEXT:    .byte 13 @ 0xd
; CHECK-NEXT:    .byte 17 @ 0x11
; CHECK-NEXT:    .byte 21 @ 0x15
; CHECK-NEXT:    .byte 25 @ 0x19
; CHECK-NEXT:    .byte 29 @ 0x1d
; CHECK-NEXT:    .byte 33 @ 0x21
; CHECK-NEXT:    .byte 37 @ 0x25
; CHECK-NEXT:    .byte 41 @ 0x29
; CHECK-NEXT:    .byte 45 @ 0x2d
; CHECK-NEXT:    .byte 49 @ 0x31
; CHECK-NEXT:    .byte 53 @ 0x35
; CHECK-NEXT:    .byte 57 @ 0x39
; CHECK-NEXT:    .byte 61 @ 0x3d
; CHECK-NEXT:    .byte 65 @ 0x41
; CHECK-NEXT:  .LCPI5_1:
; CHECK-NEXT:    .byte 3 @ 0x3
; CHECK-NEXT:    .byte 7 @ 0x7
; CHECK-NEXT:    .byte 11 @ 0xb
; CHECK-NEXT:    .byte 15 @ 0xf
; CHECK-NEXT:    .byte 19 @ 0x13
; CHECK-NEXT:    .byte 23 @ 0x17
; CHECK-NEXT:    .byte 27 @ 0x1b
; CHECK-NEXT:    .byte 31 @ 0x1f
; CHECK-NEXT:    .byte 35 @ 0x23
; CHECK-NEXT:    .byte 39 @ 0x27
; CHECK-NEXT:    .byte 43 @ 0x2b
; CHECK-NEXT:    .byte 47 @ 0x2f
; CHECK-NEXT:    .byte 51 @ 0x33
; CHECK-NEXT:    .byte 55 @ 0x37
; CHECK-NEXT:    .byte 59 @ 0x3b
; CHECK-NEXT:    .byte 63 @ 0x3f
vector.ph:                                        ; preds = %entry
  %broadcast.splatinsert = insertelement <16 x i8> undef, i8 %y, i32 0
  %broadcast.splat = shufflevector <16 x i8> %broadcast.splatinsert, <16 x i8> undef, <16 x i32> zeroinitializer
  br label %vector.body

vector.body:
  %pointer.phi = phi i8* [ %A, %vector.ph ], [ %0, %vector.body ]
  %pointer.phi13 = phi i8* [ %B, %vector.ph ], [ %2, %vector.body ]
  %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %0 = getelementptr i8, i8* %pointer.phi, i32 64
  %1 = getelementptr i8, i8* %pointer.phi, <16 x i8> <i8 0, i8 4, i8 8, i8 12, i8 16, i8 20, i8 24, i8 28, i8 32, i8 36, i8 40, i8 44, i8 48, i8 52, i8 56, i8 60>
  %gather.address = getelementptr i8, <16 x i8*> %1, i8 3
  %2 = getelementptr i8, i8* %pointer.phi13, i32 64
  %3 = getelementptr i8, i8* %pointer.phi13, <16 x i8> <i8 0, i8 4, i8 8, i8 12, i8 16, i8 20, i8 24, i8 28, i8 32, i8 36, i8 40, i8 44, i8 48, i8 52, i8 56, i8 60>
  %scatter.address = getelementptr i8, <16 x i8*> %3, i8 5
  %wide.masked.gather = call <16 x i8> @llvm.masked.gather.v16i8.v16p0i8(<16 x i8*> %gather.address, i32 4, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <16 x i8> undef)
  %4 = add nsw <16 x i8> %wide.masked.gather, %broadcast.splat
  call void @llvm.masked.scatter.v16i8.v16p0i8(<16 x i8> %4, <16 x i8*> %scatter.address, i32 4, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>)
  %index.next = add i32 %index, 4
  %5 = icmp eq i32 %index.next, 996
  br i1 %5, label %end, label %vector.body

end:
  ret void
}

define void @ptr_iv_v4f32(float* noalias nocapture readonly %A, float* noalias nocapture %B, float %y) {
; CHECK-LABEL: ptr_iv_v4f32:
; CHECK:       @ %bb.0: @ %vector.ph
; CHECK-NEXT:    .save {r7, lr}
; CHECK-NEXT:    push {r7, lr}
; CHECK-NEXT:    mov.w lr, #249
; CHECK-NEXT:    adr r3, .LCPI6_0
; CHECK-NEXT:    vldrw.u32 q0, [r3]
; CHECK-NEXT:  .LBB6_1: @ %vector.body
; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=1
; CHECK-NEXT:    vldrw.u32 q1, [r0, q0, uxtw #2]
; CHECK-NEXT:    adds r0, #64
; CHECK-NEXT:    vadd.f32 q1, q1, r2
; CHECK-NEXT:    vstrw.32 q1, [r1, q0, uxtw #2]
; CHECK-NEXT:    adds r1, #64
; CHECK-NEXT:    le lr, .LBB6_1
; CHECK-NEXT:  @ %bb.2: @ %end
; CHECK-NEXT:    pop {r7, pc}
; CHECK-NEXT:    .p2align 4
; CHECK-NEXT:  @ %bb.3:
; CHECK-NEXT:  .LCPI6_0:
; CHECK-NEXT:    .long 0 @ 0x0
; CHECK-NEXT:    .long 4 @ 0x4
; CHECK-NEXT:    .long 8 @ 0x8
; CHECK-NEXT:    .long 12 @ 0xc
vector.ph:                                        ; preds = %entry
  %broadcast.splatinsert = insertelement <4 x float> undef, float %y, i32 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> undef, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:
  %pointer.phi = phi float* [ %A, %vector.ph ], [ %0, %vector.body ]
  %pointer.phi13 = phi float* [ %B, %vector.ph ], [ %2, %vector.body ]
  %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %0 = getelementptr float, float* %pointer.phi, i32 16
  %1 = getelementptr float, float* %pointer.phi, <4 x i32> <i32 0, i32 4, i32 8, i32 12>
  %2 = getelementptr float, float* %pointer.phi13, i32 16
  %3 = getelementptr float, float* %pointer.phi13, <4 x i32> <i32 0, i32 4, i32 8, i32 12>
  %wide.masked.gather = call <4 x float> @llvm.masked.gather.v4f32.v4p0f32(<4 x float*> %1, i32 4, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x float> undef)
  %4 = fadd <4 x float> %wide.masked.gather, %broadcast.splat
  call void @llvm.masked.scatter.v4f32.v4p0f32(<4 x float> %4, <4 x float*> %3, i32 4, <4 x i1> <i1 true, i1 true, i1 true, i1 true>)
  %index.next = add i32 %index, 4
  %5 = icmp eq i32 %index.next, 996
  br i1 %5, label %end, label %vector.body

end:
  ret void
}

define void @ptr_iv_v4f32_mult(float* noalias nocapture readonly %A, float* noalias nocapture %B, float %y) {
; CHECK-LABEL: ptr_iv_v4f32_mult:
; CHECK:       @ %bb.0: @ %vector.ph
; CHECK-NEXT:    .save {r7, lr}
; CHECK-NEXT:    push {r7, lr}
; CHECK-NEXT:    mov.w lr, #249
; CHECK-NEXT:    adr r1, .LCPI7_0
; CHECK-NEXT:    adr r3, .LCPI7_1
; CHECK-NEXT:    vldrw.u32 q0, [r3]
; CHECK-NEXT:    vldrw.u32 q1, [r1]
; CHECK-NEXT:  .LBB7_1: @ %vector.body
; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=1
; CHECK-NEXT:    vldrw.u32 q2, [r0, q0, uxtw #2]
; CHECK-NEXT:    vadd.f32 q2, q2, r2
; CHECK-NEXT:    vstrw.32 q2, [r0, q1, uxtw #2]
; CHECK-NEXT:    adds r0, #64
; CHECK-NEXT:    le lr, .LBB7_1
; CHECK-NEXT:  @ %bb.2: @ %end
; CHECK-NEXT:    pop {r7, pc}
; CHECK-NEXT:    .p2align 4
; CHECK-NEXT:  @ %bb.3:
; CHECK-NEXT:  .LCPI7_0:
; CHECK-NEXT:    .long 5 @ 0x5
; CHECK-NEXT:    .long 9 @ 0x9
; CHECK-NEXT:    .long 13 @ 0xd
; CHECK-NEXT:    .long 17 @ 0x11
; CHECK-NEXT:  .LCPI7_1:
; CHECK-NEXT:    .long 3 @ 0x3
; CHECK-NEXT:    .long 7 @ 0x7
; CHECK-NEXT:    .long 11 @ 0xb
; CHECK-NEXT:    .long 15 @ 0xf
vector.ph:                                        ; preds = %entry
  %broadcast.splatinsert = insertelement <4 x float> undef, float %y, i32 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> undef, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:
  %pointer.phi = phi float* [ %A, %vector.ph ], [ %0, %vector.body ]
  %pointer.phi13 = phi float* [ %B, %vector.ph ], [ %2, %vector.body ]
  %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %0 = getelementptr float, float* %pointer.phi, i32 16
  %1 = getelementptr float, float* %pointer.phi, <4 x i32> <i32 0, i32 4, i32 8, i32 12>
  %gather.address = getelementptr float, <4 x float*> %1, i32 3
  %2 = getelementptr float, float* %pointer.phi13, i32 16
  %3 = getelementptr float, float* %pointer.phi13, <4 x i32> <i32 0, i32 4, i32 8, i32 12>
  %scatter.address = getelementptr float, <4 x float*> %1, i32 5
  %wide.masked.gather = call <4 x float> @llvm.masked.gather.v4f32.v4p0f32(<4 x float*> %gather.address, i32 4, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x float> undef)
  %4 = fadd <4 x float> %wide.masked.gather, %broadcast.splat
  call void @llvm.masked.scatter.v4f32.v4p0f32(<4 x float> %4, <4 x float*> %scatter.address, i32 4, <4 x i1> <i1 true, i1 true, i1 true, i1 true>)
  %index.next = add i32 %index, 4
  %5 = icmp eq i32 %index.next, 996
  br i1 %5, label %end, label %vector.body

end:
  ret void
}

define void @ptr_iv_v8f16(half* noalias nocapture readonly %A, half* noalias nocapture %B, float %y) {
; CHECK-LABEL: ptr_iv_v8f16:
; CHECK:       @ %bb.0: @ %vector.ph
; CHECK-NEXT:    .save {r7, lr}
; CHECK-NEXT:    push {r7, lr}
; CHECK-NEXT:    vmov s0, r2
; CHECK-NEXT:    mov.w lr, #249
; CHECK-NEXT:    vcvtb.f16.f32 s0, s0
; CHECK-NEXT:    adr r3, .LCPI8_0
; CHECK-NEXT:    vmov.f16 r2, s0
; CHECK-NEXT:    vldrw.u32 q0, [r3]
; CHECK-NEXT:  .LBB8_1: @ %vector.body
; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=1
; CHECK-NEXT:    vldrh.u16 q1, [r0, q0, uxtw #1]
; CHECK-NEXT:    adds r0, #64
; CHECK-NEXT:    vadd.f16 q1, q1, r2
; CHECK-NEXT:    vstrh.16 q1, [r1, q0, uxtw #1]
; CHECK-NEXT:    adds r1, #64
; CHECK-NEXT:    le lr, .LBB8_1
; CHECK-NEXT:  @ %bb.2: @ %end
; CHECK-NEXT:    pop {r7, pc}
; CHECK-NEXT:    .p2align 4
; CHECK-NEXT:  @ %bb.3:
; CHECK-NEXT:  .LCPI8_0:
; CHECK-NEXT:    .short 0 @ 0x0
; CHECK-NEXT:    .short 4 @ 0x4
; CHECK-NEXT:    .short 8 @ 0x8
; CHECK-NEXT:    .short 12 @ 0xc
; CHECK-NEXT:    .short 16 @ 0x10
; CHECK-NEXT:    .short 20 @ 0x14
; CHECK-NEXT:    .short 24 @ 0x18
; CHECK-NEXT:    .short 28 @ 0x1c
vector.ph:
  %y.trunc = fptrunc float %y to half
  %broadcast.splatinsert = insertelement <8 x half> undef, half %y.trunc, i32 0
  %broadcast.splat = shufflevector <8 x half> %broadcast.splatinsert, <8 x half> undef, <8 x i32> zeroinitializer
  br label %vector.body

vector.body:
  %pointer.phi = phi half* [ %A, %vector.ph ], [ %0, %vector.body ]
  %pointer.phi13 = phi half* [ %B, %vector.ph ], [ %2, %vector.body ]
  %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %0 = getelementptr half, half* %pointer.phi, i32 32
  %1 = getelementptr half, half* %pointer.phi, <8 x i16> <i16 0, i16 4, i16 8, i16 12, i16 16, i16 20, i16 24, i16 28>
  %2 = getelementptr half, half* %pointer.phi13, i32 32
  %3 = getelementptr half, half* %pointer.phi13, <8 x i16> <i16 0, i16 4, i16 8, i16 12, i16 16, i16 20, i16 24, i16 28>
  %wide.masked.gather = call <8 x half> @llvm.masked.gather.v8f16.v8p0f16(<8 x half*> %1, i32 4, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <8 x half> undef)
  %4 = fadd <8 x half> %wide.masked.gather, %broadcast.splat
  call void @llvm.masked.scatter.v8f16.v8p0f16(<8 x half> %4, <8 x half*> %3, i32 4, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>)
  %index.next = add i32 %index, 4
  %5 = icmp eq i32 %index.next, 996
  br i1 %5, label %end, label %vector.body

end:
  ret void
}

define void @ptr_iv_v8f16_mult(half* noalias nocapture readonly %A, half* noalias nocapture %B, float %y) {
; CHECK-LABEL: ptr_iv_v8f16_mult:
; CHECK:       @ %bb.0: @ %vector.ph
; CHECK-NEXT:    .save {r7, lr}
; CHECK-NEXT:    push {r7, lr}
; CHECK-NEXT:    vmov s0, r2
; CHECK-NEXT:    adr r2, .LCPI9_0
; CHECK-NEXT:    vcvtb.f16.f32 s0, s0
; CHECK-NEXT:    mov.w lr, #249
; CHECK-NEXT:    vmov.f16 r1, s0
; CHECK-NEXT:    vldrw.u32 q0, [r2]
; CHECK-NEXT:    adr r2, .LCPI9_1
; CHECK-NEXT:    vldrw.u32 q1, [r2]
; CHECK-NEXT:  .LBB9_1: @ %vector.body
; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=1
; CHECK-NEXT:    vldrh.u16 q2, [r0, q0, uxtw #1]
; CHECK-NEXT:    vadd.f16 q2, q2, r1
; CHECK-NEXT:    vstrh.16 q2, [r0, q1, uxtw #1]
; CHECK-NEXT:    adds r0, #64
; CHECK-NEXT:    le lr, .LBB9_1
; CHECK-NEXT:  @ %bb.2: @ %end
; CHECK-NEXT:    pop {r7, pc}
; CHECK-NEXT:    .p2align 4
; CHECK-NEXT:  @ %bb.3:
; CHECK-NEXT:  .LCPI9_0:
; CHECK-NEXT:    .short 3 @ 0x3
; CHECK-NEXT:    .short 7 @ 0x7
; CHECK-NEXT:    .short 11 @ 0xb
; CHECK-NEXT:    .short 15 @ 0xf
; CHECK-NEXT:    .short 19 @ 0x13
; CHECK-NEXT:    .short 23 @ 0x17
; CHECK-NEXT:    .short 27 @ 0x1b
; CHECK-NEXT:    .short 31 @ 0x1f
; CHECK-NEXT:  .LCPI9_1:
; CHECK-NEXT:    .short 5 @ 0x5
; CHECK-NEXT:    .short 9 @ 0x9
; CHECK-NEXT:    .short 13 @ 0xd
; CHECK-NEXT:    .short 17 @ 0x11
; CHECK-NEXT:    .short 21 @ 0x15
; CHECK-NEXT:    .short 25 @ 0x19
; CHECK-NEXT:    .short 29 @ 0x1d
; CHECK-NEXT:    .short 33 @ 0x21
vector.ph:
  %y.trunc = fptrunc float %y to half
  %broadcast.splatinsert = insertelement <8 x half> undef, half %y.trunc, i32 0
  %broadcast.splat = shufflevector <8 x half> %broadcast.splatinsert, <8 x half> undef, <8 x i32> zeroinitializer
  br label %vector.body

vector.body:
  %pointer.phi = phi half* [ %A, %vector.ph ], [ %0, %vector.body ]
  %pointer.phi13 = phi half* [ %B, %vector.ph ], [ %2, %vector.body ]
  %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %0 = getelementptr half, half* %pointer.phi, i32 32
  %1 = getelementptr half, half* %pointer.phi, <8 x i16> <i16 0, i16 4, i16 8, i16 12, i16 16, i16 20, i16 24, i16 28>
  %gather.address = getelementptr half, <8 x half*> %1, i32 3
  %2 = getelementptr half, half* %pointer.phi13, i32 32
  %3 = getelementptr half, half* %pointer.phi13, <8 x i16> <i16 0, i16 4, i16 8, i16 12, i16 16, i16 20, i16 24, i16 28>
  %scatter.address = getelementptr half, <8 x half*> %1, i32 5
  %wide.masked.gather = call <8 x half> @llvm.masked.gather.v8f16.v8p0f16(<8 x half*> %gather.address, i32 4, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <8 x half> undef)
  %4 = fadd <8 x half> %wide.masked.gather, %broadcast.splat
  call void @llvm.masked.scatter.v8f16.v8p0f16(<8 x half> %4, <8 x half*> %scatter.address, i32 4, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>)
  %index.next = add i32 %index, 4
  %5 = icmp eq i32 %index.next, 996
  br i1 %5, label %end, label %vector.body

end:
  ret void
}


define arm_aapcs_vfpcc void @three_pointer_iv_v4i32(i32* nocapture readonly %x, i32* nocapture %z, i32 %n) {
; CHECK-LABEL: three_pointer_iv_v4i32:
; CHECK:       @ %bb.0: @ %vector.ph
; CHECK-NEXT:    .save {r7, lr}
; CHECK-NEXT:    push {r7, lr}
; CHECK-NEXT:    .vsave {d8, d9, d10, d11, d12, d13}
; CHECK-NEXT:    vpush {d8, d9, d10, d11, d12, d13}
; CHECK-NEXT:    adr.w r12, .LCPI10_0
; CHECK-NEXT:    adr.w lr, .LCPI10_1
; CHECK-NEXT:    adr r3, .LCPI10_2
; CHECK-NEXT:    vldrw.u32 q2, [lr]
; CHECK-NEXT:    vldrw.u32 q1, [r3]
; CHECK-NEXT:    vldrw.u32 q3, [r12]
; CHECK-NEXT:    vmov.i32 q0, #0xa
; CHECK-NEXT:  .LBB10_1: @ %vector.body
; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=1
; CHECK-NEXT:    vldrw.u32 q4, [r0, q1, uxtw #2]
; CHECK-NEXT:    vldrw.u32 q5, [r0, q2, uxtw #2]
; CHECK-NEXT:    vldrw.u32 q6, [r0, q3, uxtw #2]
; CHECK-NEXT:    subs r2, #4
; CHECK-NEXT:    vmul.i32 q4, q5, q4
; CHECK-NEXT:    add.w r0, r0, #48
; CHECK-NEXT:    vmul.i32 q6, q5, q6
; CHECK-NEXT:    vmul.i32 q5, q5, q0
; CHECK-NEXT:    vstrw.32 q5, [r1, q2, uxtw #2]
; CHECK-NEXT:    vstrw.32 q6, [r1, q3, uxtw #2]
; CHECK-NEXT:    vstrw.32 q4, [r1, q1, uxtw #2]
; CHECK-NEXT:    add.w r1, r1, #48
; CHECK-NEXT:    bne .LBB10_1
; CHECK-NEXT:  @ %bb.2: @ %end
; CHECK-NEXT:    vpop {d8, d9, d10, d11, d12, d13}
; CHECK-NEXT:    pop {r7, pc}
; CHECK-NEXT:    .p2align 4
; CHECK-NEXT:  @ %bb.3:
; CHECK-NEXT:  .LCPI10_0:
; CHECK-NEXT:    .long 1 @ 0x1
; CHECK-NEXT:    .long 4 @ 0x4
; CHECK-NEXT:    .long 7 @ 0x7
; CHECK-NEXT:    .long 10 @ 0xa
; CHECK-NEXT:  .LCPI10_1:
; CHECK-NEXT:    .long 0 @ 0x0
; CHECK-NEXT:    .long 3 @ 0x3
; CHECK-NEXT:    .long 6 @ 0x6
; CHECK-NEXT:    .long 9 @ 0x9
; CHECK-NEXT:  .LCPI10_2:
; CHECK-NEXT:    .long 2 @ 0x2
; CHECK-NEXT:    .long 5 @ 0x5
; CHECK-NEXT:    .long 8 @ 0x8
; CHECK-NEXT:    .long 11 @ 0xb
vector.ph:
  br label %vector.body

vector.body:
  %pointer.phi = phi i32* [ %x, %vector.ph ], [ %v3, %vector.body ]
  %pointer.phi55 = phi i32* [ %z, %vector.ph ], [ %v4, %vector.body ]
  %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vector.gep = getelementptr i32, i32* %pointer.phi, <4 x i32> <i32 0, i32 3, i32 6, i32 9>
  %v3 = getelementptr i32, i32* %pointer.phi, i32 12
  %vector.gep56 = getelementptr i32, i32* %pointer.phi55, <4 x i32> <i32 0, i32 3, i32 6, i32 9>
  %v4 = getelementptr i32, i32* %pointer.phi55, i32 12
  %v5 = add i32 %index, 0
  %v6 = getelementptr inbounds i32, <4 x i32*> %vector.gep, i32 1
  %wide.masked.gather = call <4 x i32> @llvm.masked.gather.v4i32.v4p0i32(<4 x i32*> %vector.gep, i32 4, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x i32> undef)
  %v7 = getelementptr inbounds i32, <4 x i32*> %vector.gep, i32 2
  %wide.masked.gather57 = call <4 x i32> @llvm.masked.gather.v4i32.v4p0i32(<4 x i32*> %v6, i32 4, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x i32> undef)
  %wide.masked.gather58 = call <4 x i32> @llvm.masked.gather.v4i32.v4p0i32(<4 x i32*> %v7, i32 4, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x i32> undef)
  %v11 = mul nuw nsw <4 x i32> %wide.masked.gather, <i32 10, i32 10, i32 10, i32 10>
  %v13 = mul nuw nsw <4 x i32> %wide.masked.gather, %wide.masked.gather57
  %v15 = mul nuw nsw <4 x i32> %wide.masked.gather, %wide.masked.gather58
  %v17 = getelementptr inbounds i32, <4 x i32*> %vector.gep56, i32 1
  call void @llvm.masked.scatter.v4i32.v4p0i32(<4 x i32> %v11, <4 x i32*> %vector.gep56, i32 4, <4 x i1> <i1 true, i1 true, i1 true, i1 true>)
  %v18 = getelementptr inbounds i32, <4 x i32*> %vector.gep56, i32 2
  call void @llvm.masked.scatter.v4i32.v4p0i32(<4 x i32> %v13, <4 x i32*> %v17, i32 4, <4 x i1> <i1 true, i1 true, i1 true, i1 true>)
  call void @llvm.masked.scatter.v4i32.v4p0i32(<4 x i32> %v15, <4 x i32*> %v18, i32 4, <4 x i1> <i1 true, i1 true, i1 true, i1 true>)
  %index.next = add i32 %index, 4
  %v37 = icmp eq i32 %index.next, %n
  br i1 %v37, label %end, label %vector.body

end:
  ret void;
}

define arm_aapcs_vfpcc void @three_pointer_iv_v4i8(i8* nocapture readonly %x, i8* nocapture %z, i32 %n) {
; CHECK-LABEL: three_pointer_iv_v4i8:
; CHECK:       @ %bb.0: @ %vector.ph
; CHECK-NEXT:    .save {r7, lr}
; CHECK-NEXT:    push {r7, lr}
; CHECK-NEXT:    .vsave {d8, d9, d10, d11, d12, d13}
; CHECK-NEXT:    vpush {d8, d9, d10, d11, d12, d13}
; CHECK-NEXT:    adr.w r12, .LCPI11_0
; CHECK-NEXT:    adr.w lr, .LCPI11_1
; CHECK-NEXT:    adr r3, .LCPI11_2
; CHECK-NEXT:    vldrw.u32 q2, [lr]
; CHECK-NEXT:    vldrw.u32 q1, [r3]
; CHECK-NEXT:    vldrw.u32 q3, [r12]
; CHECK-NEXT:    vmov.i32 q0, #0xa
; CHECK-NEXT:  .LBB11_1: @ %vector.body
; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=1
; CHECK-NEXT:    vldrb.u32 q4, [r0, q1]
; CHECK-NEXT:    vldrb.u32 q5, [r0, q2]
; CHECK-NEXT:    vldrb.u32 q6, [r0, q3]
; CHECK-NEXT:    subs r2, #4
; CHECK-NEXT:    vmul.i32 q4, q5, q4
; CHECK-NEXT:    add.w r0, r0, #12
; CHECK-NEXT:    vmul.i32 q6, q5, q6
; CHECK-NEXT:    vmul.i32 q5, q5, q0
; CHECK-NEXT:    vstrb.32 q5, [r1, q2]
; CHECK-NEXT:    vstrb.32 q6, [r1, q3]
; CHECK-NEXT:    vstrb.32 q4, [r1, q1]
; CHECK-NEXT:    add.w r1, r1, #12
; CHECK-NEXT:    bne .LBB11_1
; CHECK-NEXT:  @ %bb.2: @ %end
; CHECK-NEXT:    vpop {d8, d9, d10, d11, d12, d13}
; CHECK-NEXT:    pop {r7, pc}
; CHECK-NEXT:    .p2align 4
; CHECK-NEXT:  @ %bb.3:
; CHECK-NEXT:  .LCPI11_0:
; CHECK-NEXT:    .long 1 @ 0x1
; CHECK-NEXT:    .long 4 @ 0x4
; CHECK-NEXT:    .long 7 @ 0x7
; CHECK-NEXT:    .long 10 @ 0xa
; CHECK-NEXT:  .LCPI11_1:
; CHECK-NEXT:    .long 0 @ 0x0
; CHECK-NEXT:    .long 3 @ 0x3
; CHECK-NEXT:    .long 6 @ 0x6
; CHECK-NEXT:    .long 9 @ 0x9
; CHECK-NEXT:  .LCPI11_2:
; CHECK-NEXT:    .long 2 @ 0x2
; CHECK-NEXT:    .long 5 @ 0x5
; CHECK-NEXT:    .long 8 @ 0x8
; CHECK-NEXT:    .long 11 @ 0xb
vector.ph:
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %pointer.phi = phi i8* [ %x, %vector.ph ], [ %v3, %vector.body ]
  %pointer.phi55 = phi i8* [ %z, %vector.ph ], [ %v4, %vector.body ]
  %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vector.gep = getelementptr i8, i8* %pointer.phi, <4 x i32> <i32 0, i32 3, i32 6, i32 9>
  %v3 = getelementptr i8, i8* %pointer.phi, i32 12
  %vector.gep56 = getelementptr i8, i8* %pointer.phi55, <4 x i32> <i32 0, i32 3, i32 6, i32 9>
  %v4 = getelementptr i8, i8* %pointer.phi55, i32 12
  %v5 = add i32 %index, 0
  %v6 = getelementptr inbounds i8, <4 x i8*> %vector.gep, i32 1
  %wide.masked.gather = call <4 x i8> @llvm.masked.gather.v4i8.v4p0i8(<4 x i8*> %vector.gep, i32 1, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x i8> undef)
  %v7 = getelementptr inbounds i8, <4 x i8*> %vector.gep, i32 2
  %wide.masked.gather57 = call <4 x i8> @llvm.masked.gather.v4i8.v4p0i8(<4 x i8*> %v6, i32 1, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x i8> undef)
  %wide.masked.gather58 = call <4 x i8> @llvm.masked.gather.v4i8.v4p0i8(<4 x i8*> %v7, i32 1, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x i8> undef)
  %v8 = zext <4 x i8> %wide.masked.gather to <4 x i32>
  %v9 = zext <4 x i8> %wide.masked.gather57 to <4 x i32>
  %v10 = zext <4 x i8> %wide.masked.gather58 to <4 x i32>
  %v11 = mul nuw nsw <4 x i32> %v8, <i32 10, i32 10, i32 10, i32 10>
  %v12 = trunc <4 x i32> %v11 to <4 x i8>
  %v13 = mul nuw nsw <4 x i32> %v8, %v9
  %v14 = trunc <4 x i32> %v13 to <4 x i8>
  %v15 = mul nuw nsw <4 x i32> %v8, %v10
  %v16 = trunc <4 x i32> %v15 to <4 x i8>
  %v17 = getelementptr inbounds i8, <4 x i8*> %vector.gep56, i32 1
  call void @llvm.masked.scatter.v4i8.v4p0i8(<4 x i8> %v12, <4 x i8*> %vector.gep56, i32 1, <4 x i1> <i1 true, i1 true, i1 true, i1 true>)
  %v18 = getelementptr inbounds i8, <4 x i8*> %vector.gep56, i32 2
  call void @llvm.masked.scatter.v4i8.v4p0i8(<4 x i8> %v14, <4 x i8*> %v17, i32 1, <4 x i1> <i1 true, i1 true, i1 true, i1 true>)
  call void @llvm.masked.scatter.v4i8.v4p0i8(<4 x i8> %v16, <4 x i8*> %v18, i32 1, <4 x i1> <i1 true, i1 true, i1 true, i1 true>)
  %index.next = add i32 %index, 4
  %v37 = icmp eq i32 %index.next, %n
  br i1 %v37, label %end, label %vector.body

end:
  ret void;
}

define arm_aapcs_vfpcc void @three_pointer_iv_v8i16(i16* nocapture readonly %x, i16* nocapture %z, i32 %n) {
; CHECK-LABEL: three_pointer_iv_v8i16:
; CHECK:       @ %bb.0: @ %vector.ph
; CHECK-NEXT:    .save {r7, lr}
; CHECK-NEXT:    push {r7, lr}
; CHECK-NEXT:    .vsave {d8, d9, d10, d11, d12, d13}
; CHECK-NEXT:    vpush {d8, d9, d10, d11, d12, d13}
; CHECK-NEXT:    adr.w r12, .LCPI12_0
; CHECK-NEXT:    adr.w lr, .LCPI12_1
; CHECK-NEXT:    adr r3, .LCPI12_2
; CHECK-NEXT:    vldrw.u32 q2, [lr]
; CHECK-NEXT:    vldrw.u32 q1, [r3]
; CHECK-NEXT:    vldrw.u32 q3, [r12]
; CHECK-NEXT:    vmov.i16 q0, #0xa
; CHECK-NEXT:  .LBB12_1: @ %vector.body
; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=1
; CHECK-NEXT:    vldrh.u16 q4, [r0, q1, uxtw #1]
; CHECK-NEXT:    vldrh.u16 q5, [r0, q2, uxtw #1]
; CHECK-NEXT:    vldrh.u16 q6, [r0, q3, uxtw #1]
; CHECK-NEXT:    subs r2, #4
; CHECK-NEXT:    vmul.i16 q4, q5, q4
; CHECK-NEXT:    add.w r0, r0, #48
; CHECK-NEXT:    vmul.i16 q6, q5, q6
; CHECK-NEXT:    vmul.i16 q5, q5, q0
; CHECK-NEXT:    vstrh.16 q5, [r1, q2, uxtw #1]
; CHECK-NEXT:    vstrh.16 q6, [r1, q3, uxtw #1]
; CHECK-NEXT:    vstrh.16 q4, [r1, q1, uxtw #1]
; CHECK-NEXT:    add.w r1, r1, #48
; CHECK-NEXT:    bne .LBB12_1
; CHECK-NEXT:  @ %bb.2: @ %end
; CHECK-NEXT:    vpop {d8, d9, d10, d11, d12, d13}
; CHECK-NEXT:    pop {r7, pc}
; CHECK-NEXT:    .p2align 4
; CHECK-NEXT:  @ %bb.3:
; CHECK-NEXT:  .LCPI12_0:
; CHECK-NEXT:    .short 1 @ 0x1
; CHECK-NEXT:    .short 4 @ 0x4
; CHECK-NEXT:    .short 7 @ 0x7
; CHECK-NEXT:    .short 10 @ 0xa
; CHECK-NEXT:    .short 13 @ 0xd
; CHECK-NEXT:    .short 16 @ 0x10
; CHECK-NEXT:    .short 19 @ 0x13
; CHECK-NEXT:    .short 22 @ 0x16
; CHECK-NEXT:  .LCPI12_1:
; CHECK-NEXT:    .short 0 @ 0x0
; CHECK-NEXT:    .short 3 @ 0x3
; CHECK-NEXT:    .short 6 @ 0x6
; CHECK-NEXT:    .short 9 @ 0x9
; CHECK-NEXT:    .short 12 @ 0xc
; CHECK-NEXT:    .short 15 @ 0xf
; CHECK-NEXT:    .short 18 @ 0x12
; CHECK-NEXT:    .short 21 @ 0x15
; CHECK-NEXT:  .LCPI12_2:
; CHECK-NEXT:    .short 2 @ 0x2
; CHECK-NEXT:    .short 5 @ 0x5
; CHECK-NEXT:    .short 8 @ 0x8
; CHECK-NEXT:    .short 11 @ 0xb
; CHECK-NEXT:    .short 14 @ 0xe
; CHECK-NEXT:    .short 17 @ 0x11
; CHECK-NEXT:    .short 20 @ 0x14
; CHECK-NEXT:    .short 23 @ 0x17
vector.ph:
  br label %vector.body

vector.body:
  %pointer.phi = phi i16* [ %x, %vector.ph ], [ %v3, %vector.body ]
  %pointer.phi55 = phi i16* [ %z, %vector.ph ], [ %v4, %vector.body ]
  %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vector.gep = getelementptr i16, i16* %pointer.phi, <8 x i16> <i16 0, i16 3, i16 6, i16 9, i16 12, i16 15, i16 18, i16 21>
  %v3 = getelementptr i16, i16* %pointer.phi, i32 24
  %vector.gep56 = getelementptr i16, i16* %pointer.phi55, <8 x i16> <i16 0, i16 3, i16 6, i16 9, i16 12, i16 15, i16 18, i16 21>
  %v4 = getelementptr i16, i16* %pointer.phi55, i32 24
  %v5 = add i32 %index, 0
  %v6 = getelementptr inbounds i16, <8 x i16*> %vector.gep, i16 1
  %wide.masked.gather = call <8 x i16> @llvm.masked.gather.v8i16.v8p0i16(<8 x i16*> %vector.gep, i32 2, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <8 x i16> undef)
  %v7 = getelementptr inbounds i16, <8 x i16*> %vector.gep, i16 2
  %wide.masked.gather57 = call <8 x i16> @llvm.masked.gather.v8i16.v8p0i16(<8 x i16*> %v6, i32 2, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <8 x i16> undef)
  %wide.masked.gather58 = call <8 x i16> @llvm.masked.gather.v8i16.v8p0i16(<8 x i16*> %v7, i32 2, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <8 x i16> undef)
  %v11 = mul nuw nsw <8 x i16> %wide.masked.gather, <i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10>
  %v13 = mul nuw nsw <8 x i16> %wide.masked.gather, %wide.masked.gather57
  %v15 = mul nuw nsw <8 x i16> %wide.masked.gather, %wide.masked.gather58
  %v17 = getelementptr inbounds i16, <8 x i16*> %vector.gep56, i32 1
  call void @llvm.masked.scatter.v8i16.v8p0i16(<8 x i16> %v11, <8 x i16*> %vector.gep56, i32 2, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>)
  %v18 = getelementptr inbounds i16, <8 x i16*> %vector.gep56, i32 2
  call void @llvm.masked.scatter.v8i16.v8p0i16(<8 x i16> %v13, <8 x i16*> %v17, i32 2, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>)
  call void @llvm.masked.scatter.v8i16.v8p0i16(<8 x i16> %v15, <8 x i16*> %v18, i32 2, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>)
  %index.next = add i32 %index, 4
  %v37 = icmp eq i32 %index.next, %n
  br i1 %v37, label %end, label %vector.body

end:
  ret void;
}

define arm_aapcs_vfpcc void @three_pointer_iv_v16i8(i8* nocapture readonly %x, i8* nocapture %z, i32 %n) {
; CHECK-LABEL: three_pointer_iv_v16i8:
; CHECK:       @ %bb.0: @ %vector.ph
; CHECK-NEXT:    .save {r7, lr}
; CHECK-NEXT:    push {r7, lr}
; CHECK-NEXT:    .vsave {d8, d9, d10, d11, d12, d13}
; CHECK-NEXT:    vpush {d8, d9, d10, d11, d12, d13}
; CHECK-NEXT:    adr.w r12, .LCPI13_0
; CHECK-NEXT:    adr.w lr, .LCPI13_1
; CHECK-NEXT:    adr r3, .LCPI13_2
; CHECK-NEXT:    vldrw.u32 q2, [lr]
; CHECK-NEXT:    vldrw.u32 q1, [r3]
; CHECK-NEXT:    vldrw.u32 q3, [r12]
; CHECK-NEXT:    vmov.i8 q0, #0xa
; CHECK-NEXT:  .LBB13_1: @ %vector.body
; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=1
; CHECK-NEXT:    vldrb.u8 q4, [r0, q1]
; CHECK-NEXT:    vldrb.u8 q5, [r0, q2]
; CHECK-NEXT:    vldrb.u8 q6, [r0, q3]
; CHECK-NEXT:    subs r2, #4
; CHECK-NEXT:    vmul.i8 q4, q5, q4
; CHECK-NEXT:    add.w r0, r0, #48
; CHECK-NEXT:    vmul.i8 q6, q5, q6
; CHECK-NEXT:    vmul.i8 q5, q5, q0
; CHECK-NEXT:    vstrb.8 q5, [r1, q2]
; CHECK-NEXT:    vstrb.8 q6, [r1, q3]
; CHECK-NEXT:    vstrb.8 q4, [r1, q1]
; CHECK-NEXT:    add.w r1, r1, #48
; CHECK-NEXT:    bne .LBB13_1
; CHECK-NEXT:  @ %bb.2: @ %end
; CHECK-NEXT:    vpop {d8, d9, d10, d11, d12, d13}
; CHECK-NEXT:    pop {r7, pc}
; CHECK-NEXT:    .p2align 4
; CHECK-NEXT:  @ %bb.3:
; CHECK-NEXT:  .LCPI13_0:
; CHECK-NEXT:    .byte 1 @ 0x1
; CHECK-NEXT:    .byte 4 @ 0x4
; CHECK-NEXT:    .byte 7 @ 0x7
; CHECK-NEXT:    .byte 10 @ 0xa
; CHECK-NEXT:    .byte 13 @ 0xd
; CHECK-NEXT:    .byte 16 @ 0x10
; CHECK-NEXT:    .byte 19 @ 0x13
; CHECK-NEXT:    .byte 22 @ 0x16
; CHECK-NEXT:    .byte 25 @ 0x19
; CHECK-NEXT:    .byte 28 @ 0x1c
; CHECK-NEXT:    .byte 31 @ 0x1f
; CHECK-NEXT:    .byte 34 @ 0x22
; CHECK-NEXT:    .byte 37 @ 0x25
; CHECK-NEXT:    .byte 40 @ 0x28
; CHECK-NEXT:    .byte 43 @ 0x2b
; CHECK-NEXT:    .byte 46 @ 0x2e
; CHECK-NEXT:  .LCPI13_1:
; CHECK-NEXT:    .byte 0 @ 0x0
; CHECK-NEXT:    .byte 3 @ 0x3
; CHECK-NEXT:    .byte 6 @ 0x6
; CHECK-NEXT:    .byte 9 @ 0x9
; CHECK-NEXT:    .byte 12 @ 0xc
; CHECK-NEXT:    .byte 15 @ 0xf
; CHECK-NEXT:    .byte 18 @ 0x12
; CHECK-NEXT:    .byte 21 @ 0x15
; CHECK-NEXT:    .byte 24 @ 0x18
; CHECK-NEXT:    .byte 27 @ 0x1b
; CHECK-NEXT:    .byte 30 @ 0x1e
; CHECK-NEXT:    .byte 33 @ 0x21
; CHECK-NEXT:    .byte 36 @ 0x24
; CHECK-NEXT:    .byte 39 @ 0x27
; CHECK-NEXT:    .byte 42 @ 0x2a
; CHECK-NEXT:    .byte 45 @ 0x2d
; CHECK-NEXT:  .LCPI13_2:
; CHECK-NEXT:    .byte 2 @ 0x2
; CHECK-NEXT:    .byte 5 @ 0x5
; CHECK-NEXT:    .byte 8 @ 0x8
; CHECK-NEXT:    .byte 11 @ 0xb
; CHECK-NEXT:    .byte 14 @ 0xe
; CHECK-NEXT:    .byte 17 @ 0x11
; CHECK-NEXT:    .byte 20 @ 0x14
; CHECK-NEXT:    .byte 23 @ 0x17
; CHECK-NEXT:    .byte 26 @ 0x1a
; CHECK-NEXT:    .byte 29 @ 0x1d
; CHECK-NEXT:    .byte 32 @ 0x20
; CHECK-NEXT:    .byte 35 @ 0x23
; CHECK-NEXT:    .byte 38 @ 0x26
; CHECK-NEXT:    .byte 41 @ 0x29
; CHECK-NEXT:    .byte 44 @ 0x2c
; CHECK-NEXT:    .byte 47 @ 0x2f
vector.ph:
  br label %vector.body

vector.body:
  %pointer.phi = phi i8* [ %x, %vector.ph ], [ %v3, %vector.body ]
  %pointer.phi55 = phi i8* [ %z, %vector.ph ], [ %v4, %vector.body ]
  %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vector.gep = getelementptr i8, i8* %pointer.phi, <16 x i8> <i8 0, i8 3, i8 6, i8 9, i8 12, i8 15, i8 18, i8 21, i8 24, i8 27, i8 30, i8 33, i8 36, i8 39, i8 42, i8 45>
  %v3 = getelementptr i8, i8* %pointer.phi, i32 48
  %vector.gep56 = getelementptr i8, i8* %pointer.phi55, <16 x i8> <i8 0, i8 3, i8 6, i8 9, i8 12, i8 15, i8 18, i8 21, i8 24, i8 27, i8 30, i8 33, i8 36, i8 39, i8 42, i8 45>
  %v4 = getelementptr i8, i8* %pointer.phi55, i32 48
  %v5 = add i32 %index, 0
  %v6 = getelementptr inbounds i8, <16 x i8*> %vector.gep, i8 1
  %wide.masked.gather = call <16 x i8> @llvm.masked.gather.v16i8.v16p0i8(<16 x i8*> %vector.gep, i32 1, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <16 x i8> undef)
  %v7 = getelementptr inbounds i8, <16 x i8*> %vector.gep, i8 2
  %wide.masked.gather57 = call <16 x i8> @llvm.masked.gather.v16i8.v16p0i8(<16 x i8*> %v6, i32 1, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <16 x i8> undef)
  %wide.masked.gather58 = call <16 x i8> @llvm.masked.gather.v16i8.v16p0i8(<16 x i8*> %v7, i32 1, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <16 x i8> undef)
  %v11 = mul nuw nsw <16 x i8> %wide.masked.gather, <i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10>
  %v13 = mul nuw nsw <16 x i8> %wide.masked.gather, %wide.masked.gather57
  %v15 = mul nuw nsw <16 x i8> %wide.masked.gather, %wide.masked.gather58
  %v17 = getelementptr inbounds i8, <16 x i8*> %vector.gep56, i32 1
  call void @llvm.masked.scatter.v16i8.v16p0i8(<16 x i8> %v11, <16 x i8*> %vector.gep56, i32 1, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>)
  %v18 = getelementptr inbounds i8, <16 x i8*> %vector.gep56, i32 2
  call void @llvm.masked.scatter.v16i8.v16p0i8(<16 x i8> %v13, <16 x i8*> %v17, i32 1, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>)
  call void @llvm.masked.scatter.v16i8.v16p0i8(<16 x i8> %v15, <16 x i8*> %v18, i32 1, <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>)
  %index.next = add i32 %index, 4
  %v37 = icmp eq i32 %index.next, %n
  br i1 %v37, label %end, label %vector.body

end:
  ret void;
}

declare <4 x i8> @llvm.masked.gather.v4i8.v4p0i8(<4 x i8*>, i32, <4 x i1>, <4 x i8>)
declare <4 x i32> @llvm.masked.gather.v4i32.v4p0i32(<4 x i32*>, i32, <4 x i1>, <4 x i32>)
declare <4 x float> @llvm.masked.gather.v4f32.v4p0f32(<4 x float*>, i32, <4 x i1>, <4 x float>)
declare <8 x i16> @llvm.masked.gather.v8i16.v8p0i16(<8 x i16*>, i32, <8 x i1>, <8 x i16>)
declare <8 x half> @llvm.masked.gather.v8f16.v8p0f16(<8 x half*>, i32, <8 x i1>, <8 x half>)
declare <16 x i8> @llvm.masked.gather.v16i8.v16p0i8(<16 x i8*>, i32, <16 x i1>, <16 x i8>)

declare void @llvm.masked.scatter.v4i8.v4p0i8(<4 x i8>, <4 x i8*>, i32, <4 x i1>)
declare void @llvm.masked.scatter.v4i32.v4p0i32(<4 x i32>, <4 x i32*>, i32, <4 x i1>)
declare void @llvm.masked.scatter.v4f32.v4p0f32(<4 x float>, <4 x float*>, i32, <4 x i1>)
declare void @llvm.masked.scatter.v8i16.v8p0i16(<8 x i16>, <8 x i16*>, i32, <8 x i1>)
declare void @llvm.masked.scatter.v8f16.v8p0f16(<8 x half>, <8 x half*>, i32, <8 x i1>)
declare void @llvm.masked.scatter.v16i8.v16p0i8(<16 x i8>, <16 x i8*>, i32, <16 x i1>)
