[llvm] 1ae7624 - [ARM] Update and regenerate test checks. NFC

David Green via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 8 06:54:29 PST 2021


Author: David Green
Date: 2021-01-08T14:54:16Z
New Revision: 1ae762469fd11be0b5a10353281a8264ab97b166

URL: https://github.com/llvm/llvm-project/commit/1ae762469fd11be0b5a10353281a8264ab97b166
DIFF: https://github.com/llvm/llvm-project/commit/1ae762469fd11be0b5a10353281a8264ab97b166.diff

LOG: [ARM] Update and regenerate test checks. NFC

Added: 
    

Modified: 
    llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll
    llvm/test/CodeGen/ARM/indexed-mem.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll b/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll
index e6fc02970e4f..b5c63af5a348 100644
--- a/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll
+++ b/llvm/test/CodeGen/ARM/arm-shrink-wrapping.ll
@@ -1760,102 +1760,199 @@ declare double @llvm.pow.f64(double, double)
 ;
 ; bl
 define float @debug_info(float %gamma, float %slopeLimit, i1 %or.cond, double %tmp) "frame-pointer"="all" {
-; ARM-LABEL: debug_info:
-; ARM:       @ %bb.0: @ %bb
-; ARM-NEXT:    push {r4, r7, lr}
-; ARM-NEXT:    add r7, sp, #4
-; ARM-NEXT:    sub r4, sp, #16
-; ARM-NEXT:    bfc r4, #0, #4
-; ARM-NEXT:    mov sp, r4
-; ARM-NEXT:    tst r2, #1
-; ARM-NEXT:    vst1.64 {d8, d9}, [r4:128]
-; ARM-NEXT:    beq LBB12_2
-; ARM-NEXT:  @ %bb.1: @ %bb3
-; ARM-NEXT:    ldr r1, [r7, #8]
-; ARM-NEXT:    vmov s16, r0
-; ARM-NEXT:    mov r0, r3
-; ARM-NEXT:    mov r2, r3
-; ARM-NEXT:    vmov d9, r3, r1
-; ARM-NEXT:    mov r3, r1
-; ARM-NEXT:    bl _pow
-; ARM-NEXT:    vmov.f32 s0, #1.000000e+00
-; ARM-NEXT:    vmov.f64 d16, #1.000000e+00
-; ARM-NEXT:    vadd.f64 d16, d9, d16
-; ARM-NEXT:    vcmp.f32 s16, s0
-; ARM-NEXT:    vmrs APSR_nzcv, fpscr
-; ARM-NEXT:    vmov d17, r0, r1
-; ARM-NEXT:    vmov.f64 d18, d9
-; ARM-NEXT:    vadd.f64 d17, d17, d17
-; ARM-NEXT:    vmovgt.f64 d18, d16
-; ARM-NEXT:    vcmp.f64 d18, d9
-; ARM-NEXT:    vmrs APSR_nzcv, fpscr
-; ARM-NEXT:    vmovne.f64 d9, d17
-; ARM-NEXT:    vcvt.f32.f64 s0, d9
-; ARM-NEXT:    b LBB12_3
-; ARM-NEXT:  LBB12_2:
-; ARM-NEXT:    vldr s0, LCPI12_0
-; ARM-NEXT:  LBB12_3: @ %bb13
-; ARM-NEXT:    mov r4, sp
-; ARM-NEXT:    vld1.64 {d8, d9}, [r4:128]
-; ARM-NEXT:    vmov r0, s0
-; ARM-NEXT:    sub sp, r7, #4
-; ARM-NEXT:    pop {r4, r7, pc}
-; ARM-NEXT:    .p2align 2
-; ARM-NEXT:  @ %bb.4:
-; ARM-NEXT:    .data_region
-; ARM-NEXT:  LCPI12_0:
-; ARM-NEXT:    .long 0 @ float 0
-; ARM-NEXT:    .end_data_region
-;
-; THUMB-LABEL: debug_info:
-; THUMB:       @ %bb.0: @ %bb
-; THUMB-NEXT:    push {r4, r7, lr}
-; THUMB-NEXT:    add r7, sp, #4
-; THUMB-NEXT:    sub.w r4, sp, #16
-; THUMB-NEXT:    bfc r4, #0, #4
-; THUMB-NEXT:    mov sp, r4
-; THUMB-NEXT:    lsls r1, r2, #31
-; THUMB-NEXT:    vst1.64 {d8, d9}, [r4:128]
-; THUMB-NEXT:    beq LBB12_2
-; THUMB-NEXT:  @ %bb.1: @ %bb3
-; THUMB-NEXT:    ldr r1, [r7, #8]
-; THUMB-NEXT:    vmov s16, r0
-; THUMB-NEXT:    mov r0, r3
-; THUMB-NEXT:    mov r2, r3
-; THUMB-NEXT:    vmov d9, r3, r1
-; THUMB-NEXT:    mov r3, r1
-; THUMB-NEXT:    bl _pow
-; THUMB-NEXT:    vmov.f32 s0, #1.000000e+00
-; THUMB-NEXT:    vmov.f64 d16, #1.000000e+00
-; THUMB-NEXT:    vmov.f64 d18, d9
-; THUMB-NEXT:    vcmp.f32 s16, s0
-; THUMB-NEXT:    vadd.f64 d16, d9, d16
-; THUMB-NEXT:    vmrs APSR_nzcv, fpscr
-; THUMB-NEXT:    it gt
-; THUMB-NEXT:    vmovgt.f64 d18, d16
-; THUMB-NEXT:    vcmp.f64 d18, d9
-; THUMB-NEXT:    vmov d17, r0, r1
-; THUMB-NEXT:    vmrs APSR_nzcv, fpscr
-; THUMB-NEXT:    vadd.f64 d17, d17, d17
-; THUMB-NEXT:    it ne
-; THUMB-NEXT:    vmovne.f64 d9, d17
-; THUMB-NEXT:    vcvt.f32.f64 s0, d9
-; THUMB-NEXT:    b LBB12_3
-; THUMB-NEXT:  LBB12_2:
-; THUMB-NEXT:    vldr s0, LCPI12_0
-; THUMB-NEXT:  LBB12_3: @ %bb13
-; THUMB-NEXT:    mov r4, sp
-; THUMB-NEXT:    vld1.64 {d8, d9}, [r4:128]
-; THUMB-NEXT:    subs r4, r7, #4
-; THUMB-NEXT:    vmov r0, s0
-; THUMB-NEXT:    mov sp, r4
-; THUMB-NEXT:    pop {r4, r7, pc}
-; THUMB-NEXT:    .p2align 2
-; THUMB-NEXT:  @ %bb.4:
-; THUMB-NEXT:    .data_region
-; THUMB-NEXT:  LCPI12_0:
-; THUMB-NEXT:    .long 0 @ float 0
-; THUMB-NEXT:    .end_data_region
+; ARM-ENABLE-LABEL: debug_info:
+; ARM-ENABLE:       @ %bb.0: @ %bb
+; ARM-ENABLE-NEXT:    push {r4, r7, lr}
+; ARM-ENABLE-NEXT:    add r7, sp, #4
+; ARM-ENABLE-NEXT:    sub r4, sp, #16
+; ARM-ENABLE-NEXT:    bfc r4, #0, #4
+; ARM-ENABLE-NEXT:    mov sp, r4
+; ARM-ENABLE-NEXT:    tst r2, #1
+; ARM-ENABLE-NEXT:    vst1.64 {d8, d9}, [r4:128]
+; ARM-ENABLE-NEXT:    beq LBB12_2
+; ARM-ENABLE-NEXT:  @ %bb.1: @ %bb3
+; ARM-ENABLE-NEXT:    ldr r1, [r7, #8]
+; ARM-ENABLE-NEXT:    vmov s16, r0
+; ARM-ENABLE-NEXT:    mov r0, r3
+; ARM-ENABLE-NEXT:    mov r2, r3
+; ARM-ENABLE-NEXT:    vmov d9, r3, r1
+; ARM-ENABLE-NEXT:    mov r3, r1
+; ARM-ENABLE-NEXT:    bl _pow
+; ARM-ENABLE-NEXT:    vmov.f32 s0, #1.000000e+00
+; ARM-ENABLE-NEXT:    vmov.f64 d16, #1.000000e+00
+; ARM-ENABLE-NEXT:    vadd.f64 d16, d9, d16
+; ARM-ENABLE-NEXT:    vcmp.f32 s16, s0
+; ARM-ENABLE-NEXT:    vmrs APSR_nzcv, fpscr
+; ARM-ENABLE-NEXT:    vmov d17, r0, r1
+; ARM-ENABLE-NEXT:    vmov.f64 d18, d9
+; ARM-ENABLE-NEXT:    vadd.f64 d17, d17, d17
+; ARM-ENABLE-NEXT:    vmovgt.f64 d18, d16
+; ARM-ENABLE-NEXT:    vcmp.f64 d18, d9
+; ARM-ENABLE-NEXT:    vmrs APSR_nzcv, fpscr
+; ARM-ENABLE-NEXT:    vmovne.f64 d9, d17
+; ARM-ENABLE-NEXT:    vcvt.f32.f64 s0, d9
+; ARM-ENABLE-NEXT:    b LBB12_3
+; ARM-ENABLE-NEXT:  LBB12_2:
+; ARM-ENABLE-NEXT:    vldr s0, LCPI12_0
+; ARM-ENABLE-NEXT:  LBB12_3: @ %bb13
+; ARM-ENABLE-NEXT:    mov r4, sp
+; ARM-ENABLE-NEXT:    vld1.64 {d8, d9}, [r4:128]
+; ARM-ENABLE-NEXT:    vmov r0, s0
+; ARM-ENABLE-NEXT:    sub sp, r7, #4
+; ARM-ENABLE-NEXT:    pop {r4, r7, pc}
+; ARM-ENABLE-NEXT:    .p2align 2
+; ARM-ENABLE-NEXT:  @ %bb.4:
+; ARM-ENABLE-NEXT:    .data_region
+; ARM-ENABLE-NEXT:  LCPI12_0:
+; ARM-ENABLE-NEXT:    .long 0x00000000 @ float 0
+; ARM-ENABLE-NEXT:    .end_data_region
+;
+; ARM-DISABLE-LABEL: debug_info:
+; ARM-DISABLE:       @ %bb.0: @ %bb
+; ARM-DISABLE-NEXT:    push {r4, r7, lr}
+; ARM-DISABLE-NEXT:    add r7, sp, #4
+; ARM-DISABLE-NEXT:    sub r4, sp, #16
+; ARM-DISABLE-NEXT:    bfc r4, #0, #4
+; ARM-DISABLE-NEXT:    mov sp, r4
+; ARM-DISABLE-NEXT:    tst r2, #1
+; ARM-DISABLE-NEXT:    vst1.64 {d8, d9}, [r4:128]
+; ARM-DISABLE-NEXT:    beq LBB12_2
+; ARM-DISABLE-NEXT:  @ %bb.1: @ %bb3
+; ARM-DISABLE-NEXT:    ldr r1, [r7, #8]
+; ARM-DISABLE-NEXT:    vmov s16, r0
+; ARM-DISABLE-NEXT:    mov r0, r3
+; ARM-DISABLE-NEXT:    mov r2, r3
+; ARM-DISABLE-NEXT:    vmov d9, r3, r1
+; ARM-DISABLE-NEXT:    mov r3, r1
+; ARM-DISABLE-NEXT:    bl _pow
+; ARM-DISABLE-NEXT:    vmov.f32 s0, #1.000000e+00
+; ARM-DISABLE-NEXT:    vmov.f64 d16, #1.000000e+00
+; ARM-DISABLE-NEXT:    vadd.f64 d16, d9, d16
+; ARM-DISABLE-NEXT:    vcmp.f32 s16, s0
+; ARM-DISABLE-NEXT:    vmrs APSR_nzcv, fpscr
+; ARM-DISABLE-NEXT:    vmov d17, r0, r1
+; ARM-DISABLE-NEXT:    vmov.f64 d18, d9
+; ARM-DISABLE-NEXT:    vadd.f64 d17, d17, d17
+; ARM-DISABLE-NEXT:    vmovgt.f64 d18, d16
+; ARM-DISABLE-NEXT:    vcmp.f64 d18, d9
+; ARM-DISABLE-NEXT:    vmrs APSR_nzcv, fpscr
+; ARM-DISABLE-NEXT:    vmovne.f64 d9, d17
+; ARM-DISABLE-NEXT:    vcvt.f32.f64 s0, d9
+; ARM-DISABLE-NEXT:    b LBB12_3
+; ARM-DISABLE-NEXT:  LBB12_2:
+; ARM-DISABLE-NEXT:    vldr s0, LCPI12_0
+; ARM-DISABLE-NEXT:  LBB12_3: @ %bb13
+; ARM-DISABLE-NEXT:    mov r4, sp
+; ARM-DISABLE-NEXT:    vld1.64 {d8, d9}, [r4:128]
+; ARM-DISABLE-NEXT:    vmov r0, s0
+; ARM-DISABLE-NEXT:    sub sp, r7, #4
+; ARM-DISABLE-NEXT:    pop {r4, r7, pc}
+; ARM-DISABLE-NEXT:    .p2align 2
+; ARM-DISABLE-NEXT:  @ %bb.4:
+; ARM-DISABLE-NEXT:    .data_region
+; ARM-DISABLE-NEXT:  LCPI12_0:
+; ARM-DISABLE-NEXT:    .long 0x00000000 @ float 0
+; ARM-DISABLE-NEXT:    .end_data_region
+;
+; THUMB-ENABLE-LABEL: debug_info:
+; THUMB-ENABLE:       @ %bb.0: @ %bb
+; THUMB-ENABLE-NEXT:    push {r4, r7, lr}
+; THUMB-ENABLE-NEXT:    add r7, sp, #4
+; THUMB-ENABLE-NEXT:    sub.w r4, sp, #16
+; THUMB-ENABLE-NEXT:    bfc r4, #0, #4
+; THUMB-ENABLE-NEXT:    mov sp, r4
+; THUMB-ENABLE-NEXT:    lsls r1, r2, #31
+; THUMB-ENABLE-NEXT:    vst1.64 {d8, d9}, [r4:128]
+; THUMB-ENABLE-NEXT:    beq LBB12_2
+; THUMB-ENABLE-NEXT:  @ %bb.1: @ %bb3
+; THUMB-ENABLE-NEXT:    ldr r1, [r7, #8]
+; THUMB-ENABLE-NEXT:    vmov s16, r0
+; THUMB-ENABLE-NEXT:    mov r0, r3
+; THUMB-ENABLE-NEXT:    mov r2, r3
+; THUMB-ENABLE-NEXT:    vmov d9, r3, r1
+; THUMB-ENABLE-NEXT:    mov r3, r1
+; THUMB-ENABLE-NEXT:    bl _pow
+; THUMB-ENABLE-NEXT:    vmov.f32 s0, #1.000000e+00
+; THUMB-ENABLE-NEXT:    vmov.f64 d16, #1.000000e+00
+; THUMB-ENABLE-NEXT:    vmov.f64 d18, d9
+; THUMB-ENABLE-NEXT:    vcmp.f32 s16, s0
+; THUMB-ENABLE-NEXT:    vadd.f64 d16, d9, d16
+; THUMB-ENABLE-NEXT:    vmrs APSR_nzcv, fpscr
+; THUMB-ENABLE-NEXT:    it gt
+; THUMB-ENABLE-NEXT:    vmovgt.f64 d18, d16
+; THUMB-ENABLE-NEXT:    vcmp.f64 d18, d9
+; THUMB-ENABLE-NEXT:    vmov d17, r0, r1
+; THUMB-ENABLE-NEXT:    vmrs APSR_nzcv, fpscr
+; THUMB-ENABLE-NEXT:    vadd.f64 d17, d17, d17
+; THUMB-ENABLE-NEXT:    it ne
+; THUMB-ENABLE-NEXT:    vmovne.f64 d9, d17
+; THUMB-ENABLE-NEXT:    vcvt.f32.f64 s0, d9
+; THUMB-ENABLE-NEXT:    b LBB12_3
+; THUMB-ENABLE-NEXT:  LBB12_2:
+; THUMB-ENABLE-NEXT:    vldr s0, LCPI12_0
+; THUMB-ENABLE-NEXT:  LBB12_3: @ %bb13
+; THUMB-ENABLE-NEXT:    mov r4, sp
+; THUMB-ENABLE-NEXT:    vld1.64 {d8, d9}, [r4:128]
+; THUMB-ENABLE-NEXT:    subs r4, r7, #4
+; THUMB-ENABLE-NEXT:    vmov r0, s0
+; THUMB-ENABLE-NEXT:    mov sp, r4
+; THUMB-ENABLE-NEXT:    pop {r4, r7, pc}
+; THUMB-ENABLE-NEXT:    .p2align 2
+; THUMB-ENABLE-NEXT:  @ %bb.4:
+; THUMB-ENABLE-NEXT:    .data_region
+; THUMB-ENABLE-NEXT:  LCPI12_0:
+; THUMB-ENABLE-NEXT:    .long 0x00000000 @ float 0
+; THUMB-ENABLE-NEXT:    .end_data_region
+;
+; THUMB-DISABLE-LABEL: debug_info:
+; THUMB-DISABLE:       @ %bb.0: @ %bb
+; THUMB-DISABLE-NEXT:    push {r4, r7, lr}
+; THUMB-DISABLE-NEXT:    add r7, sp, #4
+; THUMB-DISABLE-NEXT:    sub.w r4, sp, #16
+; THUMB-DISABLE-NEXT:    bfc r4, #0, #4
+; THUMB-DISABLE-NEXT:    mov sp, r4
+; THUMB-DISABLE-NEXT:    lsls r1, r2, #31
+; THUMB-DISABLE-NEXT:    vst1.64 {d8, d9}, [r4:128]
+; THUMB-DISABLE-NEXT:    beq LBB12_2
+; THUMB-DISABLE-NEXT:  @ %bb.1: @ %bb3
+; THUMB-DISABLE-NEXT:    ldr r1, [r7, #8]
+; THUMB-DISABLE-NEXT:    vmov s16, r0
+; THUMB-DISABLE-NEXT:    mov r0, r3
+; THUMB-DISABLE-NEXT:    mov r2, r3
+; THUMB-DISABLE-NEXT:    vmov d9, r3, r1
+; THUMB-DISABLE-NEXT:    mov r3, r1
+; THUMB-DISABLE-NEXT:    bl _pow
+; THUMB-DISABLE-NEXT:    vmov.f32 s0, #1.000000e+00
+; THUMB-DISABLE-NEXT:    vmov.f64 d16, #1.000000e+00
+; THUMB-DISABLE-NEXT:    vmov.f64 d18, d9
+; THUMB-DISABLE-NEXT:    vcmp.f32 s16, s0
+; THUMB-DISABLE-NEXT:    vadd.f64 d16, d9, d16
+; THUMB-DISABLE-NEXT:    vmrs APSR_nzcv, fpscr
+; THUMB-DISABLE-NEXT:    it gt
+; THUMB-DISABLE-NEXT:    vmovgt.f64 d18, d16
+; THUMB-DISABLE-NEXT:    vcmp.f64 d18, d9
+; THUMB-DISABLE-NEXT:    vmov d17, r0, r1
+; THUMB-DISABLE-NEXT:    vmrs APSR_nzcv, fpscr
+; THUMB-DISABLE-NEXT:    vadd.f64 d17, d17, d17
+; THUMB-DISABLE-NEXT:    it ne
+; THUMB-DISABLE-NEXT:    vmovne.f64 d9, d17
+; THUMB-DISABLE-NEXT:    vcvt.f32.f64 s0, d9
+; THUMB-DISABLE-NEXT:    b LBB12_3
+; THUMB-DISABLE-NEXT:  LBB12_2:
+; THUMB-DISABLE-NEXT:    vldr s0, LCPI12_0
+; THUMB-DISABLE-NEXT:  LBB12_3: @ %bb13
+; THUMB-DISABLE-NEXT:    mov r4, sp
+; THUMB-DISABLE-NEXT:    vld1.64 {d8, d9}, [r4:128]
+; THUMB-DISABLE-NEXT:    subs r4, r7, #4
+; THUMB-DISABLE-NEXT:    vmov r0, s0
+; THUMB-DISABLE-NEXT:    mov sp, r4
+; THUMB-DISABLE-NEXT:    pop {r4, r7, pc}
+; THUMB-DISABLE-NEXT:    .p2align 2
+; THUMB-DISABLE-NEXT:  @ %bb.4:
+; THUMB-DISABLE-NEXT:    .data_region
+; THUMB-DISABLE-NEXT:  LCPI12_0:
+; THUMB-DISABLE-NEXT:    .long 0x00000000 @ float 0
+; THUMB-DISABLE-NEXT:    .end_data_region
 bb:
   br i1 %or.cond, label %bb3, label %bb13
 

diff  --git a/llvm/test/CodeGen/ARM/indexed-mem.ll b/llvm/test/CodeGen/ARM/indexed-mem.ll
index b318c7642566..a5f8409a50a2 100644
--- a/llvm/test/CodeGen/ARM/indexed-mem.ll
+++ b/llvm/test/CodeGen/ARM/indexed-mem.ll
@@ -1,9 +1,21 @@
-; RUN: llc -mtriple=thumbv8m.main %s -o - | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-V8M
-; RUN: llc -mtriple=armv8 %s -o - | FileCheck %s --check-prefix=CHECK-V8
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc -mtriple=thumbv8m.main %s -o - | FileCheck %s --check-prefix=CHECK-V8M
+; RUN: llc -mtriple=armv8 %s -o - | FileCheck %s  --check-prefix=CHECK-V8A
 
-; CHECK-LABEL: pre_inc_ldr
-; CHECK: ldr{{.*}}, [r0, #4]!
 define i32* @pre_inc_ldr(i32* %base, i32 %a) {
+; CHECK-V8M-LABEL: pre_inc_ldr:
+; CHECK-V8M:       @ %bb.0:
+; CHECK-V8M-NEXT:    ldr r2, [r0, #4]!
+; CHECK-V8M-NEXT:    add r1, r2
+; CHECK-V8M-NEXT:    str r1, [r0, #4]
+; CHECK-V8M-NEXT:    bx lr
+;
+; CHECK-V8A-LABEL: pre_inc_ldr:
+; CHECK-V8A:       @ %bb.0:
+; CHECK-V8A-NEXT:    ldr r2, [r0, #4]!
+; CHECK-V8A-NEXT:    add r1, r2, r1
+; CHECK-V8A-NEXT:    str r1, [r0, #4]
+; CHECK-V8A-NEXT:    bx lr
   %addr = getelementptr i32, i32* %base, i32 1
   %ld = load i32, i32* %addr
   %addr.1 = getelementptr i32, i32* %base, i32 2
@@ -12,9 +24,20 @@ define i32* @pre_inc_ldr(i32* %base, i32 %a) {
   ret i32* %addr
 }
 
-; CHECK-LABEL: pre_dec_ldr
-; CHECK: ldr{{.*}}, [r0, #-4]!
 define i32* @pre_dec_ldr(i32* %base, i32 %a) {
+; CHECK-V8M-LABEL: pre_dec_ldr:
+; CHECK-V8M:       @ %bb.0:
+; CHECK-V8M-NEXT:    ldr r2, [r0, #-4]!
+; CHECK-V8M-NEXT:    add r1, r2
+; CHECK-V8M-NEXT:    str r1, [r0, #12]
+; CHECK-V8M-NEXT:    bx lr
+;
+; CHECK-V8A-LABEL: pre_dec_ldr:
+; CHECK-V8A:       @ %bb.0:
+; CHECK-V8A-NEXT:    ldr r2, [r0, #-4]!
+; CHECK-V8A-NEXT:    add r1, r2, r1
+; CHECK-V8A-NEXT:    str r1, [r0, #12]
+; CHECK-V8A-NEXT:    bx lr
   %addr = getelementptr i32, i32* %base, i32 -1
   %ld = load i32, i32* %addr
   %addr.1 = getelementptr i32, i32* %base, i32 2
@@ -23,9 +46,20 @@ define i32* @pre_dec_ldr(i32* %base, i32 %a) {
   ret i32* %addr
 }
 
-; CHECK-LABEL: post_inc_ldr
-; CHECK: ldr{{.*}}, [r0], #4
 define i32* @post_inc_ldr(i32* %base, i32* %addr.2, i32 %a) {
+; CHECK-V8M-LABEL: post_inc_ldr:
+; CHECK-V8M:       @ %bb.0:
+; CHECK-V8M-NEXT:    ldr r3, [r0], #4
+; CHECK-V8M-NEXT:    add r2, r3
+; CHECK-V8M-NEXT:    str r2, [r1]
+; CHECK-V8M-NEXT:    bx lr
+;
+; CHECK-V8A-LABEL: post_inc_ldr:
+; CHECK-V8A:       @ %bb.0:
+; CHECK-V8A-NEXT:    ldr r3, [r0], #4
+; CHECK-V8A-NEXT:    add r2, r3, r2
+; CHECK-V8A-NEXT:    str r2, [r1]
+; CHECK-V8A-NEXT:    bx lr
   %addr = getelementptr i32, i32* %base, i32 0
   %ld = load i32, i32* %addr
   %addr.1 = getelementptr i32, i32* %base, i32 1
@@ -34,9 +68,20 @@ define i32* @post_inc_ldr(i32* %base, i32* %addr.2, i32 %a) {
   ret i32* %addr.1
 }
 
-; CHECK-LABEL: post_dec_ldr
-; CHECK: ldr{{.*}}, [r0], #-4
 define i32* @post_dec_ldr(i32* %base, i32* %addr.2, i32 %a) {
+; CHECK-V8M-LABEL: post_dec_ldr:
+; CHECK-V8M:       @ %bb.0:
+; CHECK-V8M-NEXT:    ldr r3, [r0], #-4
+; CHECK-V8M-NEXT:    add r2, r3
+; CHECK-V8M-NEXT:    str r2, [r1]
+; CHECK-V8M-NEXT:    bx lr
+;
+; CHECK-V8A-LABEL: post_dec_ldr:
+; CHECK-V8A:       @ %bb.0:
+; CHECK-V8A-NEXT:    ldr r3, [r0], #-4
+; CHECK-V8A-NEXT:    add r2, r3, r2
+; CHECK-V8A-NEXT:    str r2, [r1]
+; CHECK-V8A-NEXT:    bx lr
   %addr = getelementptr i32, i32* %base, i32 0
   %ld = load i32, i32* %addr
   %addr.1 = getelementptr i32, i32* %base, i32 -1
@@ -45,36 +90,72 @@ define i32* @post_dec_ldr(i32* %base, i32* %addr.2, i32 %a) {
   ret i32* %addr.1
 }
 
-; CHECK-LABEL: pre_inc_str
-; CHECK: str{{.*}}, [r0, #4]!
 define i32* @pre_inc_str(i32* %base, i32 %a, i32 %b) {
+; CHECK-V8M-LABEL: pre_inc_str:
+; CHECK-V8M:       @ %bb.0:
+; CHECK-V8M-NEXT:    add r1, r2
+; CHECK-V8M-NEXT:    str r1, [r0, #4]!
+; CHECK-V8M-NEXT:    bx lr
+;
+; CHECK-V8A-LABEL: pre_inc_str:
+; CHECK-V8A:       @ %bb.0:
+; CHECK-V8A-NEXT:    add r1, r1, r2
+; CHECK-V8A-NEXT:    str r1, [r0, #4]!
+; CHECK-V8A-NEXT:    bx lr
   %addr.1 = getelementptr i32, i32* %base, i32 1
   %res = add i32 %a, %b
   store i32 %res, i32* %addr.1
   ret i32* %addr.1
 }
 
-; CHECK-LABEL: pre_dec_str
-; CHECK: str{{.*}}, [r0, #-4]!
 define i32* @pre_dec_str(i32* %base, i32 %a, i32 %b) {
+; CHECK-V8M-LABEL: pre_dec_str:
+; CHECK-V8M:       @ %bb.0:
+; CHECK-V8M-NEXT:    add r1, r2
+; CHECK-V8M-NEXT:    str r1, [r0, #-4]!
+; CHECK-V8M-NEXT:    bx lr
+;
+; CHECK-V8A-LABEL: pre_dec_str:
+; CHECK-V8A:       @ %bb.0:
+; CHECK-V8A-NEXT:    add r1, r1, r2
+; CHECK-V8A-NEXT:    str r1, [r0, #-4]!
+; CHECK-V8A-NEXT:    bx lr
   %res = add i32 %a, %b
   %addr.1 = getelementptr i32, i32* %base, i32 -1
   store i32 %res, i32* %addr.1
   ret i32* %addr.1
 }
 
-; CHECK-LABEL: post_inc_str
-; CHECK: str{{.*}}, [r0], #4
 define i32* @post_inc_str(i32* %base, i32 %a, i32 %b) {
+; CHECK-V8M-LABEL: post_inc_str:
+; CHECK-V8M:       @ %bb.0:
+; CHECK-V8M-NEXT:    add r1, r2
+; CHECK-V8M-NEXT:    str r1, [r0], #4
+; CHECK-V8M-NEXT:    bx lr
+;
+; CHECK-V8A-LABEL: post_inc_str:
+; CHECK-V8A:       @ %bb.0:
+; CHECK-V8A-NEXT:    add r1, r1, r2
+; CHECK-V8A-NEXT:    str r1, [r0], #4
+; CHECK-V8A-NEXT:    bx lr
   %addr.1 = getelementptr i32, i32* %base, i32 1
   %res = add i32 %a, %b
   store i32 %res, i32* %base
   ret i32* %addr.1
 }
 
-; CHECK-LABEL: post_dec_str
-; CHECK: str{{.*}}, [r0], #-4
 define i32* @post_dec_str(i32* %base, i32 %a, i32 %b) {
+; CHECK-V8M-LABEL: post_dec_str:
+; CHECK-V8M:       @ %bb.0:
+; CHECK-V8M-NEXT:    add r1, r2
+; CHECK-V8M-NEXT:    str r1, [r0], #-4
+; CHECK-V8M-NEXT:    bx lr
+;
+; CHECK-V8A-LABEL: post_dec_str:
+; CHECK-V8A:       @ %bb.0:
+; CHECK-V8A-NEXT:    add r1, r1, r2
+; CHECK-V8A-NEXT:    str r1, [r0], #-4
+; CHECK-V8A-NEXT:    bx lr
   %addr.1 = getelementptr i32, i32* %base, i32 -1
   %res = add i32 %a, %b
   store i32 %res, i32* %base
@@ -82,9 +163,22 @@ define i32* @post_dec_str(i32* %base, i32 %a, i32 %b) {
 }
 
 ; TODO: Generate ldrd
-; CHECK-LABEL: pre_inc_ldrd
-; CHECK: ldr{{.*}}, #4]!
 define i32* @pre_inc_ldrd(i32* %base) {
+; CHECK-V8M-LABEL: pre_inc_ldrd:
+; CHECK-V8M:       @ %bb.0:
+; CHECK-V8M-NEXT:    ldr r1, [r0, #4]!
+; CHECK-V8M-NEXT:    ldr r2, [r0, #4]
+; CHECK-V8M-NEXT:    add r1, r2
+; CHECK-V8M-NEXT:    str r1, [r0, #8]
+; CHECK-V8M-NEXT:    bx lr
+;
+; CHECK-V8A-LABEL: pre_inc_ldrd:
+; CHECK-V8A:       @ %bb.0:
+; CHECK-V8A-NEXT:    ldr r1, [r0, #4]!
+; CHECK-V8A-NEXT:    ldr r2, [r0, #4]
+; CHECK-V8A-NEXT:    add r1, r1, r2
+; CHECK-V8A-NEXT:    str r1, [r0, #8]
+; CHECK-V8A-NEXT:    bx lr
   %addr = getelementptr i32, i32* %base, i32 1
   %addr.1 = getelementptr i32, i32* %base, i32 2
   %addr.2 = getelementptr i32, i32* %base, i32 3
@@ -96,9 +190,22 @@ define i32* @pre_inc_ldrd(i32* %base) {
 }
 
 ; TODO: Generate ldrd
-; CHECK-LABEL: pre_dec_ldrd
-; CHECK: ldr{{.*}}, #-4]!
 define i32* @pre_dec_ldrd(i32* %base) {
+; CHECK-V8M-LABEL: pre_dec_ldrd:
+; CHECK-V8M:       @ %bb.0:
+; CHECK-V8M-NEXT:    ldr r1, [r0, #-4]!
+; CHECK-V8M-NEXT:    ldr r2, [r0, #-4]
+; CHECK-V8M-NEXT:    add r1, r2
+; CHECK-V8M-NEXT:    str r1, [r0, #-8]
+; CHECK-V8M-NEXT:    bx lr
+;
+; CHECK-V8A-LABEL: pre_dec_ldrd:
+; CHECK-V8A:       @ %bb.0:
+; CHECK-V8A-NEXT:    ldr r1, [r0, #-4]!
+; CHECK-V8A-NEXT:    ldr r2, [r0, #-4]
+; CHECK-V8A-NEXT:    add r1, r1, r2
+; CHECK-V8A-NEXT:    str r1, [r0, #-8]
+; CHECK-V8A-NEXT:    bx lr
   %addr = getelementptr i32, i32* %base, i32 -1
   %addr.1 = getelementptr i32, i32* %base, i32 -2
   %addr.2 = getelementptr i32, i32* %base, i32 -3
@@ -110,11 +217,22 @@ define i32* @pre_dec_ldrd(i32* %base) {
 }
 
 ; TODO: Generate post inc
-; CHECK-LABEL: post_inc_ldrd
-; CHECK-V8M: ldrd{{.*}}, [r0]
-; CHECK-V8: ldm
-; CHECK: add{{.*}}, #8
 define i32* @post_inc_ldrd(i32* %base, i32* %addr.3) {
+; CHECK-V8M-LABEL: post_inc_ldrd:
+; CHECK-V8M:       @ %bb.0:
+; CHECK-V8M-NEXT:    ldrd r2, r3, [r0]
+; CHECK-V8M-NEXT:    adds r0, #8
+; CHECK-V8M-NEXT:    add r2, r3
+; CHECK-V8M-NEXT:    str r2, [r1]
+; CHECK-V8M-NEXT:    bx lr
+;
+; CHECK-V8A-LABEL: post_inc_ldrd:
+; CHECK-V8A:       @ %bb.0:
+; CHECK-V8A-NEXT:    ldm r0, {r2, r3}
+; CHECK-V8A-NEXT:    add r0, r0, #8
+; CHECK-V8A-NEXT:    add r2, r2, r3
+; CHECK-V8A-NEXT:    str r2, [r1]
+; CHECK-V8A-NEXT:    bx lr
   %addr = getelementptr i32, i32* %base, i32 0
   %ld = load i32, i32* %addr
   %addr.1 = getelementptr i32, i32* %base, i32 1
@@ -125,9 +243,20 @@ define i32* @post_inc_ldrd(i32* %base, i32* %addr.3) {
   ret i32* %addr.2
 }
 
-; CHECK-LABEL: pre_inc_str_multi
-; CHECK: str{{.*}}, #8]!
 define i32* @pre_inc_str_multi(i32* %base) {
+; CHECK-V8M-LABEL: pre_inc_str_multi:
+; CHECK-V8M:       @ %bb.0:
+; CHECK-V8M-NEXT:    ldrd r1, r2, [r0]
+; CHECK-V8M-NEXT:    add r1, r2
+; CHECK-V8M-NEXT:    str r1, [r0, #8]!
+; CHECK-V8M-NEXT:    bx lr
+;
+; CHECK-V8A-LABEL: pre_inc_str_multi:
+; CHECK-V8A:       @ %bb.0:
+; CHECK-V8A-NEXT:    ldm r0, {r1, r2}
+; CHECK-V8A-NEXT:    add r1, r1, r2
+; CHECK-V8A-NEXT:    str r1, [r0, #8]!
+; CHECK-V8A-NEXT:    bx lr
   %addr = getelementptr i32, i32* %base, i32 0
   %addr.1 = getelementptr i32, i32* %base, i32 1
   %ld = load i32, i32* %addr
@@ -138,9 +267,20 @@ define i32* @pre_inc_str_multi(i32* %base) {
   ret i32* %addr.2
 }
 
-; CHECK-LABEL: pre_dec_str_multi
-; CHECK: str{{.*}}, #-4]!
 define i32* @pre_dec_str_multi(i32* %base) {
+; CHECK-V8M-LABEL: pre_dec_str_multi:
+; CHECK-V8M:       @ %bb.0:
+; CHECK-V8M-NEXT:    ldrd r1, r2, [r0]
+; CHECK-V8M-NEXT:    add r1, r2
+; CHECK-V8M-NEXT:    str r1, [r0, #-4]!
+; CHECK-V8M-NEXT:    bx lr
+;
+; CHECK-V8A-LABEL: pre_dec_str_multi:
+; CHECK-V8A:       @ %bb.0:
+; CHECK-V8A-NEXT:    ldm r0, {r1, r2}
+; CHECK-V8A-NEXT:    add r1, r1, r2
+; CHECK-V8A-NEXT:    str r1, [r0, #-4]!
+; CHECK-V8A-NEXT:    bx lr
   %addr = getelementptr i32, i32* %base, i32 0
   %addr.1 = getelementptr i32, i32* %base, i32 1
   %ld = load i32, i32* %addr
@@ -151,9 +291,18 @@ define i32* @pre_dec_str_multi(i32* %base) {
   ret i32* %addr.2
 }
 
-; CHECK-LABEL: illegal_pre_inc_store_1
-; CHECK-NOT: str{{.*}} ]!
 define i32* @illegal_pre_inc_store_1(i32* %base) {
+; CHECK-V8M-LABEL: illegal_pre_inc_store_1:
+; CHECK-V8M:       @ %bb.0: @ %entry
+; CHECK-V8M-NEXT:    str r0, [r0, #8]
+; CHECK-V8M-NEXT:    adds r0, #8
+; CHECK-V8M-NEXT:    bx lr
+;
+; CHECK-V8A-LABEL: illegal_pre_inc_store_1:
+; CHECK-V8A:       @ %bb.0: @ %entry
+; CHECK-V8A-NEXT:    str r0, [r0, #8]
+; CHECK-V8A-NEXT:    add r0, r0, #8
+; CHECK-V8A-NEXT:    bx lr
 entry:
   %ptr.to.use = getelementptr i32, i32* %base, i32 2
   %ptr.to.store = ptrtoint i32* %base to i32
@@ -161,12 +310,20 @@ entry:
   ret i32* %ptr.to.use
 }
 
-; TODO: The mov should be unecessary
-; CHECK-LABEL: legal_pre_inc_store_needs_copy_1
-; CHECK: add{{.*}}, #8
-; CHECK-NOT: str{{.*}}]!
-; CHECK: mov
 define i32* @legal_pre_inc_store_needs_copy_1(i32* %base) {
+; CHECK-V8M-LABEL: legal_pre_inc_store_needs_copy_1:
+; CHECK-V8M:       @ %bb.0: @ %entry
+; CHECK-V8M-NEXT:    add.w r1, r0, #8
+; CHECK-V8M-NEXT:    str r1, [r0, #8]
+; CHECK-V8M-NEXT:    mov r0, r1
+; CHECK-V8M-NEXT:    bx lr
+;
+; CHECK-V8A-LABEL: legal_pre_inc_store_needs_copy_1:
+; CHECK-V8A:       @ %bb.0: @ %entry
+; CHECK-V8A-NEXT:    add r1, r0, #8
+; CHECK-V8A-NEXT:    str r1, [r0, #8]
+; CHECK-V8A-NEXT:    mov r0, r1
+; CHECK-V8A-NEXT:    bx lr
 entry:
   %ptr.to.use = getelementptr i32, i32* %base, i32 2
   %ptr.to.store = ptrtoint i32* %ptr.to.use to i32
@@ -174,10 +331,18 @@ entry:
   ret i32* %ptr.to.use
 }
 
-; CHECK-LABEL: legal_pre_inc_store_needs_copy_2
-; CHECK-NOT: mov
-; CHECK-NOT: str{{.*}}]!
 define i32* @legal_pre_inc_store_needs_copy_2(i32 %base) {
+; CHECK-V8M-LABEL: legal_pre_inc_store_needs_copy_2:
+; CHECK-V8M:       @ %bb.0: @ %entry
+; CHECK-V8M-NEXT:    str r0, [r0, #8]
+; CHECK-V8M-NEXT:    adds r0, #8
+; CHECK-V8M-NEXT:    bx lr
+;
+; CHECK-V8A-LABEL: legal_pre_inc_store_needs_copy_2:
+; CHECK-V8A:       @ %bb.0: @ %entry
+; CHECK-V8A-NEXT:    str r0, [r0, #8]
+; CHECK-V8A-NEXT:    add r0, r0, #8
+; CHECK-V8A-NEXT:    bx lr
 entry:
   %ptr = inttoptr i32 %base to i32*
   %ptr.to.use = getelementptr i32, i32* %ptr, i32 2


        


More information about the llvm-commits mailing list