# RUN: llc -run-pass arm-prera-ldst-opt %s -o - | FileCheck %s
--- |
  target triple = "thumbv7---eabi"

  define void @a(i32* nocapture %x, i32 %y, i32 %z) {
  entry:
    ret void
  }

  define void @b(i32* nocapture %x, i32 %y, i32 %z) {
  entry:
    ret void
  }
...
---
# CHECK-LABEL: name: a
name:            a
alignment:       1
tracksRegLiveness: true
liveins:
  - { reg: '$r0', virtual-reg: '%0' }
  - { reg: '$r1', virtual-reg: '%1' }
  - { reg: '$r2', virtual-reg: '%2' }
body:             |
  bb.0.entry:
    liveins: $r0, $r1, $r2

    %2 : rgpr = COPY $r2
    %1 : rgpr = COPY $r1
    %0 : gpr = COPY $r0
    %3 : rgpr = t2MUL %2, %2, 14, $noreg
    %4 : rgpr = t2MUL %1, %1, 14, $noreg
    %5 : rgpr = t2MOVi32imm -858993459
    %6 : rgpr, %7 : rgpr  = t2UMULL killed %3, %5, 14, $noreg
    %8 : rgpr, %9 : rgpr  = t2UMULL killed %4, %5, 14, $noreg
    t2STRi12 %1, %0, 0, 14, $noreg :: (store 4)
    %10 : rgpr = t2LSLri %2, 1, 14, $noreg, $noreg
    t2STRi12 killed %10, %0, 4, 14, $noreg :: (store 4)

    ; Make sure we move the paired stores next to each other, and
    ; insert them in an appropriate location.
    ; CHECK: t2STRi12 %1,
    ; CHECK-NEXT: t2STRi12 killed %10,
    ; CHECK-NEXT: t2MOVi
    ; CHECK-NEXT: t2ADDrs

    %11 : rgpr = t2MOVi 55, 14, $noreg, $noreg
    %12 : gprnopc = t2ADDrs %11, killed %7, 19, 14, $noreg, $noreg
    t2STRi12 killed %12, %0, 16, 14, $noreg :: (store 4)
    %13 : gprnopc = t2ADDrs %11, killed %9, 19, 14, $noreg, $noreg
    t2STRi12 killed %13, %0, 20, 14, $noreg :: (store 4)

    ; Make sure we move the paired stores next to each other.
    ; CHECK: t2STRi12 killed %12,
    ; CHECK-NEXT: t2STRi12 killed %13,

    tBX_RET 14, $noreg
---
# CHECK-LABEL: name: b
name:            b
alignment:       1
tracksRegLiveness: true
liveins:
  - { reg: '$r0', virtual-reg: '%0' }
  - { reg: '$r1', virtual-reg: '%1' }
  - { reg: '$r2', virtual-reg: '%2' }
body:             |
  bb.0.entry:
    liveins: $r0, $r1, $r2

    %2 : rgpr = COPY $r2
    %1 : rgpr = COPY $r1
    %0 : gpr = COPY $r0
    t2STRi12 %1, %0, 0, 14, $noreg :: (store 4)
    %10 : rgpr = t2LSLri %2, 1, 14, $noreg, $noreg
    t2STRi12 killed %10, %0, 4, 14, $noreg :: (store 4)
    %3 : rgpr = t2MUL %2, %2, 14, $noreg
    t2STRi12 %3, %0, 8, 14, $noreg :: (store 4)

    ; Make sure we move the paired stores next to each other, and
    ; insert them in an appropriate location.
    ; CHECK: t2STRi12 {{.*}}, 0
    ; CHECK-NEXT: t2STRi12 {{.*}}, 4
    ; CHECK-NEXT: t2STRi12 {{.*}}, 8
    ; CHECK-NEXT: t2MUL
    ; CHECK-NEXT: t2MOVi32imm

    %4 : rgpr = t2MUL %1, %1, 14, $noreg
    %5 : rgpr = t2MOVi32imm -858993459
    %6 : rgpr, %7 : rgpr  = t2UMULL killed %3, %5, 14, $noreg
    %8 : rgpr, %9 : rgpr  = t2UMULL killed %4, %5, 14, $noreg
    %10 : rgpr = t2LSLri %2, 1, 14, $noreg, $noreg
    %11 : rgpr = t2MOVi 55, 14, $noreg, $noreg
    %12 : gprnopc = t2ADDrs %11, killed %7, 19, 14, $noreg, $noreg
    t2STRi12 killed %12, %0, 16, 14, $noreg :: (store 4)
    %13 : gprnopc = t2ADDrs %11, killed %9, 19, 14, $noreg, $noreg
    t2STRi12 killed %13, %0, 20, 14, $noreg :: (store 4)

    ; Make sure we move the paired stores next to each other.
    ; CHECK: t2STRi12 {{.*}}, 16
    ; CHECK-NEXT: t2STRi12 {{.*}}, 20

    tBX_RET 14, $noreg

...
