llvm/llvm/test/tools/llvm-mca/ARM/cortex-a57-memory-instructions.s

# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
# RUN: llvm-mca -mtriple=armv8 -mcpu=cortex-a57 -instruction-tables < %s | FileCheck %s

  .text
  pld [pc, #8]
  pldw [pc, #-128]
  pldw [pc, r0, lsl #2]
  pldw [pc, r0, lsl #4]
  pldw [pc, -r0]
  ldr	r5, [r7]
  ldr	r6, [r3, #63]
  ldr	r2, [r4, #4095]!
  ldr	r1, [r2], #30
  ldr	r3, [r1], #-30
  ldr	r3, [r8, r1]
  ldr	r3, [r8, r1, lsl #2]
  ldr	r3, [r8, r1, asr #2]
  ldr	r2, [r5, -r3]
  ldr	r1, [r5, r9]!
  ldr	r6, [r7, -r8]!
  ldr	r1, [r0, r2, lsr #3]!
  ldr	r5, [r9], r2
  ldr	r4, [r3], -r6
  ldr	r3, [r8, -r2, lsl #15]
  ldr	r1, [r5], r3, asr #15
  ldrb	r3, [r8]
  ldrb	r1, [sp, #63]
  ldrb	r9, [r3, #4095]!
  ldrb	r8, [r1], #22
  ldrb	r2, [r7], #-19
  ldrb	r9, [r8, r5]
  ldrb	r1, [r5, -r1]
  ldrb	r3, [r5, r2]!
  ldrb	r3, [r5, r2, lsl #2]!
  ldrb	r3, [r5, r2, asr #2]!
  ldrb	r6, [r9, -r3]!
  ldrb	r2, [r1], r4
  ldrb	r8, [r4], -r5
  ldrb	r7, [r12, -r1, lsl #15]
  ldrb	r5, [r2], r9, asr #15
  ldrbt	r3, [r1], #4
  ldrbt	r2, [r8], #-8
  ldrbt	r8, [r7], r6
  ldrbt	r1, [r2], -r6, lsl #12
  ldrd	r0, r1, [r5]
  ldrd	r0, r1, [r5, r2]
  ldrd	r0, r1, [r5, -r2]
  ldrd	r8, r9, [r2, #15]
  ldrd	r2, r3, [r9, #32]!
  ldrd	r6, r7, [r1], #8
  ldrd	r2, r3, [r8], #0
  ldrd	r2, r3, [r8], #0
  ldrd	r2, r3, [r8], #-0
  ldrd	r4, r5, [r1, r3]
  ldrd	r4, r5, [r7, r2]!
  ldrd	r0, r1, [r8], r12
  ldrd	r0, r1, [r8], -r12
  ldrh	r3, [r4]
  ldrh	r2, [r7, #4]
  ldrh	r1, [r8, #64]!
  ldrh	r12, [sp], #4
  ldrh	r6, [r5, r4]
  ldrh	r6, [r5, -r4]
  ldrh	r3, [r8, r11]!
  ldrh	r1, [r2, -r1]!
  ldrh	r9, [r7], r2
  ldrh	r4, [r3], -r2
  ldrht	r9, [r7], #128
  ldrht	r4, [r3], #-75
  ldrht	r9, [r7], r2
  ldrht	r4, [r3], -r2
  ldrsb	r3, [r4]
  ldrsb	r2, [r7, #17]
  ldrsb	r1, [r8, #255]!
  ldrsb	r12, [sp], #9
  ldrsb	r6, [r5, r4]
  ldrsb	r3, [r8, r11]!
  ldrsb	r1, [r2, -r1]!
  ldrsb	r9, [r7], r2
  ldrsb	r4, [r3], -r2
  ldrsbt	r5, [r6], #1
  ldrsbt	r3, [r8], #-12
  ldrsbt	r8, [r9], r5
  ldrsbt	r2, [r1], -r4
  ldrsh	r5, [r9]
  ldrsh	r4, [r5, #7]
  ldrsh	r3, [r6, #55]!
  ldrsh	r2, [r7], #-9
  ldrsh	r3, [r1, r5]
  ldrsh	r4, [r6, r1]!
  ldrsh	r5, [r3, -r6]!
  ldrsh	r6, [r9], r8
  ldrsh	r7, [r8], -r3
  ldrsht	r5, [r6], #1
  ldrsht	r3, [r8], #-12
  ldrsht	r8, [r9], r5
  ldrsht	r2, [r1], -r4
  ldm r2, {r1, r2, r4, r5, r6}
  ldmia r2, {r1, r2, r4, r5, r6}
  ldmia r2, {r1, r3, r4, r5, r6}
  ldmib r2, {r1, r2}
  ldmdb r2, {r1, r2}
  ldmib r2, {r1, r3}
  ldmib r2, {r1, r3, r5}
  ldmib r2, {r1, r2, r5}
  ldmdbeq r2, {r1, r2}
  ldmibeq r2, {r1, r3}
  ldmia r2, {r0, r1, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15}
  ldmia r2, {r0, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15}
  str	r8, [r12]
  str	r7, [r1, #12]
  str	r3, [r5, #40]!
  str	r9, [sp], #4095
  str	r1, [r7], #-128
  str	r9, [r6, r3]
  str	r8, [r0, -r2]
  str	r7, [r1, r6]!
  str	r7, [r1, r6, lsl #2]!
  str	r6, [sp, -r1]!
  str	r5, [r3], r9
  str	r4, [r2], -r5
  str	r3, [r4, -r2, lsl #2]
  str	r2, [r7], r3, asr #24
  strb	r9, [r2]
  strb	r7, [r1, #3]
  strb	r6, [r4, #405]!
  strb	r5, [r7], #72
  strb	r1, [sp], #-1
  strb	r1, [r2, r9]
  strb	r2, [r3, -r8]
  strb	r3, [r4, r7]!
  strb	r4, [r5, -r6]!
  strb	r5, [r6], r5
  strb	r6, [r2], -r4
  strb	r7, [r12, -r3, lsl #5]
  strb	sp, [r7], r2, asr #12
  strbt	r6, [r2], #12
  strbt	r5, [r6], #-13
  strbt	r4, [r9], r5
  strbt	r3, [r8], -r2, lsl #3
  strd	r0, r1, [r4]
  strd	r2, r3, [r6, #1]
  strd	r2, r3, [r6, r2]
  strd	r2, r3, [r6, -r2]
  strd	r2, r3, [r7, #22]!
  strd	r4, r5, [r8], #7
  strd	r4, r5, [sp], #0
  strd	r6, r7, [lr], #0
  strd	r6, r7, [r9], #-0
  strd	r8, r9, [r4, r1]
  strd	r6, r7, [r3, r9]!
  strd	r6, r7, [r5], r8
  strd	r4, r5, [r12], -r10
  strh	r3, [r4]
  strh	r2, [r7, #4]
  strh	r1, [r8, #64]!
  strh	r12, [sp], #4
  strh	r6, [r5, r4]
  strh	r3, [r8, r11]!
  strh	r1, [r2, -r1]!
  strh	r9, [r7], r2
  strh	r4, [r3], -r2
  strht	r2, [r5], #76
  strht	r8, [r1], #-25
  strht	r5, [r3], r4
  strht	r6, [r8], -r0

# CHECK:      Instruction Info:
# CHECK-NEXT: [1]: #uOps
# CHECK-NEXT: [2]: Latency
# CHECK-NEXT: [3]: RThroughput
# CHECK-NEXT: [4]: MayLoad
# CHECK-NEXT: [5]: MayStore
# CHECK-NEXT: [6]: HasSideEffects (U)

# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
# CHECK-NEXT:  1      4     1.00    *      *            pld	[pc, #8]
# CHECK-NEXT:  1      4     1.00    *      *            pldw	[pc, #-128]
# CHECK-NEXT:  1      4     1.00    *      *            pldw	[pc, r0, lsl #2]
# CHECK-NEXT:  2      5     1.00    *      *            pldw	[pc, r0, lsl #4]
# CHECK-NEXT:  2      5     1.00    *      *            pldw	[pc, -r0]
# CHECK-NEXT:  1      4     1.00    *                   ldr	r5, [r7]
# CHECK-NEXT:  1      4     1.00    *                   ldr	r6, [r3, #63]
# CHECK-NEXT:  2      4     1.00    *                   ldr	r2, [r4, #4095]!
# CHECK-NEXT:  2      4     1.00    *                   ldr	r1, [r2], #30
# CHECK-NEXT:  2      4     1.00    *                   ldr	r3, [r1], #-30
# CHECK-NEXT:  1      4     1.00    *                   ldr	r3, [r8, r1]
# CHECK-NEXT:  1      4     1.00    *                   ldr	r3, [r8, r1, lsl #2]
# CHECK-NEXT:  2      5     1.00    *                   ldr	r3, [r8, r1, asr #2]
# CHECK-NEXT:  2      5     1.00    *                   ldr	r2, [r5, -r3]
# CHECK-NEXT:  2      4     1.00    *                   ldr	r1, [r5, r9]!
# CHECK-NEXT:  2      4     1.00    *                   ldr	r6, [r7, -r8]!
# CHECK-NEXT:  2      5     1.00    *                   ldr	r1, [r0, r2, lsr #3]!
# CHECK-NEXT:  2      4     1.00    *                   ldr	r5, [r9], r2
# CHECK-NEXT:  2      4     1.00    *                   ldr	r4, [r3], -r6
# CHECK-NEXT:  2      5     1.00    *                   ldr	r3, [r8, -r2, lsl #15]
# CHECK-NEXT:  2      4     1.00    *                   ldr	r1, [r5], r3, asr #15
# CHECK-NEXT:  1      4     1.00    *                   ldrb	r3, [r8]
# CHECK-NEXT:  1      4     1.00    *                   ldrb	r1, [sp, #63]
# CHECK-NEXT:  2      4     1.00    *                   ldrb	r9, [r3, #4095]!
# CHECK-NEXT:  2      4     1.00    *                   ldrb	r8, [r1], #22
# CHECK-NEXT:  2      4     1.00    *                   ldrb	r2, [r7], #-19
# CHECK-NEXT:  1      4     1.00    *                   ldrb	r9, [r8, r5]
# CHECK-NEXT:  2      5     1.00    *                   ldrb	r1, [r5, -r1]
# CHECK-NEXT:  2      4     1.00    *                   ldrb	r3, [r5, r2]!
# CHECK-NEXT:  2      4     1.00    *                   ldrb	r3, [r5, r2, lsl #2]!
# CHECK-NEXT:  2      5     1.00    *                   ldrb	r3, [r5, r2, asr #2]!
# CHECK-NEXT:  2      4     1.00    *                   ldrb	r6, [r9, -r3]!
# CHECK-NEXT:  2      4     1.00    *                   ldrb	r2, [r1], r4
# CHECK-NEXT:  2      4     1.00    *                   ldrb	r8, [r4], -r5
# CHECK-NEXT:  2      5     1.00    *                   ldrb	r7, [r12, -r1, lsl #15]
# CHECK-NEXT:  2      4     1.00    *                   ldrb	r5, [r2], r9, asr #15
# CHECK-NEXT:  2      4     1.00    *                   ldrbt	r3, [r1], #4
# CHECK-NEXT:  2      4     1.00    *                   ldrbt	r2, [r8], #-8
# CHECK-NEXT:  2      4     1.00    *                   ldrbt	r8, [r7], r6
# CHECK-NEXT:  3      4     1.00    *                   ldrbt	r1, [r2], -r6, lsl #12
# CHECK-NEXT:  2      4     2.00    *                   ldrd	r0, r1, [r5]
# CHECK-NEXT:  2      4     2.00    *                   ldrd	r0, r1, [r5, r2]
# CHECK-NEXT:  4      5     2.00    *                   ldrd	r0, r1, [r5, -r2]
# CHECK-NEXT:  2      4     2.00    *                   ldrd	r8, r9, [r2, #15]
# CHECK-NEXT:  4      5     2.00    *                   ldrd	r2, r3, [r9, #32]!
# CHECK-NEXT:  4      4     2.00    *                   ldrd	r6, r7, [r1], #8
# CHECK-NEXT:  4      4     2.00    *                   ldrd	r2, r3, [r8], #0
# CHECK-NEXT:  4      4     2.00    *                   ldrd	r2, r3, [r8], #0
# CHECK-NEXT:  4      4     2.00    *                   ldrd	r2, r3, [r8], #-0
# CHECK-NEXT:  2      4     2.00    *                   ldrd	r4, r5, [r1, r3]
# CHECK-NEXT:  4      4     2.00    *                   ldrd	r4, r5, [r7, r2]!
# CHECK-NEXT:  4      4     2.00    *                   ldrd	r0, r1, [r8], r12
# CHECK-NEXT:  4      4     2.00    *                   ldrd	r0, r1, [r8], -r12
# CHECK-NEXT:  1      4     1.00    *                   ldrh	r3, [r4]
# CHECK-NEXT:  1      4     1.00    *                   ldrh	r2, [r7, #4]
# CHECK-NEXT:  1      4     1.00    *                   ldrh	r1, [r8, #64]!
# CHECK-NEXT:  2      4     1.00    *                   ldrh	r12, [sp], #4
# CHECK-NEXT:  1      4     1.00    *                   ldrh	r6, [r5, r4]
# CHECK-NEXT:  2      5     1.00    *                   ldrh	r6, [r5, -r4]
# CHECK-NEXT:  1      4     1.00    *                   ldrh	r3, [r8, r11]!
# CHECK-NEXT:  1      4     1.00    *                   ldrh	r1, [r2, -r1]!
# CHECK-NEXT:  2      4     1.00    *                   ldrh	r9, [r7], r2
# CHECK-NEXT:  2      4     1.00    *                   ldrh	r4, [r3], -r2
# CHECK-NEXT:  2      4     1.00    *                   ldrht	r9, [r7], #128
# CHECK-NEXT:  2      4     1.00    *                   ldrht	r4, [r3], #-75
# CHECK-NEXT:  2      4     1.00    *                   ldrht	r9, [r7], r2
# CHECK-NEXT:  2      4     1.00    *                   ldrht	r4, [r3], -r2
# CHECK-NEXT:  1      4     1.00    *                   ldrsb	r3, [r4]
# CHECK-NEXT:  1      4     1.00    *                   ldrsb	r2, [r7, #17]
# CHECK-NEXT:  1      4     1.00    *                   ldrsb	r1, [r8, #255]!
# CHECK-NEXT:  2      4     1.00    *                   ldrsb	r12, [sp], #9
# CHECK-NEXT:  1      4     1.00    *                   ldrsb	r6, [r5, r4]
# CHECK-NEXT:  1      4     1.00    *                   ldrsb	r3, [r8, r11]!
# CHECK-NEXT:  1      4     1.00    *                   ldrsb	r1, [r2, -r1]!
# CHECK-NEXT:  2      4     1.00    *                   ldrsb	r9, [r7], r2
# CHECK-NEXT:  2      4     1.00    *                   ldrsb	r4, [r3], -r2
# CHECK-NEXT:  2      4     1.00    *                   ldrsbt	r5, [r6], #1
# CHECK-NEXT:  2      4     1.00    *                   ldrsbt	r3, [r8], #-12
# CHECK-NEXT:  2      4     1.00    *                   ldrsbt	r8, [r9], r5
# CHECK-NEXT:  2      4     1.00    *                   ldrsbt	r2, [r1], -r4
# CHECK-NEXT:  1      4     1.00    *                   ldrsh	r5, [r9]
# CHECK-NEXT:  1      4     1.00    *                   ldrsh	r4, [r5, #7]
# CHECK-NEXT:  1      4     1.00    *                   ldrsh	r3, [r6, #55]!
# CHECK-NEXT:  2      4     1.00    *                   ldrsh	r2, [r7], #-9
# CHECK-NEXT:  1      4     1.00    *                   ldrsh	r3, [r1, r5]
# CHECK-NEXT:  1      4     1.00    *                   ldrsh	r4, [r6, r1]!
# CHECK-NEXT:  1      4     1.00    *                   ldrsh	r5, [r3, -r6]!
# CHECK-NEXT:  2      4     1.00    *                   ldrsh	r6, [r9], r8
# CHECK-NEXT:  2      4     1.00    *                   ldrsh	r7, [r8], -r3
# CHECK-NEXT:  2      4     1.00    *                   ldrsht	r5, [r6], #1
# CHECK-NEXT:  2      4     1.00    *                   ldrsht	r3, [r8], #-12
# CHECK-NEXT:  2      4     1.00    *                   ldrsht	r8, [r9], r5
# CHECK-NEXT:  2      4     1.00    *                   ldrsht	r2, [r1], -r4
# CHECK-NEXT:  12     6     6.00    *                   ldm	r2, {r1, r2, r4, r5, r6}
# CHECK-NEXT:  12     6     6.00    *                   ldm	r2, {r1, r2, r4, r5, r6}
# CHECK-NEXT:  6      5     6.00    *                   ldm	r2, {r1, r3, r4, r5, r6}
# CHECK-NEXT:  4      4     2.00    *                   ldmib	r2, {r1, r2}
# CHECK-NEXT:  4      4     2.00    *                   ldmdb	r2, {r1, r2}
# CHECK-NEXT:  2      3     2.00    *                   ldmib	r2, {r1, r3}
# CHECK-NEXT:  4      4     4.00    *                   ldmib	r2, {r1, r3, r5}
# CHECK-NEXT:  8      5     4.00    *                   ldmib	r2, {r1, r2, r5}
# CHECK-NEXT:  4      4     2.00    *                   ldmdbeq	r2, {r1, r2}
# CHECK-NEXT:  2      3     2.00    *                   ldmibeq	r2, {r1, r3}
# CHECK-NEXT:  16     10    16.00   *                   ldm	r2, {r0, r1, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, sp, lr, pc}
# CHECK-NEXT:  32     11    16.00   *                   ldm	r2, {r0, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, sp, lr, pc}
# CHECK-NEXT:  1      1     1.00           *            str	r8, [r12]
# CHECK-NEXT:  1      1     1.00           *            str	r7, [r1, #12]
# CHECK-NEXT:  2      1     1.00           *            str	r3, [r5, #40]!
# CHECK-NEXT:  2      1     1.00           *            str	r9, [sp], #4095
# CHECK-NEXT:  2      1     1.00           *            str	r1, [r7], #-128
# CHECK-NEXT:  1      1     1.00           *            str	r9, [r6, r3]
# CHECK-NEXT:  2      3     1.00           *            str	r8, [r0, -r2]
# CHECK-NEXT:  2      1     1.00           *            str	r7, [r1, r6]!
# CHECK-NEXT:  2      2     1.00           *            str	r7, [r1, r6, lsl #2]!
# CHECK-NEXT:  2      3     1.00           *            str	r6, [sp, -r1]!
# CHECK-NEXT:  2      2     1.00           *            str	r5, [r3], r9
# CHECK-NEXT:  2      2     1.00           *            str	r4, [r2], -r5
# CHECK-NEXT:  2      3     1.00           *            str	r3, [r4, -r2, lsl #2]
# CHECK-NEXT:  2      2     1.00           *            str	r2, [r7], r3, asr #24
# CHECK-NEXT:  1      1     1.00           *            strb	r9, [r2]
# CHECK-NEXT:  1      1     1.00           *            strb	r7, [r1, #3]
# CHECK-NEXT:  2      1     1.00           *            strb	r6, [r4, #405]!
# CHECK-NEXT:  2      1     1.00           *            strb	r5, [r7], #72
# CHECK-NEXT:  2      1     1.00           *            strb	r1, [sp], #-1
# CHECK-NEXT:  1      1     1.00           *            strb	r1, [r2, r9]
# CHECK-NEXT:  2      3     1.00           *            strb	r2, [r3, -r8]
# CHECK-NEXT:  2      1     1.00           *            strb	r3, [r4, r7]!
# CHECK-NEXT:  2      3     1.00           *            strb	r4, [r5, -r6]!
# CHECK-NEXT:  2      2     1.00           *            strb	r5, [r6], r5
# CHECK-NEXT:  2      2     1.00           *            strb	r6, [r2], -r4
# CHECK-NEXT:  2      3     1.00           *            strb	r7, [r12, -r3, lsl #5]
# CHECK-NEXT:  2      2     1.00           *            strb	sp, [r7], r2, asr #12
# CHECK-NEXT:  2      1     1.00                  U     strbt	r6, [r2], #12
# CHECK-NEXT:  2      1     1.00                  U     strbt	r5, [r6], #-13
# CHECK-NEXT:  2      2     1.00                  U     strbt	r4, [r9], r5
# CHECK-NEXT:  2      2     1.00                  U     strbt	r3, [r8], -r2, lsl #3
# CHECK-NEXT:  1      1     1.00           *            strd	r0, r1, [r4]
# CHECK-NEXT:  1      1     1.00           *            strd	r2, r3, [r6, #1]
# CHECK-NEXT:  1      1     1.00           *            strd	r2, r3, [r6, r2]
# CHECK-NEXT:  2      3     1.00           *            strd	r2, r3, [r6, -r2]
# CHECK-NEXT:  2      1     1.00           *            strd	r2, r3, [r7, #22]!
# CHECK-NEXT:  2      1     1.00           *            strd	r4, r5, [r8], #7
# CHECK-NEXT:  2      1     1.00           *            strd	r4, r5, [sp], #0
# CHECK-NEXT:  2      1     1.00           *            strd	r6, r7, [lr], #0
# CHECK-NEXT:  2      1     1.00           *            strd	r6, r7, [r9], #-0
# CHECK-NEXT:  1      1     1.00           *            strd	r8, r9, [r4, r1]
# CHECK-NEXT:  2      1     1.00           *            strd	r6, r7, [r3, r9]!
# CHECK-NEXT:  2      1     1.00           *            strd	r6, r7, [r5], r8
# CHECK-NEXT:  2      1     1.00           *            strd	r4, r5, [r12], -r10
# CHECK-NEXT:  1      1     1.00           *            strh	r3, [r4]
# CHECK-NEXT:  1      1     1.00           *            strh	r2, [r7, #4]
# CHECK-NEXT:  2      1     1.00                  U     strh	r1, [r8, #64]!
# CHECK-NEXT:  2      1     1.00           *            strh	r12, [sp], #4
# CHECK-NEXT:  1      1     1.00           *            strh	r6, [r5, r4]
# CHECK-NEXT:  2      1     1.00                  U     strh	r3, [r8, r11]!
# CHECK-NEXT:  2      1     1.00                  U     strh	r1, [r2, -r1]!
# CHECK-NEXT:  2      1     1.00           *            strh	r9, [r7], r2
# CHECK-NEXT:  2      1     1.00           *            strh	r4, [r3], -r2
# CHECK-NEXT:  2      1     1.00                  U     strht	r2, [r5], #76
# CHECK-NEXT:  2      1     1.00                  U     strht	r8, [r1], #-25
# CHECK-NEXT:  2      1     1.00                  U     strht	r5, [r3], r4
# CHECK-NEXT:  2      1     1.00                  U     strht	r6, [r8], -r0

# CHECK:      Resources:
# CHECK-NEXT: [0]   - A57UnitB
# CHECK-NEXT: [1.0] - A57UnitI
# CHECK-NEXT: [1.1] - A57UnitI
# CHECK-NEXT: [2]   - A57UnitL
# CHECK-NEXT: [3]   - A57UnitM
# CHECK-NEXT: [4]   - A57UnitS
# CHECK-NEXT: [5]   - A57UnitW
# CHECK-NEXT: [6]   - A57UnitX

# CHECK:      Resource pressure per iteration:
# CHECK-NEXT: [0]    [1.0]  [1.1]  [2]    [3]    [4]    [5]    [6]
# CHECK-NEXT:  -     71.50  71.50  174.00 10.00  57.00   -      -

# CHECK:      Resource pressure by instruction:
# CHECK-NEXT: [0]    [1.0]  [1.1]  [2]    [3]    [4]    [5]    [6]    Instructions:
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pld	[pc, #8]
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pldw	[pc, #-128]
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     pldw	[pc, r0, lsl #2]
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     pldw	[pc, r0, lsl #4]
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     pldw	[pc, -r0]
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldr	r5, [r7]
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldr	r6, [r3, #63]
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldr	r2, [r4, #4095]!
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldr	r1, [r2], #30
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldr	r3, [r1], #-30
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldr	r3, [r8, r1]
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldr	r3, [r8, r1, lsl #2]
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldr	r3, [r8, r1, asr #2]
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldr	r2, [r5, -r3]
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldr	r1, [r5, r9]!
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldr	r6, [r7, -r8]!
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldr	r1, [r0, r2, lsr #3]!
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldr	r5, [r9], r2
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldr	r4, [r3], -r6
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldr	r3, [r8, -r2, lsl #15]
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldr	r1, [r5], r3, asr #15
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrb	r3, [r8]
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrb	r1, [sp, #63]
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrb	r9, [r3, #4095]!
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrb	r8, [r1], #22
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrb	r2, [r7], #-19
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrb	r9, [r8, r5]
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrb	r1, [r5, -r1]
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrb	r3, [r5, r2]!
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrb	r3, [r5, r2, lsl #2]!
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrb	r3, [r5, r2, asr #2]!
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrb	r6, [r9, -r3]!
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrb	r2, [r1], r4
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrb	r8, [r4], -r5
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrb	r7, [r12, -r1, lsl #15]
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrb	r5, [r2], r9, asr #15
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrbt	r3, [r1], #4
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrbt	r2, [r8], #-8
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrbt	r8, [r7], r6
# CHECK-NEXT:  -     0.50   0.50   1.00   1.00    -      -      -     ldrbt	r1, [r2], -r6, lsl #12
# CHECK-NEXT:  -      -      -     2.00    -      -      -      -     ldrd	r0, r1, [r5]
# CHECK-NEXT:  -      -      -     2.00    -      -      -      -     ldrd	r0, r1, [r5, r2]
# CHECK-NEXT:  -     1.00   1.00   2.00    -      -      -      -     ldrd	r0, r1, [r5, -r2]
# CHECK-NEXT:  -      -      -     2.00    -      -      -      -     ldrd	r8, r9, [r2, #15]
# CHECK-NEXT:  -     1.00   1.00   2.00    -      -      -      -     ldrd	r2, r3, [r9, #32]!
# CHECK-NEXT:  -     1.00   1.00   2.00    -      -      -      -     ldrd	r6, r7, [r1], #8
# CHECK-NEXT:  -     1.00   1.00   2.00    -      -      -      -     ldrd	r2, r3, [r8], #0
# CHECK-NEXT:  -     1.00   1.00   2.00    -      -      -      -     ldrd	r2, r3, [r8], #0
# CHECK-NEXT:  -     1.00   1.00   2.00    -      -      -      -     ldrd	r2, r3, [r8], #-0
# CHECK-NEXT:  -      -      -     2.00    -      -      -      -     ldrd	r4, r5, [r1, r3]
# CHECK-NEXT:  -     1.00   1.00   2.00    -      -      -      -     ldrd	r4, r5, [r7, r2]!
# CHECK-NEXT:  -     1.00   1.00   2.00    -      -      -      -     ldrd	r0, r1, [r8], r12
# CHECK-NEXT:  -     1.00   1.00   2.00    -      -      -      -     ldrd	r0, r1, [r8], -r12
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrh	r3, [r4]
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrh	r2, [r7, #4]
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrh	r1, [r8, #64]!
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrh	r12, [sp], #4
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrh	r6, [r5, r4]
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrh	r6, [r5, -r4]
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrh	r3, [r8, r11]!
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrh	r1, [r2, -r1]!
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrh	r9, [r7], r2
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrh	r4, [r3], -r2
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrht	r9, [r7], #128
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrht	r4, [r3], #-75
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrht	r9, [r7], r2
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrht	r4, [r3], -r2
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrsb	r3, [r4]
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrsb	r2, [r7, #17]
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrsb	r1, [r8, #255]!
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrsb	r12, [sp], #9
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrsb	r6, [r5, r4]
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrsb	r3, [r8, r11]!
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrsb	r1, [r2, -r1]!
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrsb	r9, [r7], r2
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrsb	r4, [r3], -r2
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrsbt	r5, [r6], #1
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrsbt	r3, [r8], #-12
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrsbt	r8, [r9], r5
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrsbt	r2, [r1], -r4
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrsh	r5, [r9]
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrsh	r4, [r5, #7]
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrsh	r3, [r6, #55]!
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrsh	r2, [r7], #-9
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrsh	r3, [r1, r5]
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrsh	r4, [r6, r1]!
# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     ldrsh	r5, [r3, -r6]!
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrsh	r6, [r9], r8
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrsh	r7, [r8], -r3
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrsht	r5, [r6], #1
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrsht	r3, [r8], #-12
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrsht	r8, [r9], r5
# CHECK-NEXT:  -     0.50   0.50   1.00    -      -      -      -     ldrsht	r2, [r1], -r4
# CHECK-NEXT:  -     3.00   3.00   6.00    -      -      -      -     ldm	r2, {r1, r2, r4, r5, r6}
# CHECK-NEXT:  -     3.00   3.00   6.00    -      -      -      -     ldm	r2, {r1, r2, r4, r5, r6}
# CHECK-NEXT:  -      -      -     6.00    -      -      -      -     ldm	r2, {r1, r3, r4, r5, r6}
# CHECK-NEXT:  -     1.00   1.00   2.00    -      -      -      -     ldmib	r2, {r1, r2}
# CHECK-NEXT:  -     1.00   1.00   2.00    -      -      -      -     ldmdb	r2, {r1, r2}
# CHECK-NEXT:  -      -      -     2.00    -      -      -      -     ldmib	r2, {r1, r3}
# CHECK-NEXT:  -      -      -     4.00    -      -      -      -     ldmib	r2, {r1, r3, r5}
# CHECK-NEXT:  -     2.00   2.00   4.00    -      -      -      -     ldmib	r2, {r1, r2, r5}
# CHECK-NEXT:  -     1.00   1.00   2.00    -      -      -      -     ldmdbeq	r2, {r1, r2}
# CHECK-NEXT:  -      -      -     2.00    -      -      -      -     ldmibeq	r2, {r1, r3}
# CHECK-NEXT:  -      -      -     16.00   -      -      -      -     ldm	r2, {r0, r1, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, sp, lr, pc}
# CHECK-NEXT:  -     8.00   8.00   16.00   -      -      -      -     ldm	r2, {r0, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, sp, lr, pc}
# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     str	r8, [r12]
# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     str	r7, [r1, #12]
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     str	r3, [r5, #40]!
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     str	r9, [sp], #4095
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     str	r1, [r7], #-128
# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     str	r9, [r6, r3]
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     str	r8, [r0, -r2]
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     str	r7, [r1, r6]!
# CHECK-NEXT:  -      -      -      -     1.00   1.00    -      -     str	r7, [r1, r6, lsl #2]!
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     str	r6, [sp, -r1]!
# CHECK-NEXT:  -      -      -      -     1.00   1.00    -      -     str	r5, [r3], r9
# CHECK-NEXT:  -      -      -      -     1.00   1.00    -      -     str	r4, [r2], -r5
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     str	r3, [r4, -r2, lsl #2]
# CHECK-NEXT:  -      -      -      -     1.00   1.00    -      -     str	r2, [r7], r3, asr #24
# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     strb	r9, [r2]
# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     strb	r7, [r1, #3]
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strb	r6, [r4, #405]!
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strb	r5, [r7], #72
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strb	r1, [sp], #-1
# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     strb	r1, [r2, r9]
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strb	r2, [r3, -r8]
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strb	r3, [r4, r7]!
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strb	r4, [r5, -r6]!
# CHECK-NEXT:  -      -      -      -     1.00   1.00    -      -     strb	r5, [r6], r5
# CHECK-NEXT:  -      -      -      -     1.00   1.00    -      -     strb	r6, [r2], -r4
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strb	r7, [r12, -r3, lsl #5]
# CHECK-NEXT:  -      -      -      -     1.00   1.00    -      -     strb	sp, [r7], r2, asr #12
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strbt	r6, [r2], #12
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strbt	r5, [r6], #-13
# CHECK-NEXT:  -      -      -      -     1.00   1.00    -      -     strbt	r4, [r9], r5
# CHECK-NEXT:  -      -      -      -     1.00   1.00    -      -     strbt	r3, [r8], -r2, lsl #3
# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     strd	r0, r1, [r4]
# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     strd	r2, r3, [r6, #1]
# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     strd	r2, r3, [r6, r2]
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strd	r2, r3, [r6, -r2]
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strd	r2, r3, [r7, #22]!
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strd	r4, r5, [r8], #7
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strd	r4, r5, [sp], #0
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strd	r6, r7, [lr], #0
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strd	r6, r7, [r9], #-0
# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     strd	r8, r9, [r4, r1]
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strd	r6, r7, [r3, r9]!
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strd	r6, r7, [r5], r8
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strd	r4, r5, [r12], -r10
# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     strh	r3, [r4]
# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     strh	r2, [r7, #4]
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strh	r1, [r8, #64]!
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strh	r12, [sp], #4
# CHECK-NEXT:  -      -      -      -      -     1.00    -      -     strh	r6, [r5, r4]
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strh	r3, [r8, r11]!
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strh	r1, [r2, -r1]!
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strh	r9, [r7], r2
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strh	r4, [r3], -r2
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strht	r2, [r5], #76
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strht	r8, [r1], #-25
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strht	r5, [r3], r4
# CHECK-NEXT:  -     0.50   0.50    -      -     1.00    -      -     strht	r6, [r8], -r0