brintos

brintos / llvm-project-archived public Read only

0
0
Text · 34.7 KiB · 6eab750 Raw
861 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 62; RUN: llc --mtriple=armv7-eabihf %s -o - | FileCheck %s --enable-var-scope3 4%struct.S0 = type { [4 x float] }5%struct.S1 = type { [2 x float] }6%struct.S2 = type { [4 x float] }7%struct.D0 = type { [2 x double] }8%struct.D1 = type { [2 x double] }9%struct.D2 = type { [4 x double] }10 11; pass in regs12declare dso_local float @f0_0(double, double, double, double, double, double, %struct.S0) local_unnamed_addr #013define dso_local float @f0_0_call() local_unnamed_addr #0 {14; CHECK-LABEL: f0_0_call:15; CHECK:       @ %bb.0: @ %entry16; CHECK-NEXT:    vldr s13, .LCPI0_517; CHECK-NEXT:    vmov.i32 d0, #0x018; CHECK-NEXT:    vmov.f64 d5, #5.000000e-0119; CHECK-NEXT:    vmov.f32 s14, s1320; CHECK-NEXT:    vldr d1, .LCPI0_021; CHECK-NEXT:    vmov.f32 s15, s1322; CHECK-NEXT:    vldr d2, .LCPI0_123; CHECK-NEXT:    vldr d3, .LCPI0_224; CHECK-NEXT:    vldr d4, .LCPI0_325; CHECK-NEXT:    vldr s12, .LCPI0_426; CHECK-NEXT:    b f0_027; CHECK-NEXT:    .p2align 328; CHECK-NEXT:  @ %bb.1:29; CHECK-NEXT:  .LCPI0_0:30; CHECK-NEXT:    .long 2576980378 @ double 0.1000000000000000131; CHECK-NEXT:    .long 106912808932; CHECK-NEXT:  .LCPI0_1:33; CHECK-NEXT:    .long 2576980378 @ double 0.2000000000000000134; CHECK-NEXT:    .long 107017666535; CHECK-NEXT:  .LCPI0_2:36; CHECK-NEXT:    .long 858993459 @ double 0.2999999999999999937; CHECK-NEXT:    .long 107080581138; CHECK-NEXT:  .LCPI0_3:39; CHECK-NEXT:    .long 2576980378 @ double 0.4000000000000000240; CHECK-NEXT:    .long 107122524141; CHECK-NEXT:  .LCPI0_4:42; CHECK-NEXT:    .long 0x3f19999a @ float 0.60000002443; CHECK-NEXT:  .LCPI0_5:44; CHECK-NEXT:    .long 0x00000000 @ float 045entry:46  %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] }) #047  ret float %call48}49 50; pass in memory, no split51declare dso_local float @f0_1(double, double, double, double, double, double, float, %struct.S0) local_unnamed_addr #052define dso_local float @f0_1_call() local_unnamed_addr #0 {53; CHECK-LABEL: f0_1_call:54; CHECK:       @ %bb.0: @ %entry55; CHECK-NEXT:    .save {r11, lr}56; CHECK-NEXT:    push {r11, lr}57; CHECK-NEXT:    .pad #1658; CHECK-NEXT:    sub sp, sp, #1659; CHECK-NEXT:    vmov.f64 d5, #5.000000e-0160; CHECK-NEXT:    movw r1, #1310761; CHECK-NEXT:    mov r0, #062; CHECK-NEXT:    movt r1, #1617963; CHECK-NEXT:    str r1, [sp]64; CHECK-NEXT:    str r0, [sp, #4]65; CHECK-NEXT:    vmov.i32 d0, #0x066; CHECK-NEXT:    vldr d1, .LCPI1_067; CHECK-NEXT:    vldr d2, .LCPI1_168; CHECK-NEXT:    vldr d3, .LCPI1_269; CHECK-NEXT:    vldr d4, .LCPI1_370; CHECK-NEXT:    vldr s12, .LCPI1_471; CHECK-NEXT:    str r0, [sp, #8]72; CHECK-NEXT:    str r0, [sp, #12]73; CHECK-NEXT:    bl f0_174; CHECK-NEXT:    add sp, sp, #1675; CHECK-NEXT:    pop {r11, pc}76; CHECK-NEXT:    .p2align 377; CHECK-NEXT:  @ %bb.1:78; CHECK-NEXT:  .LCPI1_0:79; CHECK-NEXT:    .long 2576980378 @ double 0.1000000000000000180; CHECK-NEXT:    .long 106912808981; CHECK-NEXT:  .LCPI1_1:82; CHECK-NEXT:    .long 2576980378 @ double 0.2000000000000000183; CHECK-NEXT:    .long 107017666584; CHECK-NEXT:  .LCPI1_2:85; CHECK-NEXT:    .long 858993459 @ double 0.2999999999999999986; CHECK-NEXT:    .long 107080581187; CHECK-NEXT:  .LCPI1_3:88; CHECK-NEXT:    .long 2576980378 @ double 0.4000000000000000289; CHECK-NEXT:    .long 107122524190; CHECK-NEXT:  .LCPI1_4:91; CHECK-NEXT:    .long 0x3f19999a @ float 0.60000002492entry:93  %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] }) #094  ret float %call95}96 97; pass memory, alignment 498declare dso_local float @f0_2(double, double, double, double, double, double, double, double, float, %struct.S0) local_unnamed_addr #099define dso_local float @f0_2_call() local_unnamed_addr #0 {100; CHECK-LABEL: f0_2_call:101; CHECK:       @ %bb.0: @ %entry102; CHECK-NEXT:    .save {r11, lr}103; CHECK-NEXT:    push {r11, lr}104; CHECK-NEXT:    .pad #24105; CHECK-NEXT:    sub sp, sp, #24106; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01107; CHECK-NEXT:    movw r1, #26214108; CHECK-NEXT:    movw r2, #52429109; CHECK-NEXT:    mov r0, #0110; CHECK-NEXT:    movt r1, #16230111; CHECK-NEXT:    movt r2, #16204112; CHECK-NEXT:    str r2, [sp]113; CHECK-NEXT:    vmov.i32 d0, #0x0114; CHECK-NEXT:    vldr d1, .LCPI2_0115; CHECK-NEXT:    vldr d2, .LCPI2_1116; CHECK-NEXT:    vldr d3, .LCPI2_2117; CHECK-NEXT:    vldr d4, .LCPI2_3118; CHECK-NEXT:    vldr d6, .LCPI2_4119; CHECK-NEXT:    vldr d7, .LCPI2_5120; CHECK-NEXT:    str r1, [sp, #4]121; CHECK-NEXT:    str r0, [sp, #8]122; CHECK-NEXT:    str r0, [sp, #12]123; CHECK-NEXT:    str r0, [sp, #16]124; CHECK-NEXT:    bl f0_2125; CHECK-NEXT:    add sp, sp, #24126; CHECK-NEXT:    pop {r11, pc}127; CHECK-NEXT:    .p2align 3128; CHECK-NEXT:  @ %bb.1:129; CHECK-NEXT:  .LCPI2_0:130; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001131; CHECK-NEXT:    .long 1069128089132; CHECK-NEXT:  .LCPI2_1:133; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001134; CHECK-NEXT:    .long 1070176665135; CHECK-NEXT:  .LCPI2_2:136; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999137; CHECK-NEXT:    .long 1070805811138; CHECK-NEXT:  .LCPI2_3:139; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002140; CHECK-NEXT:    .long 1071225241141; CHECK-NEXT:  .LCPI2_4:142; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998143; CHECK-NEXT:    .long 1071854387144; CHECK-NEXT:  .LCPI2_5:145; CHECK-NEXT:    .long 1717986918 @ double 0.69999999999999996146; CHECK-NEXT:    .long 1072064102147entry:148  %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] }) #0149  ret float %call150}151 152; pass in regs153declare dso_local float @f1_0(double, double, double, double, double, double, double, %struct.S1 alignstack(8)) local_unnamed_addr #0154define dso_local float @f1_0_call() local_unnamed_addr #0 {155; CHECK-LABEL: f1_0_call:156; CHECK:       @ %bb.0: @ %entry157; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01158; CHECK-NEXT:    vmov.i32 d0, #0x0159; CHECK-NEXT:    vldr d1, .LCPI3_0160; CHECK-NEXT:    vldr d2, .LCPI3_1161; CHECK-NEXT:    vldr d3, .LCPI3_2162; CHECK-NEXT:    vldr d4, .LCPI3_3163; CHECK-NEXT:    vldr d6, .LCPI3_4164; CHECK-NEXT:    vldr s14, .LCPI3_5165; CHECK-NEXT:    vldr s15, .LCPI3_6166; CHECK-NEXT:    b f1_0167; CHECK-NEXT:    .p2align 3168; CHECK-NEXT:  @ %bb.1:169; CHECK-NEXT:  .LCPI3_0:170; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001171; CHECK-NEXT:    .long 1069128089172; CHECK-NEXT:  .LCPI3_1:173; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001174; CHECK-NEXT:    .long 1070176665175; CHECK-NEXT:  .LCPI3_2:176; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999177; CHECK-NEXT:    .long 1070805811178; CHECK-NEXT:  .LCPI3_3:179; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002180; CHECK-NEXT:    .long 1071225241181; CHECK-NEXT:  .LCPI3_4:182; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998183; CHECK-NEXT:    .long 1071854387184; CHECK-NEXT:  .LCPI3_5:185; CHECK-NEXT:    .long 0x3f333333 @ float 0.699999988186; CHECK-NEXT:  .LCPI3_6:187; CHECK-NEXT:    .long 0x00000000 @ float 0188entry:189  %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] }) #0190  ret float %call191}192 193; pass in memory, no split194declare dso_local float @f1_1(double, double, double, double, double, double, double, float, %struct.S1 alignstack(8)) local_unnamed_addr #0195define dso_local float @f1_1_call() local_unnamed_addr #0 {196; CHECK-LABEL: f1_1_call:197; CHECK:       @ %bb.0: @ %entry198; CHECK-NEXT:    .save {r11, lr}199; CHECK-NEXT:    push {r11, lr}200; CHECK-NEXT:    .pad #8201; CHECK-NEXT:    sub sp, sp, #8202; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01203; CHECK-NEXT:    movw r0, #52429204; CHECK-NEXT:    mov r1, #0205; CHECK-NEXT:    movt r0, #16204206; CHECK-NEXT:    strd r0, r1, [sp]207; CHECK-NEXT:    vmov.i32 d0, #0x0208; CHECK-NEXT:    vldr d1, .LCPI4_0209; CHECK-NEXT:    vldr d2, .LCPI4_1210; CHECK-NEXT:    vldr d3, .LCPI4_2211; CHECK-NEXT:    vldr d4, .LCPI4_3212; CHECK-NEXT:    vldr d6, .LCPI4_4213; CHECK-NEXT:    vldr s14, .LCPI4_5214; CHECK-NEXT:    bl f1_1215; CHECK-NEXT:    add sp, sp, #8216; CHECK-NEXT:    pop {r11, pc}217; CHECK-NEXT:    .p2align 3218; CHECK-NEXT:  @ %bb.1:219; CHECK-NEXT:  .LCPI4_0:220; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001221; CHECK-NEXT:    .long 1069128089222; CHECK-NEXT:  .LCPI4_1:223; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001224; CHECK-NEXT:    .long 1070176665225; CHECK-NEXT:  .LCPI4_2:226; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999227; CHECK-NEXT:    .long 1070805811228; CHECK-NEXT:  .LCPI4_3:229; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002230; CHECK-NEXT:    .long 1071225241231; CHECK-NEXT:  .LCPI4_4:232; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998233; CHECK-NEXT:    .long 1071854387234; CHECK-NEXT:  .LCPI4_5:235; CHECK-NEXT:    .long 0x3f333333 @ float 0.699999988236entry:237  %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] }) #0238  ret float %call239}240 241; pass in memory, alignment 8242declare dso_local float @f1_2(double, double, double, double, double, double, double, double, float, %struct.S1 alignstack(8)) local_unnamed_addr #0243define dso_local float @f1_2_call() local_unnamed_addr #0 {244; CHECK-LABEL: f1_2_call:245; CHECK:       @ %bb.0: @ %entry246; CHECK-NEXT:    .save {r11, lr}247; CHECK-NEXT:    push {r11, lr}248; CHECK-NEXT:    .pad #16249; CHECK-NEXT:    sub sp, sp, #16250; CHECK-NEXT:    movw r0, #26214251; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01252; CHECK-NEXT:    mov r1, #0253; CHECK-NEXT:    movt r0, #16230254; CHECK-NEXT:    strd r0, r1, [sp, #8]255; CHECK-NEXT:    movw r0, #52429256; CHECK-NEXT:    movt r0, #16204257; CHECK-NEXT:    vmov.i32 d0, #0x0258; CHECK-NEXT:    vldr d1, .LCPI5_0259; CHECK-NEXT:    vldr d2, .LCPI5_1260; CHECK-NEXT:    vldr d3, .LCPI5_2261; CHECK-NEXT:    vldr d4, .LCPI5_3262; CHECK-NEXT:    vldr d6, .LCPI5_4263; CHECK-NEXT:    vldr d7, .LCPI5_5264; CHECK-NEXT:    str r0, [sp]265; CHECK-NEXT:    bl f1_2266; CHECK-NEXT:    add sp, sp, #16267; CHECK-NEXT:    pop {r11, pc}268; CHECK-NEXT:    .p2align 3269; CHECK-NEXT:  @ %bb.1:270; CHECK-NEXT:  .LCPI5_0:271; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001272; CHECK-NEXT:    .long 1069128089273; CHECK-NEXT:  .LCPI5_1:274; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001275; CHECK-NEXT:    .long 1070176665276; CHECK-NEXT:  .LCPI5_2:277; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999278; CHECK-NEXT:    .long 1070805811279; CHECK-NEXT:  .LCPI5_3:280; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002281; CHECK-NEXT:    .long 1071225241282; CHECK-NEXT:  .LCPI5_4:283; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998284; CHECK-NEXT:    .long 1071854387285; CHECK-NEXT:  .LCPI5_5:286; CHECK-NEXT:    .long 1717986918 @ double 0.69999999999999996287; CHECK-NEXT:    .long 1072064102288entry:289  %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] }) #0290  ret float %call291}292 293; pass in registers294declare dso_local float @f2_0(double, double, double, double, double, double, %struct.S2 alignstack(8)) local_unnamed_addr #0295define dso_local float @f2_0_call() local_unnamed_addr #0 {296; CHECK-LABEL: f2_0_call:297; CHECK:       @ %bb.0: @ %entry298; CHECK-NEXT:    vldr s13, .LCPI6_5299; CHECK-NEXT:    vmov.i32 d0, #0x0300; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01301; CHECK-NEXT:    vmov.f32 s14, s13302; CHECK-NEXT:    vldr d1, .LCPI6_0303; CHECK-NEXT:    vmov.f32 s15, s13304; CHECK-NEXT:    vldr d2, .LCPI6_1305; CHECK-NEXT:    vldr d3, .LCPI6_2306; CHECK-NEXT:    vldr d4, .LCPI6_3307; CHECK-NEXT:    vldr s12, .LCPI6_4308; CHECK-NEXT:    b f2_0309; CHECK-NEXT:    .p2align 3310; CHECK-NEXT:  @ %bb.1:311; CHECK-NEXT:  .LCPI6_0:312; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001313; CHECK-NEXT:    .long 1069128089314; CHECK-NEXT:  .LCPI6_1:315; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001316; CHECK-NEXT:    .long 1070176665317; CHECK-NEXT:  .LCPI6_2:318; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999319; CHECK-NEXT:    .long 1070805811320; CHECK-NEXT:  .LCPI6_3:321; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002322; CHECK-NEXT:    .long 1071225241323; CHECK-NEXT:  .LCPI6_4:324; CHECK-NEXT:    .long 0x3f19999a @ float 0.600000024325; CHECK-NEXT:  .LCPI6_5:326; CHECK-NEXT:    .long 0x00000000 @ float 0327entry:328  %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] }) #0329  ret float %call330}331 332; pass in memory, no split333declare dso_local float @f2_1(double, double, double, double, double, double, float, %struct.S2 alignstack(8)) local_unnamed_addr #0334define dso_local float @f2_1_call() local_unnamed_addr #0 {335; CHECK-LABEL: f2_1_call:336; CHECK:       @ %bb.0: @ %entry337; CHECK-NEXT:    .save {r11, lr}338; CHECK-NEXT:    push {r11, lr}339; CHECK-NEXT:    .pad #16340; CHECK-NEXT:    sub sp, sp, #16341; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01342; CHECK-NEXT:    movw r1, #13107343; CHECK-NEXT:    mov r0, #0344; CHECK-NEXT:    movt r1, #16179345; CHECK-NEXT:    str r1, [sp]346; CHECK-NEXT:    str r0, [sp, #4]347; CHECK-NEXT:    vmov.i32 d0, #0x0348; CHECK-NEXT:    vldr d1, .LCPI7_0349; CHECK-NEXT:    vldr d2, .LCPI7_1350; CHECK-NEXT:    vldr d3, .LCPI7_2351; CHECK-NEXT:    vldr d4, .LCPI7_3352; CHECK-NEXT:    vldr s12, .LCPI7_4353; CHECK-NEXT:    str r0, [sp, #8]354; CHECK-NEXT:    str r0, [sp, #12]355; CHECK-NEXT:    bl f2_1356; CHECK-NEXT:    add sp, sp, #16357; CHECK-NEXT:    pop {r11, pc}358; CHECK-NEXT:    .p2align 3359; CHECK-NEXT:  @ %bb.1:360; CHECK-NEXT:  .LCPI7_0:361; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001362; CHECK-NEXT:    .long 1069128089363; CHECK-NEXT:  .LCPI7_1:364; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001365; CHECK-NEXT:    .long 1070176665366; CHECK-NEXT:  .LCPI7_2:367; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999368; CHECK-NEXT:    .long 1070805811369; CHECK-NEXT:  .LCPI7_3:370; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002371; CHECK-NEXT:    .long 1071225241372; CHECK-NEXT:  .LCPI7_4:373; CHECK-NEXT:    .long 0x3f19999a @ float 0.600000024374entry:375  %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] }) #0376  ret float %call377}378 379; pass in memory, alignment 8380declare dso_local float @f2_2(double, double, double, double, double, double, double, double, float, %struct.S2 alignstack(8)) local_unnamed_addr #0381define dso_local float @f2_2_call() local_unnamed_addr #0 {382; CHECK-LABEL: f2_2_call:383; CHECK:       @ %bb.0: @ %entry384; CHECK-NEXT:    .save {r11, lr}385; CHECK-NEXT:    push {r11, lr}386; CHECK-NEXT:    .pad #24387; CHECK-NEXT:    sub sp, sp, #24388; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01389; CHECK-NEXT:    mov r0, #0390; CHECK-NEXT:    movw r1, #26214391; CHECK-NEXT:    str r0, [sp, #12]392; CHECK-NEXT:    str r0, [sp, #16]393; CHECK-NEXT:    movt r1, #16230394; CHECK-NEXT:    str r0, [sp, #20]395; CHECK-NEXT:    movw r0, #52429396; CHECK-NEXT:    vmov.i32 d0, #0x0397; CHECK-NEXT:    vldr d1, .LCPI8_0398; CHECK-NEXT:    vldr d2, .LCPI8_1399; CHECK-NEXT:    movt r0, #16204400; CHECK-NEXT:    vldr d3, .LCPI8_2401; CHECK-NEXT:    vldr d4, .LCPI8_3402; CHECK-NEXT:    vldr d6, .LCPI8_4403; CHECK-NEXT:    vldr d7, .LCPI8_5404; CHECK-NEXT:    str r1, [sp, #8]405; CHECK-NEXT:    str r0, [sp]406; CHECK-NEXT:    bl f2_2407; CHECK-NEXT:    add sp, sp, #24408; CHECK-NEXT:    pop {r11, pc}409; CHECK-NEXT:    .p2align 3410; CHECK-NEXT:  @ %bb.1:411; CHECK-NEXT:  .LCPI8_0:412; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001413; CHECK-NEXT:    .long 1069128089414; CHECK-NEXT:  .LCPI8_1:415; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001416; CHECK-NEXT:    .long 1070176665417; CHECK-NEXT:  .LCPI8_2:418; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999419; CHECK-NEXT:    .long 1070805811420; CHECK-NEXT:  .LCPI8_3:421; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002422; CHECK-NEXT:    .long 1071225241423; CHECK-NEXT:  .LCPI8_4:424; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998425; CHECK-NEXT:    .long 1071854387426; CHECK-NEXT:  .LCPI8_5:427; CHECK-NEXT:    .long 1717986918 @ double 0.69999999999999996428; CHECK-NEXT:    .long 1072064102429entry:430  %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] }) #0431  ret float %call432}433 434; pass in registers435declare dso_local double @g0_0(double, double, double, double, double, double, %struct.D0) local_unnamed_addr #0436define dso_local double @g0_0_call() local_unnamed_addr #0 {437; CHECK-LABEL: g0_0_call:438; CHECK:       @ %bb.0: @ %entry439; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01440; CHECK-NEXT:    vmov.i32 d0, #0x0441; CHECK-NEXT:    vldr d1, .LCPI9_0442; CHECK-NEXT:    vmov.i32 d7, #0x0443; CHECK-NEXT:    vldr d2, .LCPI9_1444; CHECK-NEXT:    vldr d3, .LCPI9_2445; CHECK-NEXT:    vldr d4, .LCPI9_3446; CHECK-NEXT:    vldr d6, .LCPI9_4447; CHECK-NEXT:    b g0_0448; CHECK-NEXT:    .p2align 3449; CHECK-NEXT:  @ %bb.1:450; CHECK-NEXT:  .LCPI9_0:451; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001452; CHECK-NEXT:    .long 1069128089453; CHECK-NEXT:  .LCPI9_1:454; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001455; CHECK-NEXT:    .long 1070176665456; CHECK-NEXT:  .LCPI9_2:457; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999458; CHECK-NEXT:    .long 1070805811459; CHECK-NEXT:  .LCPI9_3:460; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002461; CHECK-NEXT:    .long 1071225241462; CHECK-NEXT:  .LCPI9_4:463; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998464; CHECK-NEXT:    .long 1071854387465entry:466  %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] }) #0467  ret double %call468}469 470; pass in memory, no split471declare dso_local double @g0_1(double, double, double, double, double, double, double, %struct.D0) local_unnamed_addr #0472define dso_local double @g0_1_call() local_unnamed_addr #0 {473; CHECK-LABEL: g0_1_call:474; CHECK:       @ %bb.0: @ %entry475; CHECK-NEXT:    .save {r11, lr}476; CHECK-NEXT:    push {r11, lr}477; CHECK-NEXT:    .pad #16478; CHECK-NEXT:    sub sp, sp, #16479; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01480; CHECK-NEXT:    movw r0, #26214481; CHECK-NEXT:    movw r1, #26214482; CHECK-NEXT:    mov r2, #0483; CHECK-NEXT:    movt r0, #16358484; CHECK-NEXT:    movt r1, #26214485; CHECK-NEXT:    str r1, [sp]486; CHECK-NEXT:    vmov.i32 d0, #0x0487; CHECK-NEXT:    vldr d1, .LCPI10_0488; CHECK-NEXT:    vldr d2, .LCPI10_1489; CHECK-NEXT:    vldr d3, .LCPI10_2490; CHECK-NEXT:    vldr d4, .LCPI10_3491; CHECK-NEXT:    vldr d6, .LCPI10_4492; CHECK-NEXT:    stmib sp, {r0, r2}493; CHECK-NEXT:    str r2, [sp, #12]494; CHECK-NEXT:    bl g0_1495; CHECK-NEXT:    add sp, sp, #16496; CHECK-NEXT:    pop {r11, pc}497; CHECK-NEXT:    .p2align 3498; CHECK-NEXT:  @ %bb.1:499; CHECK-NEXT:  .LCPI10_0:500; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001501; CHECK-NEXT:    .long 1069128089502; CHECK-NEXT:  .LCPI10_1:503; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001504; CHECK-NEXT:    .long 1070176665505; CHECK-NEXT:  .LCPI10_2:506; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999507; CHECK-NEXT:    .long 1070805811508; CHECK-NEXT:  .LCPI10_3:509; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002510; CHECK-NEXT:    .long 1071225241511; CHECK-NEXT:  .LCPI10_4:512; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998513; CHECK-NEXT:    .long 1071854387514entry:515  %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] }) #0516  ret double %call517}518 519; pass in memory, alignment 8520declare dso_local double @g0_2(double, double, double, double, double, double, double, double, float, %struct.D0) local_unnamed_addr #0521define dso_local double @g0_2_call() local_unnamed_addr #0 {522; CHECK-LABEL: g0_2_call:523; CHECK:       @ %bb.0: @ %entry524; CHECK-NEXT:    .save {r11, lr}525; CHECK-NEXT:    push {r11, lr}526; CHECK-NEXT:    .pad #24527; CHECK-NEXT:    sub sp, sp, #24528; CHECK-NEXT:    movw r0, #52428529; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01530; CHECK-NEXT:    movt r0, #16364531; CHECK-NEXT:    movw r1, #52429532; CHECK-NEXT:    str r0, [sp, #12]533; CHECK-NEXT:    movw r0, #52429534; CHECK-NEXT:    mov r2, #0535; CHECK-NEXT:    movt r1, #52428536; CHECK-NEXT:    vmov.i32 d0, #0x0537; CHECK-NEXT:    vldr d1, .LCPI11_0538; CHECK-NEXT:    vldr d2, .LCPI11_1539; CHECK-NEXT:    movt r0, #16204540; CHECK-NEXT:    vldr d3, .LCPI11_2541; CHECK-NEXT:    vldr d4, .LCPI11_3542; CHECK-NEXT:    vldr d6, .LCPI11_4543; CHECK-NEXT:    vldr d7, .LCPI11_5544; CHECK-NEXT:    str r1, [sp, #8]545; CHECK-NEXT:    str r2, [sp, #16]546; CHECK-NEXT:    str r2, [sp, #20]547; CHECK-NEXT:    str r0, [sp]548; CHECK-NEXT:    bl g0_2549; CHECK-NEXT:    add sp, sp, #24550; CHECK-NEXT:    pop {r11, pc}551; CHECK-NEXT:    .p2align 3552; CHECK-NEXT:  @ %bb.1:553; CHECK-NEXT:  .LCPI11_0:554; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001555; CHECK-NEXT:    .long 1069128089556; CHECK-NEXT:  .LCPI11_1:557; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001558; CHECK-NEXT:    .long 1070176665559; CHECK-NEXT:  .LCPI11_2:560; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999561; CHECK-NEXT:    .long 1070805811562; CHECK-NEXT:  .LCPI11_3:563; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002564; CHECK-NEXT:    .long 1071225241565; CHECK-NEXT:  .LCPI11_4:566; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998567; CHECK-NEXT:    .long 1071854387568; CHECK-NEXT:  .LCPI11_5:569; CHECK-NEXT:    .long 1717986918 @ double 0.69999999999999996570; CHECK-NEXT:    .long 1072064102571entry:572  %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] }) #0573  ret double %call574}575 576; pass in registers577declare dso_local double @g1_0(double, double, double, double, double, double, %struct.D1 alignstack(8)) local_unnamed_addr #0578define dso_local double @g1_0_call() local_unnamed_addr #0 {579; CHECK-LABEL: g1_0_call:580; CHECK:       @ %bb.0: @ %entry581; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01582; CHECK-NEXT:    vmov.i32 d0, #0x0583; CHECK-NEXT:    vldr d1, .LCPI12_0584; CHECK-NEXT:    vmov.i32 d7, #0x0585; CHECK-NEXT:    vldr d2, .LCPI12_1586; CHECK-NEXT:    vldr d3, .LCPI12_2587; CHECK-NEXT:    vldr d4, .LCPI12_3588; CHECK-NEXT:    vldr d6, .LCPI12_4589; CHECK-NEXT:    b g1_0590; CHECK-NEXT:    .p2align 3591; CHECK-NEXT:  @ %bb.1:592; CHECK-NEXT:  .LCPI12_0:593; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001594; CHECK-NEXT:    .long 1069128089595; CHECK-NEXT:  .LCPI12_1:596; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001597; CHECK-NEXT:    .long 1070176665598; CHECK-NEXT:  .LCPI12_2:599; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999600; CHECK-NEXT:    .long 1070805811601; CHECK-NEXT:  .LCPI12_3:602; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002603; CHECK-NEXT:    .long 1071225241604; CHECK-NEXT:  .LCPI12_4:605; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998606; CHECK-NEXT:    .long 1071854387607entry:608  %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] }) #0609  ret double %call610}611 612; pass in memory, no split613declare dso_local double @g1_1(double, double, double, double, double, double, double, %struct.D1 alignstack(8)) local_unnamed_addr #0614define dso_local double @g1_1_call() local_unnamed_addr #0 {615; CHECK-LABEL: g1_1_call:616; CHECK:       @ %bb.0: @ %entry617; CHECK-NEXT:    .save {r11, lr}618; CHECK-NEXT:    push {r11, lr}619; CHECK-NEXT:    .pad #16620; CHECK-NEXT:    sub sp, sp, #16621; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01622; CHECK-NEXT:    movw r0, #26214623; CHECK-NEXT:    movw r1, #26214624; CHECK-NEXT:    mov r2, #0625; CHECK-NEXT:    movt r0, #16358626; CHECK-NEXT:    movt r1, #26214627; CHECK-NEXT:    str r1, [sp]628; CHECK-NEXT:    vmov.i32 d0, #0x0629; CHECK-NEXT:    vldr d1, .LCPI13_0630; CHECK-NEXT:    vldr d2, .LCPI13_1631; CHECK-NEXT:    vldr d3, .LCPI13_2632; CHECK-NEXT:    vldr d4, .LCPI13_3633; CHECK-NEXT:    vldr d6, .LCPI13_4634; CHECK-NEXT:    stmib sp, {r0, r2}635; CHECK-NEXT:    str r2, [sp, #12]636; CHECK-NEXT:    bl g1_1637; CHECK-NEXT:    add sp, sp, #16638; CHECK-NEXT:    pop {r11, pc}639; CHECK-NEXT:    .p2align 3640; CHECK-NEXT:  @ %bb.1:641; CHECK-NEXT:  .LCPI13_0:642; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001643; CHECK-NEXT:    .long 1069128089644; CHECK-NEXT:  .LCPI13_1:645; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001646; CHECK-NEXT:    .long 1070176665647; CHECK-NEXT:  .LCPI13_2:648; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999649; CHECK-NEXT:    .long 1070805811650; CHECK-NEXT:  .LCPI13_3:651; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002652; CHECK-NEXT:    .long 1071225241653; CHECK-NEXT:  .LCPI13_4:654; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998655; CHECK-NEXT:    .long 1071854387656entry:657  %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] }) #0658  ret double %call659}660 661; pass in memory, alignment 8662declare dso_local double @g1_2(double, double, double, double, double, double, double, double, float, %struct.D1 alignstack(8)) local_unnamed_addr #0663define dso_local double @g1_2_call() local_unnamed_addr #0 {664; CHECK-LABEL: g1_2_call:665; CHECK:       @ %bb.0: @ %entry666; CHECK-NEXT:    .save {r11, lr}667; CHECK-NEXT:    push {r11, lr}668; CHECK-NEXT:    .pad #24669; CHECK-NEXT:    sub sp, sp, #24670; CHECK-NEXT:    movw r0, #52428671; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01672; CHECK-NEXT:    movt r0, #16364673; CHECK-NEXT:    movw r1, #52429674; CHECK-NEXT:    str r0, [sp, #12]675; CHECK-NEXT:    movw r0, #52429676; CHECK-NEXT:    mov r2, #0677; CHECK-NEXT:    movt r1, #52428678; CHECK-NEXT:    vmov.i32 d0, #0x0679; CHECK-NEXT:    vldr d1, .LCPI14_0680; CHECK-NEXT:    vldr d2, .LCPI14_1681; CHECK-NEXT:    movt r0, #16204682; CHECK-NEXT:    vldr d3, .LCPI14_2683; CHECK-NEXT:    vldr d4, .LCPI14_3684; CHECK-NEXT:    vldr d6, .LCPI14_4685; CHECK-NEXT:    vldr d7, .LCPI14_5686; CHECK-NEXT:    str r1, [sp, #8]687; CHECK-NEXT:    str r2, [sp, #16]688; CHECK-NEXT:    str r2, [sp, #20]689; CHECK-NEXT:    str r0, [sp]690; CHECK-NEXT:    bl g1_2691; CHECK-NEXT:    add sp, sp, #24692; CHECK-NEXT:    pop {r11, pc}693; CHECK-NEXT:    .p2align 3694; CHECK-NEXT:  @ %bb.1:695; CHECK-NEXT:  .LCPI14_0:696; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001697; CHECK-NEXT:    .long 1069128089698; CHECK-NEXT:  .LCPI14_1:699; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001700; CHECK-NEXT:    .long 1070176665701; CHECK-NEXT:  .LCPI14_2:702; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999703; CHECK-NEXT:    .long 1070805811704; CHECK-NEXT:  .LCPI14_3:705; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002706; CHECK-NEXT:    .long 1071225241707; CHECK-NEXT:  .LCPI14_4:708; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998709; CHECK-NEXT:    .long 1071854387710; CHECK-NEXT:  .LCPI14_5:711; CHECK-NEXT:    .long 1717986918 @ double 0.69999999999999996712; CHECK-NEXT:    .long 1072064102713entry:714  %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] }) #0715  ret double %call716}717 718; pass in registers719declare dso_local double @g2_0(double, double, double, double, %struct.D2 alignstack(8)) local_unnamed_addr #0720define dso_local double @g2_0_call() local_unnamed_addr #0 {721; CHECK-LABEL: g2_0_call:722; CHECK:       @ %bb.0: @ %entry723; CHECK-NEXT:    vmov.i32 d0, #0x0724; CHECK-NEXT:    vldr d1, .LCPI15_0725; CHECK-NEXT:    vmov.i32 d5, #0x0726; CHECK-NEXT:    vldr d2, .LCPI15_1727; CHECK-NEXT:    vmov.i32 d6, #0x0728; CHECK-NEXT:    vldr d3, .LCPI15_2729; CHECK-NEXT:    vmov.i32 d7, #0x0730; CHECK-NEXT:    vldr d4, .LCPI15_3731; CHECK-NEXT:    b g2_0732; CHECK-NEXT:    .p2align 3733; CHECK-NEXT:  @ %bb.1:734; CHECK-NEXT:  .LCPI15_0:735; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001736; CHECK-NEXT:    .long 1069128089737; CHECK-NEXT:  .LCPI15_1:738; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001739; CHECK-NEXT:    .long 1070176665740; CHECK-NEXT:  .LCPI15_2:741; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999742; CHECK-NEXT:    .long 1070805811743; CHECK-NEXT:  .LCPI15_3:744; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002745; CHECK-NEXT:    .long 1071225241746entry:747  %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] }) #0748  ret double %call749}750 751; pass in memory, no split752; [sp] [sp + 4] =  0x00000000 0x3fe00000 = .5753; [sp + 8] [sp + 12] = 0 0 = .0754; ...755declare dso_local double @g2_1(double, double, double, double, double, %struct.D2 alignstack(8)) local_unnamed_addr #0756define dso_local double @g2_1_call() local_unnamed_addr #0 {757; CHECK-LABEL: g2_1_call:758; CHECK:       @ %bb.0: @ %entry759; CHECK-NEXT:    .save {r11, lr}760; CHECK-NEXT:    push {r11, lr}761; CHECK-NEXT:    .pad #32762; CHECK-NEXT:    sub sp, sp, #32763; CHECK-NEXT:    vmov.f64 d16, #5.000000e-01764; CHECK-NEXT:    mov r0, #0765; CHECK-NEXT:    str r0, [sp, #8]766; CHECK-NEXT:    str r0, [sp, #12]767; CHECK-NEXT:    str r0, [sp, #16]768; CHECK-NEXT:    vmov.i32 d0, #0x0769; CHECK-NEXT:    vldr d1, .LCPI16_0770; CHECK-NEXT:    vldr d2, .LCPI16_1771; CHECK-NEXT:    vldr d3, .LCPI16_2772; CHECK-NEXT:    vldr d4, .LCPI16_3773; CHECK-NEXT:    str r0, [sp, #20]774; CHECK-NEXT:    str r0, [sp, #24]775; CHECK-NEXT:    str r0, [sp, #28]776; CHECK-NEXT:    vstr d16, [sp]777; CHECK-NEXT:    bl g2_1778; CHECK-NEXT:    add sp, sp, #32779; CHECK-NEXT:    pop {r11, pc}780; CHECK-NEXT:    .p2align 3781; CHECK-NEXT:  @ %bb.1:782; CHECK-NEXT:  .LCPI16_0:783; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001784; CHECK-NEXT:    .long 1069128089785; CHECK-NEXT:  .LCPI16_1:786; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001787; CHECK-NEXT:    .long 1070176665788; CHECK-NEXT:  .LCPI16_2:789; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999790; CHECK-NEXT:    .long 1070805811791; CHECK-NEXT:  .LCPI16_3:792; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002793; CHECK-NEXT:    .long 1071225241794entry:795  %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] }) #0796  ret double %call797}798 799; pass in memory, alignment 8800declare dso_local double @g2_2(double, double, double, double, double, double, double, double, float, %struct.D2 alignstack(8)) local_unnamed_addr #0801define dso_local double @g2_2call() local_unnamed_addr #0 {802; CHECK-LABEL: g2_2call:803; CHECK:       @ %bb.0: @ %entry804; CHECK-NEXT:    .save {r11, lr}805; CHECK-NEXT:    push {r11, lr}806; CHECK-NEXT:    .pad #40807; CHECK-NEXT:    sub sp, sp, #40808; CHECK-NEXT:    movw r0, #52428809; CHECK-NEXT:    vmov.f64 d5, #5.000000e-01810; CHECK-NEXT:    movt r0, #16364811; CHECK-NEXT:    movw r1, #52429812; CHECK-NEXT:    str r0, [sp, #12]813; CHECK-NEXT:    movw r0, #52429814; CHECK-NEXT:    mov r2, #0815; CHECK-NEXT:    movt r1, #52428816; CHECK-NEXT:    vmov.i32 d0, #0x0817; CHECK-NEXT:    vldr d1, .LCPI17_0818; CHECK-NEXT:    vldr d2, .LCPI17_1819; CHECK-NEXT:    movt r0, #16204820; CHECK-NEXT:    vldr d3, .LCPI17_2821; CHECK-NEXT:    vldr d4, .LCPI17_3822; CHECK-NEXT:    vldr d6, .LCPI17_4823; CHECK-NEXT:    vldr d7, .LCPI17_5824; CHECK-NEXT:    str r1, [sp, #8]825; CHECK-NEXT:    str r2, [sp, #16]826; CHECK-NEXT:    str r2, [sp, #20]827; CHECK-NEXT:    str r2, [sp, #24]828; CHECK-NEXT:    str r2, [sp, #28]829; CHECK-NEXT:    str r2, [sp, #32]830; CHECK-NEXT:    str r2, [sp, #36]831; CHECK-NEXT:    str r0, [sp]832; CHECK-NEXT:    bl g2_2833; CHECK-NEXT:    add sp, sp, #40834; CHECK-NEXT:    pop {r11, pc}835; CHECK-NEXT:    .p2align 3836; CHECK-NEXT:  @ %bb.1:837; CHECK-NEXT:  .LCPI17_0:838; CHECK-NEXT:    .long 2576980378 @ double 0.10000000000000001839; CHECK-NEXT:    .long 1069128089840; CHECK-NEXT:  .LCPI17_1:841; CHECK-NEXT:    .long 2576980378 @ double 0.20000000000000001842; CHECK-NEXT:    .long 1070176665843; CHECK-NEXT:  .LCPI17_2:844; CHECK-NEXT:    .long 858993459 @ double 0.29999999999999999845; CHECK-NEXT:    .long 1070805811846; CHECK-NEXT:  .LCPI17_3:847; CHECK-NEXT:    .long 2576980378 @ double 0.40000000000000002848; CHECK-NEXT:    .long 1071225241849; CHECK-NEXT:  .LCPI17_4:850; CHECK-NEXT:    .long 858993459 @ double 0.59999999999999998851; CHECK-NEXT:    .long 1071854387852; CHECK-NEXT:  .LCPI17_5:853; CHECK-NEXT:    .long 1717986918 @ double 0.69999999999999996854; CHECK-NEXT:    .long 1072064102855entry:856  %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] }) #0857  ret double %call858}859 860attributes #0 = { nounwind "target-cpu"="generic" "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+strict-align,+vfp2,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,-thumb-mode" }861