[llvm] 6f18805 - [ARM] ha-alignstack-call.ll - regenerate test checks (#159988)

via llvm-commits llvm-commits at lists.llvm.org
Sun Sep 21 09:16:12 PDT 2025


Author: Simon Pilgrim
Date: 2025-09-21T16:16:08Z
New Revision: 6f188056b3acf6a98d321f514e3d802e483a1990

URL: https://github.com/llvm/llvm-project/commit/6f188056b3acf6a98d321f514e3d802e483a1990
DIFF: https://github.com/llvm/llvm-project/commit/6f188056b3acf6a98d321f514e3d802e483a1990.diff

LOG: [ARM] ha-alignstack-call.ll - regenerate test checks (#159988)

Added: 
    

Modified: 
    llvm/test/CodeGen/ARM/ha-alignstack-call.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/ARM/ha-alignstack-call.ll b/llvm/test/CodeGen/ARM/ha-alignstack-call.ll
index 7e2a911c89281..6eab7506010f6 100644
--- a/llvm/test/CodeGen/ARM/ha-alignstack-call.ll
+++ b/llvm/test/CodeGen/ARM/ha-alignstack-call.ll
@@ -1,4 +1,5 @@
-; RUN: llc --mtriple=armv7-eabihf %s -o - | FileCheck %s --enable-var-scope 
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
+; RUN: llc --mtriple=armv7-eabihf %s -o - | FileCheck %s --enable-var-scope
 
 %struct.S0 = type { [4 x float] }
 %struct.S1 = type { [2 x float] }
@@ -10,284 +11,742 @@
 ; pass in regs
 declare dso_local float @f0_0(double, double, double, double, double, double, %struct.S0) local_unnamed_addr #0
 define dso_local float @f0_0_call() local_unnamed_addr #0 {
+; CHECK-LABEL: f0_0_call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    vldr s13, .LCPI0_5
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01
+; CHECK-NEXT:    vmov.f32 s14, s13
+; CHECK-NEXT:    vldr d1, .LCPI0_0
+; CHECK-NEXT:    vmov.f32 s15, s13
+; CHECK-NEXT:    vldr d2, .LCPI0_1
+; CHECK-NEXT:    vldr d3, .LCPI0_2
+; CHECK-NEXT:    vldr d4, .LCPI0_3
+; CHECK-NEXT:    vldr s12, .LCPI0_4
+; CHECK-NEXT:    b f0_0
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI0_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI0_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI0_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI0_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
+; CHECK-NEXT:  .LCPI0_4:
+; CHECK-NEXT:    .long 0x3f19999a @ float 0.600000024
+; CHECK-NEXT:  .LCPI0_5:
+; CHECK-NEXT:    .long 0x00000000 @ float 0
 entry:
   %call = tail call float @f0_0(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, %struct.S0 { [4 x float] [float 0x3FE3333340000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00] }) #0
   ret float %call
 }
-; CHECK-LABEL: f0_0_call:
-; CHECK:       vldr s12, .L[[L:.*]]
-; CHECK:       b    f0_0
-; CHECK:      .L[[L]]:
-; CHECK-NEXT: .long 0x3f19999a
 
 ; pass in memory, no split
 declare dso_local float @f0_1(double, double, double, double, double, double, float, %struct.S0) local_unnamed_addr #0
 define dso_local float @f0_1_call() local_unnamed_addr #0 {
+; CHECK-LABEL: f0_1_call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    .save {r11, lr}
+; CHECK-NEXT:    push {r11, lr}
+; CHECK-NEXT:    .pad #16
+; CHECK-NEXT:    sub sp, sp, #16
+; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01
+; CHECK-NEXT:    movw r1, #13107
+; CHECK-NEXT:    mov r0, #0
+; CHECK-NEXT:    movt r1, #16179
+; CHECK-NEXT:    str r1, [sp]
+; CHECK-NEXT:    str r0, [sp, #4]
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vldr d1, .LCPI1_0
+; CHECK-NEXT:    vldr d2, .LCPI1_1
+; CHECK-NEXT:    vldr d3, .LCPI1_2
+; CHECK-NEXT:    vldr d4, .LCPI1_3
+; CHECK-NEXT:    vldr s12, .LCPI1_4
+; CHECK-NEXT:    str r0, [sp, #8]
+; CHECK-NEXT:    str r0, [sp, #12]
+; CHECK-NEXT:    bl f0_1
+; CHECK-NEXT:    add sp, sp, #16
+; CHECK-NEXT:    pop {r11, pc}
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI1_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI1_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI1_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI1_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
+; CHECK-NEXT:  .LCPI1_4:
+; CHECK-NEXT:    .long 0x3f19999a @ float 0.600000024
 entry:
   %call = tail call float @f0_1(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, float 0x3FE3333340000000, %struct.S0 { [4 x float] [float 0x3FE6666660000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00] }) #0
   ret float %call
 }
-; CHECK-LABEL: f0_1_call:
-; CHECK:       movw r1, #13107
-; CHECK:       mov  r0, #0
-; CHECK:       movt r1, #16179
-; CHECK-DAG:   str  r1, [sp]
-; CHECK-DAG:   str  r0, [sp, #4]
-; CHECK-DAG:   str  r0, [sp, #8]
-; CHECK-DAG:   str  r0, [sp, #12]
-; CHECK:       bl   f0_1
 
 ; pass memory, alignment 4
 declare dso_local float @f0_2(double, double, double, double, double, double, double, double, float, %struct.S0) local_unnamed_addr #0
 define dso_local float @f0_2_call() local_unnamed_addr #0 {
+; CHECK-LABEL: f0_2_call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    .save {r11, lr}
+; CHECK-NEXT:    push {r11, lr}
+; CHECK-NEXT:    .pad #24
+; CHECK-NEXT:    sub sp, sp, #24
+; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01
+; CHECK-NEXT:    movw r1, #26214
+; CHECK-NEXT:    movw r2, #52429
+; CHECK-NEXT:    mov r0, #0
+; CHECK-NEXT:    movt r1, #16230
+; CHECK-NEXT:    movt r2, #16204
+; CHECK-NEXT:    str r2, [sp]
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vldr d1, .LCPI2_0
+; CHECK-NEXT:    vldr d2, .LCPI2_1
+; CHECK-NEXT:    vldr d3, .LCPI2_2
+; CHECK-NEXT:    vldr d4, .LCPI2_3
+; CHECK-NEXT:    vldr d6, .LCPI2_4
+; CHECK-NEXT:    vldr d7, .LCPI2_5
+; CHECK-NEXT:    str r1, [sp, #4]
+; CHECK-NEXT:    str r0, [sp, #8]
+; CHECK-NEXT:    str r0, [sp, #12]
+; CHECK-NEXT:    str r0, [sp, #16]
+; CHECK-NEXT:    bl f0_2
+; CHECK-NEXT:    add sp, sp, #24
+; CHECK-NEXT:    pop {r11, pc}
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI2_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI2_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI2_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI2_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
+; CHECK-NEXT:  .LCPI2_4:
+; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998
+; CHECK-NEXT:    .long 1071854387
+; CHECK-NEXT:  .LCPI2_5:
+; CHECK-NEXT:    .long 1717986918 @ double 0.69999999999999996
+; CHECK-NEXT:    .long 1072064102
 entry:
   %call = tail call float @f0_2(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, double 6.000000e-01, double 0x3FE6666666666666, float 0x3FE99999A0000000, %struct.S0 { [4 x float] [float 0x3FECCCCCC0000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00] }) #0
   ret float %call
 }
-; CHECK-LABEL: f0_2_call:
-; CHECK:       movw r1, #26214
-; CHECK:       movw r2, #52429
-; CHECK:       mov  r0, #0
-; CHECK:       movt r1, #16230
-; CHECK:       movt r2, #16204
-; CHECK-DAG:   str  r2, [sp]
-; CHECK-DAG:   str  r1, [sp, #4]
-; CHECK-DAG:   str  r0, [sp, #8]
-; CHECK-DAG:   str  r0, [sp, #12]
-; CHECK-DAG:   str  r0, [sp, #16]
-; CHECK:       bl       f0_2
 
 ; pass in regs
 declare dso_local float @f1_0(double, double, double, double, double, double, double, %struct.S1 alignstack(8)) local_unnamed_addr #0
 define dso_local float @f1_0_call() local_unnamed_addr #0 {
+; CHECK-LABEL: f1_0_call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vldr d1, .LCPI3_0
+; CHECK-NEXT:    vldr d2, .LCPI3_1
+; CHECK-NEXT:    vldr d3, .LCPI3_2
+; CHECK-NEXT:    vldr d4, .LCPI3_3
+; CHECK-NEXT:    vldr d6, .LCPI3_4
+; CHECK-NEXT:    vldr s14, .LCPI3_5
+; CHECK-NEXT:    vldr s15, .LCPI3_6
+; CHECK-NEXT:    b f1_0
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI3_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI3_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI3_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI3_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
+; CHECK-NEXT:  .LCPI3_4:
+; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998
+; CHECK-NEXT:    .long 1071854387
+; CHECK-NEXT:  .LCPI3_5:
+; CHECK-NEXT:    .long 0x3f333333 @ float 0.699999988
+; CHECK-NEXT:  .LCPI3_6:
+; CHECK-NEXT:    .long 0x00000000 @ float 0
 entry:
   %call = tail call float @f1_0(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, double 6.000000e-01, %struct.S1 alignstack(8) { [2 x float] [float 0x3FE6666660000000, float 0.000000e+00] }) #0
   ret float %call
 }
-; CHECK-LABEL: f1_0_call:
-; CHECK-DAG:   vldr s14, .L[[L0:.*]]
-; CHECK-DAG:   vldr s15, .L[[L1:.*]]
-; CHECK:       b    f1_0
-; CHECK:       .L[[L0]]:
-; CHECK-NEXT:  .long 0x3f333333
-; CHECK:       .L[[L1:.*]]:
-; CHECK-NEXT:  .long 0x00000000
 
 ; pass in memory, no split
 declare dso_local float @f1_1(double, double, double, double, double, double, double, float, %struct.S1 alignstack(8)) local_unnamed_addr #0
 define dso_local float @f1_1_call() local_unnamed_addr #0 {
+; CHECK-LABEL: f1_1_call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    .save {r11, lr}
+; CHECK-NEXT:    push {r11, lr}
+; CHECK-NEXT:    .pad #8
+; CHECK-NEXT:    sub sp, sp, #8
+; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01
+; CHECK-NEXT:    movw r0, #52429
+; CHECK-NEXT:    mov r1, #0
+; CHECK-NEXT:    movt r0, #16204
+; CHECK-NEXT:    strd r0, r1, [sp]
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vldr d1, .LCPI4_0
+; CHECK-NEXT:    vldr d2, .LCPI4_1
+; CHECK-NEXT:    vldr d3, .LCPI4_2
+; CHECK-NEXT:    vldr d4, .LCPI4_3
+; CHECK-NEXT:    vldr d6, .LCPI4_4
+; CHECK-NEXT:    vldr s14, .LCPI4_5
+; CHECK-NEXT:    bl f1_1
+; CHECK-NEXT:    add sp, sp, #8
+; CHECK-NEXT:    pop {r11, pc}
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI4_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI4_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI4_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI4_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
+; CHECK-NEXT:  .LCPI4_4:
+; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998
+; CHECK-NEXT:    .long 1071854387
+; CHECK-NEXT:  .LCPI4_5:
+; CHECK-NEXT:    .long 0x3f333333 @ float 0.699999988
 entry:
   %call = tail call float @f1_1(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, double 6.000000e-01, float 0x3FE6666660000000, %struct.S1 alignstack(8) { [2 x float] [float 0x3FE99999A0000000, float 0.000000e+00] }) #0
   ret float %call
 }
-; CHECK-LABEL: f1_1_call:
-; CHECK:       movw r0, #52429
-; CHECK:       mov  r1, #0
-; CHECK:       movt r0, #16204
-; CHECK-DAG:   strd r0, r1, [sp]
-; CHECK:       bl   f1_1
 
 ; pass in memory, alignment 8
 declare dso_local float @f1_2(double, double, double, double, double, double, double, double, float, %struct.S1 alignstack(8)) local_unnamed_addr #0
 define dso_local float @f1_2_call() local_unnamed_addr #0 {
+; CHECK-LABEL: f1_2_call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    .save {r11, lr}
+; CHECK-NEXT:    push {r11, lr}
+; CHECK-NEXT:    .pad #16
+; CHECK-NEXT:    sub sp, sp, #16
+; CHECK-NEXT:    movw r0, #26214
+; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01
+; CHECK-NEXT:    mov r1, #0
+; CHECK-NEXT:    movt r0, #16230
+; CHECK-NEXT:    strd r0, r1, [sp, #8]
+; CHECK-NEXT:    movw r0, #52429
+; CHECK-NEXT:    movt r0, #16204
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vldr d1, .LCPI5_0
+; CHECK-NEXT:    vldr d2, .LCPI5_1
+; CHECK-NEXT:    vldr d3, .LCPI5_2
+; CHECK-NEXT:    vldr d4, .LCPI5_3
+; CHECK-NEXT:    vldr d6, .LCPI5_4
+; CHECK-NEXT:    vldr d7, .LCPI5_5
+; CHECK-NEXT:    str r0, [sp]
+; CHECK-NEXT:    bl f1_2
+; CHECK-NEXT:    add sp, sp, #16
+; CHECK-NEXT:    pop {r11, pc}
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI5_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI5_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI5_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI5_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
+; CHECK-NEXT:  .LCPI5_4:
+; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998
+; CHECK-NEXT:    .long 1071854387
+; CHECK-NEXT:  .LCPI5_5:
+; CHECK-NEXT:    .long 1717986918 @ double 0.69999999999999996
+; CHECK-NEXT:    .long 1072064102
 entry:
   %call = tail call float @f1_2(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, double 6.000000e-01, double 0x3FE6666666666666, float 0x3FE99999A0000000, %struct.S1 alignstack(8) { [2 x float] [float 0x3FECCCCCC0000000, float 0.000000e+00] }) #0
   ret float %call
 }
-; CHECK-LABEL: f1_2_call:
-; CHECK-DAG:   movw  r0, #26214
-; CHECK-DAG:   mov   r1, #0
-; CHECK:       movt  r0, #16230
-; CHECK:       strd  r0, r1, [sp, #8]
-; CHECK:       movw  r0, #52429
-; CHECK:       movt  r0, #16204
-; CHECK-DAG:   str   r0, [sp]
-; CHECK:       bl    f1_2
-
 
 ; pass in registers
 declare dso_local float @f2_0(double, double, double, double, double, double, %struct.S2 alignstack(8)) local_unnamed_addr #0
 define dso_local float @f2_0_call() local_unnamed_addr #0 {
+; CHECK-LABEL: f2_0_call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    vldr s13, .LCPI6_5
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01
+; CHECK-NEXT:    vmov.f32 s14, s13
+; CHECK-NEXT:    vldr d1, .LCPI6_0
+; CHECK-NEXT:    vmov.f32 s15, s13
+; CHECK-NEXT:    vldr d2, .LCPI6_1
+; CHECK-NEXT:    vldr d3, .LCPI6_2
+; CHECK-NEXT:    vldr d4, .LCPI6_3
+; CHECK-NEXT:    vldr s12, .LCPI6_4
+; CHECK-NEXT:    b f2_0
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI6_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI6_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI6_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI6_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
+; CHECK-NEXT:  .LCPI6_4:
+; CHECK-NEXT:    .long 0x3f19999a @ float 0.600000024
+; CHECK-NEXT:  .LCPI6_5:
+; CHECK-NEXT:    .long 0x00000000 @ float 0
 entry:
   %call = tail call float @f2_0(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, %struct.S2 alignstack(8) { [4 x float] [float 0x3FE3333340000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00] }) #0
   ret float %call
 }
-; CHECK-LABEL: f2_0_call:
-; CHECK-DAG:   vldr     s12, .L[[L0:.*]]
-; CHECK-DAG:   vldr     s13, .L[[L1:.*]]
-; CHECK-DAG:   vmov.f32 s14, s13
-; CHECK-DAG:   vmov.f32 s15, s13
-; CHECK:       b        f2_0
-; CHECK:       .L[[L0]]:
-; CHECK-NEXT:  .long 0x3f19999a
-; CHECK:       .L[[L1]]:
-; CHECK-NEXT:  .long 0x00000000
 
 ; pass in memory, no split
 declare dso_local float @f2_1(double, double, double, double, double, double, float, %struct.S2 alignstack(8)) local_unnamed_addr #0
 define dso_local float @f2_1_call() local_unnamed_addr #0 {
+; CHECK-LABEL: f2_1_call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    .save {r11, lr}
+; CHECK-NEXT:    push {r11, lr}
+; CHECK-NEXT:    .pad #16
+; CHECK-NEXT:    sub sp, sp, #16
+; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01
+; CHECK-NEXT:    movw r1, #13107
+; CHECK-NEXT:    mov r0, #0
+; CHECK-NEXT:    movt r1, #16179
+; CHECK-NEXT:    str r1, [sp]
+; CHECK-NEXT:    str r0, [sp, #4]
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vldr d1, .LCPI7_0
+; CHECK-NEXT:    vldr d2, .LCPI7_1
+; CHECK-NEXT:    vldr d3, .LCPI7_2
+; CHECK-NEXT:    vldr d4, .LCPI7_3
+; CHECK-NEXT:    vldr s12, .LCPI7_4
+; CHECK-NEXT:    str r0, [sp, #8]
+; CHECK-NEXT:    str r0, [sp, #12]
+; CHECK-NEXT:    bl f2_1
+; CHECK-NEXT:    add sp, sp, #16
+; CHECK-NEXT:    pop {r11, pc}
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI7_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI7_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI7_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI7_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
+; CHECK-NEXT:  .LCPI7_4:
+; CHECK-NEXT:    .long 0x3f19999a @ float 0.600000024
 entry:
   %call = tail call float @f2_1(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, float 0x3FE3333340000000, %struct.S2 alignstack(8) { [4 x float] [float 0x3FE6666660000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00] }) #0
   ret float %call
 }
-; CHECK-LABEL: f2_1_call:
-; CHECK:       movw  r1, #13107
-; CHECK:       mov   r0, #0
-; CHECK:       movt  r1, #16179
-; CHECK:       str   r1, [sp]
-; CHECK:       str   r0, [sp, #4]
-; CHECK:       vldr  s12, .L[[L:.*]]
-; CHECK:       str   r0, [sp, #8]
-; CHECK:       str   r0, [sp, #12]
-; CHECK:       bl    f2_1
-; CHECK:       .L[[L]]:
-; CHECK-NEXT:  .long    0x3f19999a
 
 ; pass in memory, alignment 8
 declare dso_local float @f2_2(double, double, double, double, double, double, double, double, float, %struct.S2 alignstack(8)) local_unnamed_addr #0
 define dso_local float @f2_2_call() local_unnamed_addr #0 {
+; CHECK-LABEL: f2_2_call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    .save {r11, lr}
+; CHECK-NEXT:    push {r11, lr}
+; CHECK-NEXT:    .pad #24
+; CHECK-NEXT:    sub sp, sp, #24
+; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01
+; CHECK-NEXT:    mov r0, #0
+; CHECK-NEXT:    movw r1, #26214
+; CHECK-NEXT:    str r0, [sp, #12]
+; CHECK-NEXT:    str r0, [sp, #16]
+; CHECK-NEXT:    movt r1, #16230
+; CHECK-NEXT:    str r0, [sp, #20]
+; CHECK-NEXT:    movw r0, #52429
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vldr d1, .LCPI8_0
+; CHECK-NEXT:    vldr d2, .LCPI8_1
+; CHECK-NEXT:    movt r0, #16204
+; CHECK-NEXT:    vldr d3, .LCPI8_2
+; CHECK-NEXT:    vldr d4, .LCPI8_3
+; CHECK-NEXT:    vldr d6, .LCPI8_4
+; CHECK-NEXT:    vldr d7, .LCPI8_5
+; CHECK-NEXT:    str r1, [sp, #8]
+; CHECK-NEXT:    str r0, [sp]
+; CHECK-NEXT:    bl f2_2
+; CHECK-NEXT:    add sp, sp, #24
+; CHECK-NEXT:    pop {r11, pc}
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI8_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI8_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI8_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI8_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
+; CHECK-NEXT:  .LCPI8_4:
+; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998
+; CHECK-NEXT:    .long 1071854387
+; CHECK-NEXT:  .LCPI8_5:
+; CHECK-NEXT:    .long 1717986918 @ double 0.69999999999999996
+; CHECK-NEXT:    .long 1072064102
 entry:
   %call = tail call float @f2_2(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, double 6.000000e-01, double 0x3FE6666666666666, float 0x3FE99999A0000000, %struct.S2 alignstack(8) { [4 x float] [float 0x3FECCCCCC0000000, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00] }) #0
   ret float %call
 }
-; CHECK-LABEL: f2_2_call:
-; CHECK:       mov  r0, #0
-; CHECK:       movw r1, #26214
-; CHECK:       str  r0, [sp, #12]
-; CHECK:       str  r0, [sp, #16]
-; CHECK:       movt r1, #16230
-; CHECK:       str  r0, [sp, #20]
-; CHECK:       movw r0, #52429
-; CHECK:       movt r0, #16204
-; CHECK:       str  r1, [sp, #8]
-; CHECK:       str  r0, [sp]
-; CHECK:       bl   f2_2
 
 ; pass in registers
 declare dso_local double @g0_0(double, double, double, double, double, double, %struct.D0) local_unnamed_addr #0
 define dso_local double @g0_0_call() local_unnamed_addr #0 {
+; CHECK-LABEL: g0_0_call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vldr d1, .LCPI9_0
+; CHECK-NEXT:    vmov.i32 d7, #0x0
+; CHECK-NEXT:    vldr d2, .LCPI9_1
+; CHECK-NEXT:    vldr d3, .LCPI9_2
+; CHECK-NEXT:    vldr d4, .LCPI9_3
+; CHECK-NEXT:    vldr d6, .LCPI9_4
+; CHECK-NEXT:    b g0_0
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI9_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI9_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI9_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI9_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
+; CHECK-NEXT:  .LCPI9_4:
+; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998
+; CHECK-NEXT:    .long 1071854387
 entry:
   %call = tail call double @g0_0(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, %struct.D0 { [2 x double] [double 6.000000e-01, double 0.000000e+00] }) #0
   ret double %call
 }
-; CHECK-LABEL: g0_0_call:
-; CHECK:       vldr    d6, .L[[L:.*]]
-; CHECK:       b    g0_0
-; CHECK:       .L[[L]]
-; CHECK-NEXT:  long 858993459
-; CHECK-NEXT:  long 1071854387
 
 ; pass in memory, no split
 declare dso_local double @g0_1(double, double, double, double, double, double, double, %struct.D0) local_unnamed_addr #0
 define dso_local double @g0_1_call() local_unnamed_addr #0 {
+; CHECK-LABEL: g0_1_call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    .save {r11, lr}
+; CHECK-NEXT:    push {r11, lr}
+; CHECK-NEXT:    .pad #16
+; CHECK-NEXT:    sub sp, sp, #16
+; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01
+; CHECK-NEXT:    movw r0, #26214
+; CHECK-NEXT:    movw r1, #26214
+; CHECK-NEXT:    mov r2, #0
+; CHECK-NEXT:    movt r0, #16358
+; CHECK-NEXT:    movt r1, #26214
+; CHECK-NEXT:    str r1, [sp]
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vldr d1, .LCPI10_0
+; CHECK-NEXT:    vldr d2, .LCPI10_1
+; CHECK-NEXT:    vldr d3, .LCPI10_2
+; CHECK-NEXT:    vldr d4, .LCPI10_3
+; CHECK-NEXT:    vldr d6, .LCPI10_4
+; CHECK-NEXT:    stmib sp, {r0, r2}
+; CHECK-NEXT:    str r2, [sp, #12]
+; CHECK-NEXT:    bl g0_1
+; CHECK-NEXT:    add sp, sp, #16
+; CHECK-NEXT:    pop {r11, pc}
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI10_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI10_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI10_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI10_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
+; CHECK-NEXT:  .LCPI10_4:
+; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998
+; CHECK-NEXT:    .long 1071854387
 entry:
   %call = tail call double @g0_1(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, double 6.000000e-01, %struct.D0 { [2 x double] [double 0x3FE6666666666666, double 0.000000e+00] }) #0
   ret double %call
 }
-; CHECK-LABEL: g0_1_call:
-; CHECK:       movw  r0, #26214
-; CHECK:       movw  r1, #26214
-; CHECK:       mov   r2, #0
-; CHECK:       movt  r0, #16358
-; CHECK:       movt  r1, #26214
-; CHECK:       str   r1, [sp]
-; CHECK:       stmib sp, {r0, r2}
-; CHECK:       str   r2, [sp, #12]
-; CHECK:       bl    g0_1
 
 ; pass in memory, alignment 8
 declare dso_local double @g0_2(double, double, double, double, double, double, double, double, float, %struct.D0) local_unnamed_addr #0
 define dso_local double @g0_2_call() local_unnamed_addr #0 {
+; CHECK-LABEL: g0_2_call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    .save {r11, lr}
+; CHECK-NEXT:    push {r11, lr}
+; CHECK-NEXT:    .pad #24
+; CHECK-NEXT:    sub sp, sp, #24
+; CHECK-NEXT:    movw r0, #52428
+; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01
+; CHECK-NEXT:    movt r0, #16364
+; CHECK-NEXT:    movw r1, #52429
+; CHECK-NEXT:    str r0, [sp, #12]
+; CHECK-NEXT:    movw r0, #52429
+; CHECK-NEXT:    mov r2, #0
+; CHECK-NEXT:    movt r1, #52428
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vldr d1, .LCPI11_0
+; CHECK-NEXT:    vldr d2, .LCPI11_1
+; CHECK-NEXT:    movt r0, #16204
+; CHECK-NEXT:    vldr d3, .LCPI11_2
+; CHECK-NEXT:    vldr d4, .LCPI11_3
+; CHECK-NEXT:    vldr d6, .LCPI11_4
+; CHECK-NEXT:    vldr d7, .LCPI11_5
+; CHECK-NEXT:    str r1, [sp, #8]
+; CHECK-NEXT:    str r2, [sp, #16]
+; CHECK-NEXT:    str r2, [sp, #20]
+; CHECK-NEXT:    str r0, [sp]
+; CHECK-NEXT:    bl g0_2
+; CHECK-NEXT:    add sp, sp, #24
+; CHECK-NEXT:    pop {r11, pc}
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI11_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI11_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI11_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI11_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
+; CHECK-NEXT:  .LCPI11_4:
+; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998
+; CHECK-NEXT:    .long 1071854387
+; CHECK-NEXT:  .LCPI11_5:
+; CHECK-NEXT:    .long 1717986918 @ double 0.69999999999999996
+; CHECK-NEXT:    .long 1072064102
 entry:
   %call = tail call double @g0_2(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, double 6.000000e-01, double 0x3FE6666666666666, float 0x3FE99999A0000000, %struct.D0 { [2 x double] [double 9.000000e-01, double 0.000000e+00] }) #0
   ret double %call
 }
-; CHECK-LABEL: g0_2_call:
-; CHECK:       movw r0, #52428
-; CHECK:       movt r0, #16364
-; CHECK:       movw r1, #52429
-; CHECK:       str  r0, [sp, #12]
-; CHECK:       movw r0, #52429
-; CHECK:       mov  r2, #0
-; CHECK:       movt r1, #52428
-; CHECK:       movt r0, #16204
-; CHECK:       str  r1, [sp, #8]
-; CHECK:       str  r2, [sp, #16]
-; CHECK:       str  r2, [sp, #20]
-; CHECK:       str  r0, [sp]
-; CHECK:       bl   g0_2
 
 ; pass in registers
 declare dso_local double @g1_0(double, double, double, double, double, double, %struct.D1 alignstack(8)) local_unnamed_addr #0
 define dso_local double @g1_0_call() local_unnamed_addr #0 {
+; CHECK-LABEL: g1_0_call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vldr d1, .LCPI12_0
+; CHECK-NEXT:    vmov.i32 d7, #0x0
+; CHECK-NEXT:    vldr d2, .LCPI12_1
+; CHECK-NEXT:    vldr d3, .LCPI12_2
+; CHECK-NEXT:    vldr d4, .LCPI12_3
+; CHECK-NEXT:    vldr d6, .LCPI12_4
+; CHECK-NEXT:    b g1_0
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI12_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI12_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI12_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI12_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
+; CHECK-NEXT:  .LCPI12_4:
+; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998
+; CHECK-NEXT:    .long 1071854387
 entry:
   %call = tail call double @g1_0(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, %struct.D1 alignstack(8) { [2 x double] [double 6.000000e-01, double 0.000000e+00] }) #0
   ret double %call
 }
-; CHECK-LABEL: g1_0_call:
-; CHECK-DAG:   vmov.i32 d7, #0x0
-; CHECK-DAG:   vldr     d6, .L[[L:.*]]
-; CHECK:       b        g1_0
-; CHECK:      .L[[L]]:
-; CHECK-NEXT: .long    858993459
-; CHECK-NEXT: .long    107185438
 
 ; pass in memory, no split
 declare dso_local double @g1_1(double, double, double, double, double, double, double, %struct.D1 alignstack(8)) local_unnamed_addr #0
 define dso_local double @g1_1_call() local_unnamed_addr #0 {
+; CHECK-LABEL: g1_1_call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    .save {r11, lr}
+; CHECK-NEXT:    push {r11, lr}
+; CHECK-NEXT:    .pad #16
+; CHECK-NEXT:    sub sp, sp, #16
+; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01
+; CHECK-NEXT:    movw r0, #26214
+; CHECK-NEXT:    movw r1, #26214
+; CHECK-NEXT:    mov r2, #0
+; CHECK-NEXT:    movt r0, #16358
+; CHECK-NEXT:    movt r1, #26214
+; CHECK-NEXT:    str r1, [sp]
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vldr d1, .LCPI13_0
+; CHECK-NEXT:    vldr d2, .LCPI13_1
+; CHECK-NEXT:    vldr d3, .LCPI13_2
+; CHECK-NEXT:    vldr d4, .LCPI13_3
+; CHECK-NEXT:    vldr d6, .LCPI13_4
+; CHECK-NEXT:    stmib sp, {r0, r2}
+; CHECK-NEXT:    str r2, [sp, #12]
+; CHECK-NEXT:    bl g1_1
+; CHECK-NEXT:    add sp, sp, #16
+; CHECK-NEXT:    pop {r11, pc}
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI13_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI13_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI13_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI13_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
+; CHECK-NEXT:  .LCPI13_4:
+; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998
+; CHECK-NEXT:    .long 1071854387
 entry:
   %call = tail call double @g1_1(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, double 6.000000e-01, %struct.D1 alignstack(8) { [2 x double] [double 0x3FE6666666666666, double 0.000000e+00] }) #0
   ret double %call
 }
-; CHECK-LABEL: g1_1_call:
-; CHECK:       movw  r0, #26214
-; CHECK:       movw  r1, #26214
-; CHECK:       mov   r2, #0
-; CHECK:       movt  r0, #16358
-; CHECK:       movt  r1, #26214
-; CHECK:       str   r1, [sp]
-; CHECK:       stmib sp, {r0, r2}
-; CHECK:       str   r2, [sp, #12]
-; CHECK:       bl    g1_1
 
 ; pass in memory, alignment 8
 declare dso_local double @g1_2(double, double, double, double, double, double, double, double, float, %struct.D1 alignstack(8)) local_unnamed_addr #0
 define dso_local double @g1_2_call() local_unnamed_addr #0 {
+; CHECK-LABEL: g1_2_call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    .save {r11, lr}
+; CHECK-NEXT:    push {r11, lr}
+; CHECK-NEXT:    .pad #24
+; CHECK-NEXT:    sub sp, sp, #24
+; CHECK-NEXT:    movw r0, #52428
+; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01
+; CHECK-NEXT:    movt r0, #16364
+; CHECK-NEXT:    movw r1, #52429
+; CHECK-NEXT:    str r0, [sp, #12]
+; CHECK-NEXT:    movw r0, #52429
+; CHECK-NEXT:    mov r2, #0
+; CHECK-NEXT:    movt r1, #52428
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vldr d1, .LCPI14_0
+; CHECK-NEXT:    vldr d2, .LCPI14_1
+; CHECK-NEXT:    movt r0, #16204
+; CHECK-NEXT:    vldr d3, .LCPI14_2
+; CHECK-NEXT:    vldr d4, .LCPI14_3
+; CHECK-NEXT:    vldr d6, .LCPI14_4
+; CHECK-NEXT:    vldr d7, .LCPI14_5
+; CHECK-NEXT:    str r1, [sp, #8]
+; CHECK-NEXT:    str r2, [sp, #16]
+; CHECK-NEXT:    str r2, [sp, #20]
+; CHECK-NEXT:    str r0, [sp]
+; CHECK-NEXT:    bl g1_2
+; CHECK-NEXT:    add sp, sp, #24
+; CHECK-NEXT:    pop {r11, pc}
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI14_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI14_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI14_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI14_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
+; CHECK-NEXT:  .LCPI14_4:
+; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998
+; CHECK-NEXT:    .long 1071854387
+; CHECK-NEXT:  .LCPI14_5:
+; CHECK-NEXT:    .long 1717986918 @ double 0.69999999999999996
+; CHECK-NEXT:    .long 1072064102
 entry:
   %call = tail call double @g1_2(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, double 6.000000e-01, double 0x3FE6666666666666, float 0x3FE99999A0000000, %struct.D1 alignstack(8) { [2 x double] [double 9.000000e-01, double 0.000000e+00] }) #0
   ret double %call
 }
-; CHECK-LABEL: g1_2_call:
-; CHECK:       movw r0, #52428
-; CHECK:       movt r0, #16364
-; CHECK:       movw r1, #52429
-; CHECK:       str  r0, [sp, #12]
-; CHECK:       movw r0, #52429
-; CHECK:       mov  r2, #0
-; CHECK:       movt r1, #52428
-; CHECK:       movt r0, #16204
-; CHECK:       str  r1, [sp, #8]
-; CHECK:       str  r2, [sp, #16]
-; CHECK:       str  r2, [sp, #20]
-; CHECK:       str  r0, [sp]
-; CHECK:       bl   g1_2
 
 ; pass in registers
 declare dso_local double @g2_0(double, double, double, double, %struct.D2 alignstack(8)) local_unnamed_addr #0
 define dso_local double @g2_0_call() local_unnamed_addr #0 {
+; CHECK-LABEL: g2_0_call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vldr d1, .LCPI15_0
+; CHECK-NEXT:    vmov.i32 d5, #0x0
+; CHECK-NEXT:    vldr d2, .LCPI15_1
+; CHECK-NEXT:    vmov.i32 d6, #0x0
+; CHECK-NEXT:    vldr d3, .LCPI15_2
+; CHECK-NEXT:    vmov.i32 d7, #0x0
+; CHECK-NEXT:    vldr d4, .LCPI15_3
+; CHECK-NEXT:    b g2_0
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI15_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI15_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI15_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI15_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
 entry:
   %call = tail call double @g2_0(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, %struct.D2 alignstack(8) { [4 x double] [double 4.000000e-01, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00] }) #0
   ret double %call
 }
-; CHECK-LABEL: g2_0_call:
-; CHECK-DAG:   vldr     d4, .L[[L:.*]]
-; CHECK-DAG:   vmov.i32 d5, #0x0
-; CHECK-DAG:   vmov.i32 d6, #0x0
-; CHECK-DAG:   vmov.i32 d7, #0x0
-; CHECK:       b        g2_0
-; CHECK:       .L[[L]]:
-; CHECK-NEXT:  .long    2576980378
-; CHECK-NEXT:  .long    1071225241
 
 ; pass in memory, no split
 ; [sp] [sp + 4] =  0x00000000 0x3fe00000 = .5
@@ -295,47 +754,107 @@ entry:
 ; ...
 declare dso_local double @g2_1(double, double, double, double, double, %struct.D2 alignstack(8)) local_unnamed_addr #0
 define dso_local double @g2_1_call() local_unnamed_addr #0 {
+; CHECK-LABEL: g2_1_call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    .save {r11, lr}
+; CHECK-NEXT:    push {r11, lr}
+; CHECK-NEXT:    .pad #32
+; CHECK-NEXT:    sub sp, sp, #32
+; CHECK-NEXT:    vmov.f64 d16, #5.000000e-01
+; CHECK-NEXT:    mov r0, #0
+; CHECK-NEXT:    str r0, [sp, #8]
+; CHECK-NEXT:    str r0, [sp, #12]
+; CHECK-NEXT:    str r0, [sp, #16]
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vldr d1, .LCPI16_0
+; CHECK-NEXT:    vldr d2, .LCPI16_1
+; CHECK-NEXT:    vldr d3, .LCPI16_2
+; CHECK-NEXT:    vldr d4, .LCPI16_3
+; CHECK-NEXT:    str r0, [sp, #20]
+; CHECK-NEXT:    str r0, [sp, #24]
+; CHECK-NEXT:    str r0, [sp, #28]
+; CHECK-NEXT:    vstr d16, [sp]
+; CHECK-NEXT:    bl g2_1
+; CHECK-NEXT:    add sp, sp, #32
+; CHECK-NEXT:    pop {r11, pc}
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI16_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI16_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI16_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI16_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
 entry:
   %call = tail call double @g2_1(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, %struct.D2 alignstack(8) { [4 x double] [double 5.000000e-01, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00] }) #0
   ret double %call
 }
-; CHECK-LABEL: g2_1_call:
-; CHECK:       vmov.f64 d16, #5.000000e-01
-; CHECK:       mov    r0, #0
-; CHECK:       str    r0, [sp, #8]
-; CHECK:       str    r0, [sp, #12]
-; CHECK:       str    r0, [sp, #16]
-; CHECK:       vmov.i32 d0, #0x0
-; CHECK:       str    r0, [sp, #20]
-; CHECK:       str    r0, [sp, #24]
-; CHECK:       str    r0, [sp, #28]
-; CHECK:       vstr   d16, [sp]
-; CHECK:       bl    g2_1
 
 ; pass in memory, alignment 8
 declare dso_local double @g2_2(double, double, double, double, double, double, double, double, float, %struct.D2 alignstack(8)) local_unnamed_addr #0
 define dso_local double @g2_2call() local_unnamed_addr #0 {
+; CHECK-LABEL: g2_2call:
+; CHECK:       @ %bb.0: @ %entry
+; CHECK-NEXT:    .save {r11, lr}
+; CHECK-NEXT:    push {r11, lr}
+; CHECK-NEXT:    .pad #40
+; CHECK-NEXT:    sub sp, sp, #40
+; CHECK-NEXT:    movw r0, #52428
+; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01
+; CHECK-NEXT:    movt r0, #16364
+; CHECK-NEXT:    movw r1, #52429
+; CHECK-NEXT:    str r0, [sp, #12]
+; CHECK-NEXT:    movw r0, #52429
+; CHECK-NEXT:    mov r2, #0
+; CHECK-NEXT:    movt r1, #52428
+; CHECK-NEXT:    vmov.i32 d0, #0x0
+; CHECK-NEXT:    vldr d1, .LCPI17_0
+; CHECK-NEXT:    vldr d2, .LCPI17_1
+; CHECK-NEXT:    movt r0, #16204
+; CHECK-NEXT:    vldr d3, .LCPI17_2
+; CHECK-NEXT:    vldr d4, .LCPI17_3
+; CHECK-NEXT:    vldr d6, .LCPI17_4
+; CHECK-NEXT:    vldr d7, .LCPI17_5
+; CHECK-NEXT:    str r1, [sp, #8]
+; CHECK-NEXT:    str r2, [sp, #16]
+; CHECK-NEXT:    str r2, [sp, #20]
+; CHECK-NEXT:    str r2, [sp, #24]
+; CHECK-NEXT:    str r2, [sp, #28]
+; CHECK-NEXT:    str r2, [sp, #32]
+; CHECK-NEXT:    str r2, [sp, #36]
+; CHECK-NEXT:    str r0, [sp]
+; CHECK-NEXT:    bl g2_2
+; CHECK-NEXT:    add sp, sp, #40
+; CHECK-NEXT:    pop {r11, pc}
+; CHECK-NEXT:    .p2align 3
+; CHECK-NEXT:  @ %bb.1:
+; CHECK-NEXT:  .LCPI17_0:
+; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001
+; CHECK-NEXT:    .long 1069128089
+; CHECK-NEXT:  .LCPI17_1:
+; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001
+; CHECK-NEXT:    .long 1070176665
+; CHECK-NEXT:  .LCPI17_2:
+; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999
+; CHECK-NEXT:    .long 1070805811
+; CHECK-NEXT:  .LCPI17_3:
+; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002
+; CHECK-NEXT:    .long 1071225241
+; CHECK-NEXT:  .LCPI17_4:
+; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998
+; CHECK-NEXT:    .long 1071854387
+; CHECK-NEXT:  .LCPI17_5:
+; CHECK-NEXT:    .long 1717986918 @ double 0.69999999999999996
+; CHECK-NEXT:    .long 1072064102
 entry:
   %call = tail call double @g2_2(double 0.000000e+00, double 1.000000e-01, double 2.000000e-01, double 3.000000e-01, double 4.000000e-01, double 5.000000e-01, double 6.000000e-01, double 0x3FE6666666666666, float 0x3FE99999A0000000, %struct.D2 alignstack(8) { [4 x double] [double 9.000000e-01, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00] }) #0
   ret double %call
 }
-; CHECK-LABEL: g2_2call:
-; CHECK:       movw r0, #52428
-; CHECK:       movt r0, #16364
-; CHECK:       movw r1, #52429
-; CHECK:       str  r0, [sp, #12]
-; CHECK:       movw r0, #52429
-; CHECK:       mov  r2, #0
-; CHECK:       movt r1, #52428
-; CHECK:       movt r0, #16204
-; CHECK:       str  r1, [sp, #8]
-; CHECK:       str  r2, [sp, #16]
-; CHECK:       str  r2, [sp, #20]
-; CHECK:       str  r2, [sp, #24]
-; CHECK:       str  r2, [sp, #28]
-; CHECK:       str  r2, [sp, #32]
-; CHECK:       str  r2, [sp, #36]
-; CHECK:       str  r0, [sp]
-; CHECK:       bl   g2_2
 
 attributes #0 = { nounwind "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+strict-align,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }


        


More information about the llvm-commits mailing list