brintos

brintos / llvm-project-archived public Read only

0
0
Text · 44.3 KiB · 34cc2da Raw
1553 lines · plain
1;RUN: llc < %s -mtriple=armv7-none-linux-gnueabi   -mattr=+neon -verify-machineinstrs -filetype=obj | llvm-objdump --no-print-imm-hex --triple=armv7-none-linux-gnueabi   -d - | FileCheck %s --check-prefix=ARM2;RUN: llc < %s -mtriple=thumbv7-none-linux-gnueabi -mattr=+neon -verify-machineinstrs -filetype=obj | llvm-objdump --no-print-imm-hex --triple=thumbv7-none-linux-gnueabi -d - | FileCheck %s --check-prefix=THUMB23;RUN: llc < %s -mtriple=armv7-none-linux-gnueabi   -mattr=-neon -verify-machineinstrs -filetype=obj | llvm-objdump --no-print-imm-hex --triple=armv7-none-linux-gnueabi   -d - | FileCheck %s --check-prefix=NO_NEON4;We want to have both positive and negative checks for thumb1. These checks5;are not easy to do in a single pass so we generate the output once to a6;temp file and run filecheck twice with different prefixes.7;RUN: llc < %s -mtriple=thumbv5-none-linux-gnueabi              -verify-machineinstrs -filetype=obj | llvm-objdump --no-print-imm-hex --triple=thumbv5-none-linux-gnueabi -d - > %t8;RUN: cat %t | FileCheck %s --check-prefix=THUMB19;RUN: cat %t | FileCheck %s --check-prefix=T1POST10;RUN: llc < %s -mtriple=thumbv8m.base-arm-none-eabi             -verify-machineinstrs -filetype=obj | llvm-objdump --no-print-imm-hex --triple=thumbv8m.base-arm-none-eabi -d - > %t11;RUN: cat %t | FileCheck %s --check-prefix=THUMB112;RUN: cat %t | FileCheck %s --check-prefix=T1POST13;RUN: cat %t | FileCheck %s --check-prefix=V8MBASE14 15;This file contains auto generated tests for the lowering of passing structs16;byval in the arm backend. We have tests for both packed and unpacked17;structs at varying alignments. Each test is run for arm, thumb2 and thumb1.18;We check for the strings in the generated object code using llvm-objdump19;because it provides better assurance that we are generating instructions20;for the correct architecture. Otherwise we could accidentally generate an21;ARM instruction for THUMB1 and wouldn't detect it because the assembly22;code representation is the same, but the object code would be generated23;incorrectly. For each test we check for the label, a load instruction of the24;correct form, a branch if it will be generated with a loop, and the leftover25;cleanup if the number of bytes does not divide evenly by the store size26 27%struct.A = type <{ [ 10 x i32 ] }> ; 40 bytes28declare void @use_A(ptr byval(%struct.A))29%struct.B = type <{ [ 10 x i32 ], i8 }> ; 41 bytes30declare void @use_B(ptr byval(%struct.B))31%struct.C = type <{ [ 10 x i32 ], [ 3 x i8 ] }> ; 43 bytes32declare void @use_C(ptr byval(%struct.C))33%struct.D = type <{ [ 100 x i32 ] }> ; 400 bytes34declare void @use_D(ptr byval(%struct.D))35%struct.E = type <{ [ 100 x i32 ], i8 }> ; 401 bytes36declare void @use_E(ptr byval(%struct.E))37%struct.F = type <{ [ 100 x i32 ], [ 3 x i8 ] }> ; 403 bytes38declare void @use_F(ptr byval(%struct.F))39%struct.G = type  { [ 10 x i32 ] }  ; 40 bytes40declare void @use_G(ptr byval(%struct.G))41%struct.H = type  { [ 10 x i32 ], i8 }  ; 41 bytes42declare void @use_H(ptr byval(%struct.H))43%struct.I = type  { [ 10 x i32 ], [ 3 x i8 ] }  ; 43 bytes44declare void @use_I(ptr byval(%struct.I))45%struct.J = type  { [ 100 x i32 ] }  ; 400 bytes46declare void @use_J(ptr byval(%struct.J))47%struct.K = type  { [ 100 x i32 ], i8 }  ; 401 bytes48declare void @use_K(ptr byval(%struct.K))49%struct.L = type  { [ 100 x i32 ], [ 3 x i8 ] }  ; 403 bytes50declare void @use_L(ptr byval(%struct.L))51%struct.M = type  { [  64 x i8 ] }   ; 64 bytes52declare void @use_M(ptr byval(%struct.M))53%struct.N = type  { [ 128 x i8 ] }  ; 128 bytes54declare void @use_N(ptr byval(%struct.N))55 56;ARM-LABEL:    <test_A_1>:57;THUMB2-LABEL: <test_A_1>:58;NO_NEON-LABEL:<test_A_1>:59;THUMB1-LABEL: <test_A_1>:60;T1POST-LABEL: <test_A_1>:61  define void @test_A_1() {62;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #163 64;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #165 66;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #167 68;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]69;THUMB1:      adds    [[BASE]], #170 71;T1POST-NOT:  ldrb    r{{[0-9]+}}, [{{.*}}], #172  entry:73    %a = alloca %struct.A, align 174    call void @use_A(ptr byval(%struct.A) align 1 %a)75    ret void76  }77;ARM-LABEL:    <test_A_2>:78;THUMB2-LABEL: <test_A_2>:79;NO_NEON-LABEL:<test_A_2>:80;THUMB1-LABEL: <test_A_2>:81;T1POST-LABEL: <test_A_2>:82  define void @test_A_2() {83;ARM:         ldrh    r{{[0-9]+}}, [{{.*}}], #284 85;THUMB2:      ldrh    r{{[0-9]+}}, [{{.*}}], #286 87;NO_NEON:     ldrh    r{{[0-9]+}}, [{{.*}}], #288 89;THUMB1:      ldrh    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]90;THUMB1:      adds    [[BASE]], #291 92;T1POST-NOT:  ldrh    r{{[0-9]+}}, [{{.*}}], #293  entry:94    %a = alloca %struct.A, align 295    call void @use_A(ptr byval(%struct.A) align 2 %a)96    ret void97  }98;ARM-LABEL:    <test_A_4>:99;THUMB2-LABEL: <test_A_4>:100;NO_NEON-LABEL:<test_A_4>:101;THUMB1-LABEL: <test_A_4>:102;T1POST-LABEL: <test_A_4>:103  define void @test_A_4() {104;ARM:         ldr     r{{[0-9]+}}, [{{.*}}], #4105 106;THUMB2:      ldr     r{{[0-9]+}}, [{{.*}}], #4107 108;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4109 110;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]111;THUMB1:      adds    [[BASE]], #4112 113;T1POST-NOT:  ldr     r{{[0-9]+}}, [{{.*}}], #4114  entry:115    %a = alloca %struct.A, align 4116    call void @use_A(ptr byval(%struct.A) align 4 %a)117    ret void118  }119;ARM-LABEL:    <test_A_8>:120;THUMB2-LABEL: <test_A_8>:121;NO_NEON-LABEL:<test_A_8>:122;THUMB1-LABEL: <test_A_8>:123;T1POST-LABEL: <test_A_8>:124  define void @test_A_8() {125;ARM:         vld1.32 {d{{[0-9]+}}}, [{{.*}}]!126 127;THUMB2:      vld1.32 {d{{[0-9]+}}}, [{{.*}}]!128 129;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4130;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}}, [{{.*}}]!131 132;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]133;THUMB1:      adds    [[BASE]], #4134 135;T1POST-NOT:  vld1.32 {d{{[0-9]+}}}, [{{.*}}]!136  entry:137    %a = alloca %struct.A, align 8138    call void @use_A(ptr byval(%struct.A) align 8 %a)139    ret void140  }141;ARM-LABEL:    <test_A_16>:142;THUMB2-LABEL: <test_A_16>:143;NO_NEON-LABEL:<test_A_16>:144;THUMB1-LABEL: <test_A_16>:145;T1POST-LABEL: <test_A_16>:146  define void @test_A_16() {147;ARM:         vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!148;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1149 150;THUMB2:      vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!151;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1152 153;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4154;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!155 156;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]157;THUMB1:      adds    [[BASE]], #4158 159;T1POST-NOT:  vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!160  entry:161    %a = alloca %struct.A, align 16162    call void @use_A(ptr byval(%struct.A) align 16 %a)163    ret void164  }165;ARM-LABEL:    <test_B_1>:166;THUMB2-LABEL: <test_B_1>:167;NO_NEON-LABEL:<test_B_1>:168;THUMB1-LABEL: <test_B_1>:169;T1POST-LABEL: <test_B_1>:170  define void @test_B_1() {171;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1172 173;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1174 175;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1176 177;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]178;THUMB1:      adds    [[BASE]], #1179 180;T1POST-NOT:  ldrb    r{{[0-9]+}}, [{{.*}}], #1181  entry:182    %a = alloca %struct.B, align 1183    call void @use_B(ptr byval(%struct.B) align 1 %a)184    ret void185  }186;ARM-LABEL:    <test_B_2>:187;THUMB2-LABEL: <test_B_2>:188;NO_NEON-LABEL:<test_B_2>:189;THUMB1-LABEL: <test_B_2>:190;T1POST-LABEL: <test_B_2>:191  define void @test_B_2() {192;ARM:         ldrh    r{{[0-9]+}}, [{{.*}}], #2193;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1194 195;THUMB2:      ldrh    r{{[0-9]+}}, [{{.*}}], #2196;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1197 198;NO_NEON:     ldrh    r{{[0-9]+}}, [{{.*}}], #2199;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1200 201;THUMB1:      ldrh    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]202;THUMB1:      adds    [[BASE]], #2203;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]204 205;T1POST-NOT:  ldrh    r{{[0-9]+}}, [{{.*}}], #2206  entry:207    %a = alloca %struct.B, align 2208    call void @use_B(ptr byval(%struct.B) align 2 %a)209    ret void210  }211;ARM-LABEL:    <test_B_4>:212;THUMB2-LABEL: <test_B_4>:213;NO_NEON-LABEL:<test_B_4>:214;THUMB1-LABEL: <test_B_4>:215;T1POST-LABEL: <test_B_4>:216  define void @test_B_4() {217;ARM:         ldr     r{{[0-9]+}}, [{{.*}}], #4218;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1219 220;THUMB2:      ldr     r{{[0-9]+}}, [{{.*}}], #4221;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1222 223;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4224;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1225 226;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]227;THUMB1:      adds    [[BASE]], #4228;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]229 230;T1POST-NOT:  ldr     r{{[0-9]+}}, [{{.*}}], #4231  entry:232    %a = alloca %struct.B, align 4233    call void @use_B(ptr byval(%struct.B) align 4 %a)234    ret void235  }236;ARM-LABEL:    <test_B_8>:237;THUMB2-LABEL: <test_B_8>:238;NO_NEON-LABEL:<test_B_8>:239;THUMB1-LABEL: <test_B_8>:240;T1POST-LABEL: <test_B_8>:241  define void @test_B_8() {242;ARM:         vld1.32 {d{{[0-9]+}}}, [{{.*}}]!243;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1244 245;THUMB2:      vld1.32 {d{{[0-9]+}}}, [{{.*}}]!246;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1247 248;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4249;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1250;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}}, [{{.*}}]!251 252;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]253;THUMB1:      adds    [[BASE]], #4254;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]255 256;T1POST-NOT:  vld1.32 {d{{[0-9]+}}}, [{{.*}}]!257  entry:258    %a = alloca %struct.B, align 8259    call void @use_B(ptr byval(%struct.B) align 8 %a)260    ret void261  }262;ARM-LABEL:    <test_B_16>:263;THUMB2-LABEL: <test_B_16>:264;NO_NEON-LABEL:<test_B_16>:265;THUMB1-LABEL: <test_B_16>:266;T1POST-LABEL: <test_B_16>:267  define void @test_B_16() {268;ARM:         vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!269;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1270 271;THUMB2:      vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!272;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1273 274;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4275;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1276;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!277 278;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]279;THUMB1:      adds    [[BASE]], #4280;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]281 282;T1POST-NOT:  vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!283  entry:284    %a = alloca %struct.B, align 16285    call void @use_B(ptr byval(%struct.B) align 16 %a)286    ret void287  }288;ARM-LABEL:    <test_C_1>:289;THUMB2-LABEL: <test_C_1>:290;NO_NEON-LABEL:<test_C_1>:291;THUMB1-LABEL: <test_C_1>:292;T1POST-LABEL: <test_C_1>:293  define void @test_C_1() {294;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1295 296;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1297 298;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1299 300;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]301;THUMB1:      adds    [[BASE]], #1302 303;T1POST-NOT:  ldrb    r{{[0-9]+}}, [{{.*}}], #1304  entry:305    %a = alloca %struct.C, align 1306    call void @use_C(ptr byval(%struct.C) align 1 %a)307    ret void308  }309;ARM-LABEL:    <test_C_2>:310;THUMB2-LABEL: <test_C_2>:311;NO_NEON-LABEL:<test_C_2>:312;THUMB1-LABEL: <test_C_2>:313;T1POST-LABEL: <test_C_2>:314  define void @test_C_2() {315;ARM:         ldrh    r{{[0-9]+}}, [{{.*}}], #2316;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1317 318;THUMB2:      ldrh    r{{[0-9]+}}, [{{.*}}], #2319;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1320 321;NO_NEON:     ldrh    r{{[0-9]+}}, [{{.*}}], #2322;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1323 324;THUMB1:      ldrh    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]325;THUMB1:      adds    [[BASE]], #2326;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]327 328;T1POST-NOT:  ldrh    r{{[0-9]+}}, [{{.*}}], #2329  entry:330    %a = alloca %struct.C, align 2331    call void @use_C(ptr byval(%struct.C) align 2 %a)332    ret void333  }334;ARM-LABEL:    <test_C_4>:335;THUMB2-LABEL: <test_C_4>:336;NO_NEON-LABEL:<test_C_4>:337;THUMB1-LABEL: <test_C_4>:338;T1POST-LABEL: <test_C_4>:339  define void @test_C_4() {340;ARM:         ldr     r{{[0-9]+}}, [{{.*}}], #4341;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1342 343;THUMB2:      ldr     r{{[0-9]+}}, [{{.*}}], #4344;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1345 346;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4347;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1348 349;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]350;THUMB1:      adds    [[BASE]], #4351;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]352;THUMB1:      adds    [[BASE]], #1353 354;T1POST-NOT:  ldr     r{{[0-9]+}}, [{{.*}}], #4355  entry:356    %a = alloca %struct.C, align 4357    call void @use_C(ptr byval(%struct.C) align 4 %a)358    ret void359  }360;ARM-LABEL:    <test_C_8>:361;THUMB2-LABEL: <test_C_8>:362;NO_NEON-LABEL:<test_C_8>:363;THUMB1-LABEL: <test_C_8>:364;T1POST-LABEL: <test_C_8>:365  define void @test_C_8() {366;ARM:         vld1.32 {d{{[0-9]+}}}, [{{.*}}]!367;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1368 369;THUMB2:      vld1.32 {d{{[0-9]+}}}, [{{.*}}]!370;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1371 372;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4373;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1374;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}}, [{{.*}}]!375 376;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]377;THUMB1:      adds    [[BASE]], #4378;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]379;THUMB1:      adds    [[BASE]], #1380 381;T1POST-NOT:  vld1.32 {d{{[0-9]+}}}, [{{.*}}]!382  entry:383    %a = alloca %struct.C, align 8384    call void @use_C(ptr byval(%struct.C) align 8 %a)385    ret void386  }387;ARM-LABEL:    <test_C_16>:388;THUMB2-LABEL: <test_C_16>:389;NO_NEON-LABEL:<test_C_16>:390;THUMB1-LABEL: <test_C_16>:391;T1POST-LABEL: <test_C_16>:392  define void @test_C_16() {393;ARM:         vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!394;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1395 396;THUMB2:      vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!397;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1398 399;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4400;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1401;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!402 403;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]404;THUMB1:      adds    [[BASE]], #4405;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]406;THUMB1:      adds    [[BASE]], #1407 408;T1POST-NOT:  vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!409  entry:410    %a = alloca %struct.C, align 16411    call void @use_C(ptr byval(%struct.C) align 16 %a)412    ret void413  }414;ARM-LABEL:    <test_D_1>:415;THUMB2-LABEL: <test_D_1>:416;NO_NEON-LABEL:<test_D_1>:417;THUMB1-LABEL: <test_D_1>:418;T1POST-LABEL: <test_D_1>:419  define void @test_D_1() {420;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1421;ARM:         bne422 423;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1424;THUMB2:      bne425 426;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1427;NO_NEON:     bne428 429;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]430;THUMB1:      adds    [[BASE]], #1431;THUMB1:      bne432 433;T1POST-NOT:  ldrb    r{{[0-9]+}}, [{{.*}}], #1434  entry:435    %a = alloca %struct.D, align 1436    call void @use_D(ptr byval(%struct.D) align 1 %a)437    ret void438  }439;ARM-LABEL:    <test_D_2>:440;THUMB2-LABEL: <test_D_2>:441;NO_NEON-LABEL:<test_D_2>:442;THUMB1-LABEL: <test_D_2>:443;T1POST-LABEL: <test_D_2>:444  define void @test_D_2() {445;ARM:         ldrh    r{{[0-9]+}}, [{{.*}}], #2446;ARM:         bne447 448;THUMB2:      ldrh    r{{[0-9]+}}, [{{.*}}], #2449;THUMB2:      bne450 451;NO_NEON:     ldrh    r{{[0-9]+}}, [{{.*}}], #2452;NO_NEON:     bne453 454;THUMB1:      ldrh    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]455;THUMB1:      adds    [[BASE]], #2456;THUMB1:      bne457 458;T1POST-NOT:  ldrh    r{{[0-9]+}}, [{{.*}}], #2459  entry:460    %a = alloca %struct.D, align 2461    call void @use_D(ptr byval(%struct.D) align 2 %a)462    ret void463  }464;ARM-LABEL:    <test_D_4>:465;THUMB2-LABEL: <test_D_4>:466;NO_NEON-LABEL:<test_D_4>:467;THUMB1-LABEL: <test_D_4>:468;T1POST-LABEL: <test_D_4>:469  define void @test_D_4() {470;ARM:         ldr     r{{[0-9]+}}, [{{.*}}], #4471;ARM:         bne472 473;THUMB2:      ldr     r{{[0-9]+}}, [{{.*}}], #4474;THUMB2:      bne475 476;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4477;NO_NEON:     bne478 479;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]480;THUMB1:      adds    [[BASE]], #4481;THUMB1:      bne482 483;T1POST-NOT:  ldr     r{{[0-9]+}}, [{{.*}}], #4484  entry:485    %a = alloca %struct.D, align 4486    call void @use_D(ptr byval(%struct.D) align 4 %a)487    ret void488  }489;ARM-LABEL:    <test_D_8>:490;THUMB2-LABEL: <test_D_8>:491;NO_NEON-LABEL:<test_D_8>:492;THUMB1-LABEL: <test_D_8>:493;T1POST-LABEL: <test_D_8>:494  define void @test_D_8() {495;ARM:         vld1.32 {d{{[0-9]+}}}, [{{.*}}]!496;ARM:         bne497 498;THUMB2:      vld1.32 {d{{[0-9]+}}}, [{{.*}}]!499;THUMB2:      bne500 501;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4502;NO_NEON:     bne503;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}}, [{{.*}}]!504 505;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]506;THUMB1:      adds    [[BASE]], #4507;THUMB1:      bne508 509;T1POST-NOT:  vld1.32 {d{{[0-9]+}}}, [{{.*}}]!510  entry:511    %a = alloca %struct.D, align 8512    call void @use_D(ptr byval(%struct.D) align 8 %a)513    ret void514  }515;ARM-LABEL:    <test_D_16>:516;THUMB2-LABEL: <test_D_16>:517;NO_NEON-LABEL:<test_D_16>:518;THUMB1-LABEL: <test_D_16>:519;T1POST-LABEL: <test_D_16>:520  define void @test_D_16() {521;ARM:         vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!522;ARM:         bne523 524;THUMB2:      vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!525;THUMB2:      bne526 527;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4528;NO_NEON:     bne529;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!530 531;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]532;THUMB1:      adds    [[BASE]], #4533;THUMB1:      bne534 535;T1POST-NOT:  vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!536  entry:537    %a = alloca %struct.D, align 16538    call void @use_D(ptr byval(%struct.D) align 16 %a)539    ret void540  }541;ARM-LABEL:    <test_E_1>:542;THUMB2-LABEL: <test_E_1>:543;NO_NEON-LABEL:<test_E_1>:544;THUMB1-LABEL: <test_E_1>:545;T1POST-LABEL: <test_E_1>:546  define void @test_E_1() {547;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1548;ARM:         bne549 550;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1551;THUMB2:      bne552 553;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1554;NO_NEON:     bne555 556;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]557;THUMB1:      adds    [[BASE]], #1558;THUMB1:      bne559 560;T1POST-NOT:  ldrb    r{{[0-9]+}}, [{{.*}}], #1561  entry:562    %a = alloca %struct.E, align 1563    call void @use_E(ptr byval(%struct.E) align 1 %a)564    ret void565  }566;ARM-LABEL:    <test_E_2>:567;THUMB2-LABEL: <test_E_2>:568;NO_NEON-LABEL:<test_E_2>:569;THUMB1-LABEL: <test_E_2>:570;T1POST-LABEL: <test_E_2>:571  define void @test_E_2() {572;ARM:         ldrh    r{{[0-9]+}}, [{{.*}}], #2573;ARM:         bne574;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1575 576;THUMB2:      ldrh    r{{[0-9]+}}, [{{.*}}], #2577;THUMB2:      bne578;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1579 580;NO_NEON:     ldrh    r{{[0-9]+}}, [{{.*}}], #2581;NO_NEON:     bne582;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1583 584;THUMB1:      ldrh    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]585;THUMB1:      adds    [[BASE]], #2586;THUMB1:      bne587;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]588 589;T1POST-NOT:  ldrh    r{{[0-9]+}}, [{{.*}}], #2590  entry:591    %a = alloca %struct.E, align 2592    call void @use_E(ptr byval(%struct.E) align 2 %a)593    ret void594  }595;ARM-LABEL:    <test_E_4>:596;THUMB2-LABEL: <test_E_4>:597;NO_NEON-LABEL:<test_E_4>:598;THUMB1-LABEL: <test_E_4>:599;T1POST-LABEL: <test_E_4>:600  define void @test_E_4() {601;ARM:         ldr     r{{[0-9]+}}, [{{.*}}], #4602;ARM:         bne603;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1604 605;THUMB2:      ldr     r{{[0-9]+}}, [{{.*}}], #4606;THUMB2:      bne607;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1608 609;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4610;NO_NEON:     bne611;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1612 613;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]614;THUMB1:      adds    [[BASE]], #4615;THUMB1:      bne616;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]617 618;T1POST-NOT:  ldr     r{{[0-9]+}}, [{{.*}}], #4619  entry:620    %a = alloca %struct.E, align 4621    call void @use_E(ptr byval(%struct.E) align 4 %a)622    ret void623  }624;ARM-LABEL:    <test_E_8>:625;THUMB2-LABEL: <test_E_8>:626;NO_NEON-LABEL:<test_E_8>:627;THUMB1-LABEL: <test_E_8>:628;T1POST-LABEL: <test_E_8>:629  define void @test_E_8() {630;ARM:         vld1.32 {d{{[0-9]+}}}, [{{.*}}]!631;ARM:         bne632;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1633 634;THUMB2:      vld1.32 {d{{[0-9]+}}}, [{{.*}}]!635;THUMB2:      bne636;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1637 638;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4639;NO_NEON:     bne640;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1641;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}}, [{{.*}}]!642 643;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]644;THUMB1:      adds    [[BASE]], #4645;THUMB1:      bne646;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]647 648;T1POST-NOT:  vld1.32 {d{{[0-9]+}}}, [{{.*}}]!649  entry:650    %a = alloca %struct.E, align 8651    call void @use_E(ptr byval(%struct.E) align 8 %a)652    ret void653  }654;ARM-LABEL:    <test_E_16>:655;THUMB2-LABEL: <test_E_16>:656;NO_NEON-LABEL:<test_E_16>:657;THUMB1-LABEL: <test_E_16>:658;T1POST-LABEL: <test_E_16>:659  define void @test_E_16() {660;ARM:         vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!661;ARM:         bne662;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1663 664;THUMB2:      vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!665;THUMB2:      bne666;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1667 668;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4669;NO_NEON:     bne670;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1671;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!672 673;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]674;THUMB1:      adds    [[BASE]], #4675;THUMB1:      bne676;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]677 678;T1POST-NOT:  vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!679  entry:680    %a = alloca %struct.E, align 16681    call void @use_E(ptr byval(%struct.E) align 16 %a)682    ret void683  }684;ARM-LABEL:    <test_F_1>:685;THUMB2-LABEL: <test_F_1>:686;NO_NEON-LABEL:<test_F_1>:687;THUMB1-LABEL: <test_F_1>:688;T1POST-LABEL: <test_F_1>:689  define void @test_F_1() {690;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1691;ARM:         bne692 693;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1694;THUMB2:      bne695 696;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1697;NO_NEON:     bne698 699;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]700;THUMB1:      adds    [[BASE]], #1701;THUMB1:      bne702 703;T1POST-NOT:  ldrb    r{{[0-9]+}}, [{{.*}}], #1704  entry:705    %a = alloca %struct.F, align 1706    call void @use_F(ptr byval(%struct.F) align 1 %a)707    ret void708  }709;ARM-LABEL:    <test_F_2>:710;THUMB2-LABEL: <test_F_2>:711;NO_NEON-LABEL:<test_F_2>:712;THUMB1-LABEL: <test_F_2>:713;T1POST-LABEL: <test_F_2>:714  define void @test_F_2() {715;ARM:         ldrh    r{{[0-9]+}}, [{{.*}}], #2716;ARM:         bne717;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1718 719;THUMB2:      ldrh    r{{[0-9]+}}, [{{.*}}], #2720;THUMB2:      bne721;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1722 723;NO_NEON:     ldrh    r{{[0-9]+}}, [{{.*}}], #2724;NO_NEON:     bne725;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1726 727;THUMB1:      ldrh    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]728;THUMB1:      adds    [[BASE]], #2729;THUMB1:      bne730;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]731 732;T1POST-NOT:  ldrh    r{{[0-9]+}}, [{{.*}}], #2733  entry:734    %a = alloca %struct.F, align 2735    call void @use_F(ptr byval(%struct.F) align 2 %a)736    ret void737  }738;ARM-LABEL:    <test_F_4>:739;THUMB2-LABEL: <test_F_4>:740;NO_NEON-LABEL:<test_F_4>:741;THUMB1-LABEL: <test_F_4>:742;T1POST-LABEL: <test_F_4>:743  define void @test_F_4() {744;ARM:         ldr     r{{[0-9]+}}, [{{.*}}], #4745;ARM:         bne746;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1747 748;THUMB2:      ldr     r{{[0-9]+}}, [{{.*}}], #4749;THUMB2:      bne750;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1751 752;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4753;NO_NEON:     bne754;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1755 756;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]757;THUMB1:      adds    [[BASE]], #4758;THUMB1:      bne759;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]760;THUMB1:      adds    [[BASE]], #1761 762;T1POST-NOT:  ldr     r{{[0-9]+}}, [{{.*}}], #4763  entry:764    %a = alloca %struct.F, align 4765    call void @use_F(ptr byval(%struct.F) align 4 %a)766    ret void767  }768;ARM-LABEL:    <test_F_8>:769;THUMB2-LABEL: <test_F_8>:770;NO_NEON-LABEL:<test_F_8>:771;THUMB1-LABEL: <test_F_8>:772;T1POST-LABEL: <test_F_8>:773  define void @test_F_8() {774;ARM:         vld1.32 {d{{[0-9]+}}}, [{{.*}}]!775;ARM:         bne776;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1777 778;THUMB2:      vld1.32 {d{{[0-9]+}}}, [{{.*}}]!779;THUMB2:      bne780;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1781 782;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4783;NO_NEON:     bne784;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1785;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}}, [{{.*}}]!786 787;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]788;THUMB1:      adds    [[BASE]], #4789;THUMB1:      bne790;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]791;THUMB1:      adds    [[BASE]], #1792 793;T1POST-NOT:  vld1.32 {d{{[0-9]+}}}, [{{.*}}]!794  entry:795    %a = alloca %struct.F, align 8796    call void @use_F(ptr byval(%struct.F) align 8 %a)797    ret void798  }799;ARM-LABEL:    <test_F_16>:800;THUMB2-LABEL: <test_F_16>:801;NO_NEON-LABEL:<test_F_16>:802;THUMB1-LABEL: <test_F_16>:803;T1POST-LABEL: <test_F_16>:804  define void @test_F_16() {805;ARM:         vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!806;ARM:         bne807;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1808 809;THUMB2:      vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!810;THUMB2:      bne811;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1812 813;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4814;NO_NEON:     bne815;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1816;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!817 818;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]819;THUMB1:      adds    [[BASE]], #4820;THUMB1:      bne821;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]822;THUMB1:      adds    [[BASE]], #1823 824;T1POST-NOT:  vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!825  entry:826    %a = alloca %struct.F, align 16827    call void @use_F(ptr byval(%struct.F) align 16 %a)828    ret void829  }830;ARM-LABEL:    <test_G_1>:831;THUMB2-LABEL: <test_G_1>:832;NO_NEON-LABEL:<test_G_1>:833;THUMB1-LABEL: <test_G_1>:834;T1POST-LABEL: <test_G_1>:835  define void @test_G_1() {836;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1837 838;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1839 840;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1841 842;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]843;THUMB1:      adds    [[BASE]], #1844 845;T1POST-NOT:  ldrb    r{{[0-9]+}}, [{{.*}}], #1846  entry:847    %a = alloca %struct.G, align 1848    call void @use_G(ptr byval(%struct.G) align 1 %a)849    ret void850  }851;ARM-LABEL:    <test_G_2>:852;THUMB2-LABEL: <test_G_2>:853;NO_NEON-LABEL:<test_G_2>:854;THUMB1-LABEL: <test_G_2>:855;T1POST-LABEL: <test_G_2>:856  define void @test_G_2() {857;ARM:         ldrh    r{{[0-9]+}}, [{{.*}}], #2858 859;THUMB2:      ldrh    r{{[0-9]+}}, [{{.*}}], #2860 861;NO_NEON:     ldrh    r{{[0-9]+}}, [{{.*}}], #2862 863;THUMB1:      ldrh    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]864;THUMB1:      adds    [[BASE]], #2865 866;T1POST-NOT:  ldrh    r{{[0-9]+}}, [{{.*}}], #2867  entry:868    %a = alloca %struct.G, align 2869    call void @use_G(ptr byval(%struct.G) align 2 %a)870    ret void871  }872;ARM-LABEL:    <test_G_4>:873;THUMB2-LABEL: <test_G_4>:874;NO_NEON-LABEL:<test_G_4>:875;THUMB1-LABEL: <test_G_4>:876;T1POST-LABEL: <test_G_4>:877  define void @test_G_4() {878;ARM:         ldr     r{{[0-9]+}}, [{{.*}}], #4879 880;THUMB2:      ldr     r{{[0-9]+}}, [{{.*}}], #4881 882;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4883 884;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]885;THUMB1:      adds    [[BASE]], #4886 887;T1POST-NOT:  ldr     r{{[0-9]+}}, [{{.*}}], #4888  entry:889    %a = alloca %struct.G, align 4890    call void @use_G(ptr byval(%struct.G) align 4 %a)891    ret void892  }893;ARM-LABEL:    <test_G_8>:894;THUMB2-LABEL: <test_G_8>:895;NO_NEON-LABEL:<test_G_8>:896;THUMB1-LABEL: <test_G_8>:897;T1POST-LABEL: <test_G_8>:898  define void @test_G_8() {899;ARM:         vld1.32 {d{{[0-9]+}}}, [{{.*}}]!900 901;THUMB2:      vld1.32 {d{{[0-9]+}}}, [{{.*}}]!902 903;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4904;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}}, [{{.*}}]!905 906;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]907;THUMB1:      adds    [[BASE]], #4908 909;T1POST-NOT:  vld1.32 {d{{[0-9]+}}}, [{{.*}}]!910  entry:911    %a = alloca %struct.G, align 8912    call void @use_G(ptr byval(%struct.G) align 8 %a)913    ret void914  }915;ARM-LABEL:    <test_G_16>:916;THUMB2-LABEL: <test_G_16>:917;NO_NEON-LABEL:<test_G_16>:918;THUMB1-LABEL: <test_G_16>:919;T1POST-LABEL: <test_G_16>:920  define void @test_G_16() {921;ARM:         vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!922 923;THUMB2:      vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!924 925;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4926;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!927 928;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]929;THUMB1:      adds    [[BASE]], #4930 931;T1POST-NOT:  vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!932  entry:933    %a = alloca %struct.G, align 16934    call void @use_G(ptr byval(%struct.G) align 16 %a)935    ret void936  }937;ARM-LABEL:    <test_H_1>:938;THUMB2-LABEL: <test_H_1>:939;NO_NEON-LABEL:<test_H_1>:940;THUMB1-LABEL: <test_H_1>:941;T1POST-LABEL: <test_H_1>:942  define void @test_H_1() {943;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #1944 945;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #1946 947;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #1948 949;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]950;THUMB1:      adds    [[BASE]], #1951 952;T1POST-NOT:  ldrb    r{{[0-9]+}}, [{{.*}}], #1953  entry:954    %a = alloca %struct.H, align 1955    call void @use_H(ptr byval(%struct.H) align 1 %a)956    ret void957  }958;ARM-LABEL:    <test_H_2>:959;THUMB2-LABEL: <test_H_2>:960;NO_NEON-LABEL:<test_H_2>:961;THUMB1-LABEL: <test_H_2>:962;T1POST-LABEL: <test_H_2>:963  define void @test_H_2() {964;ARM:         ldrh    r{{[0-9]+}}, [{{.*}}], #2965 966;THUMB2:      ldrh    r{{[0-9]+}}, [{{.*}}], #2967 968;NO_NEON:     ldrh    r{{[0-9]+}}, [{{.*}}], #2969 970;THUMB1:      ldrh    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]971;THUMB1:      adds    [[BASE]], #2972 973;T1POST-NOT:  ldrh    r{{[0-9]+}}, [{{.*}}], #2974  entry:975    %a = alloca %struct.H, align 2976    call void @use_H(ptr byval(%struct.H) align 2 %a)977    ret void978  }979;ARM-LABEL:    <test_H_4>:980;THUMB2-LABEL: <test_H_4>:981;NO_NEON-LABEL:<test_H_4>:982;THUMB1-LABEL: <test_H_4>:983;T1POST-LABEL: <test_H_4>:984  define void @test_H_4() {985;ARM:         ldr     r{{[0-9]+}}, [{{.*}}], #4986 987;THUMB2:      ldr     r{{[0-9]+}}, [{{.*}}], #4988 989;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #4990 991;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]992;THUMB1:      adds    [[BASE]], #4993 994;T1POST-NOT:  ldr     r{{[0-9]+}}, [{{.*}}], #4995  entry:996    %a = alloca %struct.H, align 4997    call void @use_H(ptr byval(%struct.H) align 4 %a)998    ret void999  }1000;ARM-LABEL:    <test_H_8>:1001;THUMB2-LABEL: <test_H_8>:1002;NO_NEON-LABEL:<test_H_8>:1003;THUMB1-LABEL: <test_H_8>:1004;T1POST-LABEL: <test_H_8>:1005  define void @test_H_8() {1006;ARM:         vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1007 1008;THUMB2:      vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1009 1010;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #41011;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1012 1013;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1014;THUMB1:      adds    [[BASE]], #41015 1016;T1POST-NOT:  vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1017  entry:1018    %a = alloca %struct.H, align 81019    call void @use_H(ptr byval(%struct.H) align 8 %a)1020    ret void1021  }1022;ARM-LABEL:    <test_H_16>:1023;THUMB2-LABEL: <test_H_16>:1024;NO_NEON-LABEL:<test_H_16>:1025;THUMB1-LABEL: <test_H_16>:1026;T1POST-LABEL: <test_H_16>:1027  define void @test_H_16() {1028;ARM:         vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1029 1030;THUMB2:      vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1031 1032;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #41033;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1034 1035;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1036;THUMB1:      adds    [[BASE]], #41037 1038;T1POST-NOT:  vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1039  entry:1040    %a = alloca %struct.H, align 161041    call void @use_H(ptr byval(%struct.H) align 16 %a)1042    ret void1043  }1044;ARM-LABEL:    <test_I_1>:1045;THUMB2-LABEL: <test_I_1>:1046;NO_NEON-LABEL:<test_I_1>:1047;THUMB1-LABEL: <test_I_1>:1048;T1POST-LABEL: <test_I_1>:1049  define void @test_I_1() {1050;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #11051 1052;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #11053 1054;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #11055 1056;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1057;THUMB1:      adds    [[BASE]], #11058 1059;T1POST-NOT:  ldrb    r{{[0-9]+}}, [{{.*}}], #11060  entry:1061    %a = alloca %struct.I, align 11062    call void @use_I(ptr byval(%struct.I) align 1 %a)1063    ret void1064  }1065;ARM-LABEL:    <test_I_2>:1066;THUMB2-LABEL: <test_I_2>:1067;NO_NEON-LABEL:<test_I_2>:1068;THUMB1-LABEL: <test_I_2>:1069;T1POST-LABEL: <test_I_2>:1070  define void @test_I_2() {1071;ARM:         ldrh    r{{[0-9]+}}, [{{.*}}], #21072 1073;THUMB2:      ldrh    r{{[0-9]+}}, [{{.*}}], #21074 1075;NO_NEON:     ldrh    r{{[0-9]+}}, [{{.*}}], #21076 1077;THUMB1:      ldrh    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1078;THUMB1:      adds    [[BASE]], #21079 1080;T1POST-NOT:  ldrh    r{{[0-9]+}}, [{{.*}}], #21081  entry:1082    %a = alloca %struct.I, align 21083    call void @use_I(ptr byval(%struct.I) align 2 %a)1084    ret void1085  }1086;ARM-LABEL:    <test_I_4>:1087;THUMB2-LABEL: <test_I_4>:1088;NO_NEON-LABEL:<test_I_4>:1089;THUMB1-LABEL: <test_I_4>:1090;T1POST-LABEL: <test_I_4>:1091  define void @test_I_4() {1092;ARM:         ldr     r{{[0-9]+}}, [{{.*}}], #41093 1094;THUMB2:      ldr     r{{[0-9]+}}, [{{.*}}], #41095 1096;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #41097 1098;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1099;THUMB1:      adds    [[BASE]], #41100 1101;T1POST-NOT:  ldr     r{{[0-9]+}}, [{{.*}}], #41102  entry:1103    %a = alloca %struct.I, align 41104    call void @use_I(ptr byval(%struct.I) align 4 %a)1105    ret void1106  }1107;ARM-LABEL:    <test_I_8>:1108;THUMB2-LABEL: <test_I_8>:1109;NO_NEON-LABEL:<test_I_8>:1110;THUMB1-LABEL: <test_I_8>:1111;T1POST-LABEL: <test_I_8>:1112  define void @test_I_8() {1113;ARM:         vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1114 1115;THUMB2:      vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1116 1117;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #41118;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1119 1120;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1121;THUMB1:      adds    [[BASE]], #41122 1123;T1POST-NOT:  vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1124  entry:1125    %a = alloca %struct.I, align 81126    call void @use_I(ptr byval(%struct.I) align 8 %a)1127    ret void1128  }1129;ARM-LABEL:    <test_I_16>:1130;THUMB2-LABEL: <test_I_16>:1131;NO_NEON-LABEL:<test_I_16>:1132;THUMB1-LABEL: <test_I_16>:1133;T1POST-LABEL: <test_I_16>:1134  define void @test_I_16() {1135;ARM:         vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1136 1137;THUMB2:      vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1138 1139;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #41140;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1141 1142;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1143;THUMB1:      adds    [[BASE]], #41144 1145;T1POST-NOT:  vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1146  entry:1147    %a = alloca %struct.I, align 161148    call void @use_I(ptr byval(%struct.I) align 16 %a)1149    ret void1150  }1151;ARM-LABEL:    <test_J_1>:1152;THUMB2-LABEL: <test_J_1>:1153;NO_NEON-LABEL:<test_J_1>:1154;THUMB1-LABEL: <test_J_1>:1155;T1POST-LABEL: <test_J_1>:1156  define void @test_J_1() {1157;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #11158;ARM:         bne1159 1160;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #11161;THUMB2:      bne1162 1163;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #11164;NO_NEON:     bne1165 1166;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1167;THUMB1:      adds    [[BASE]], #11168;THUMB1:      bne1169 1170;T1POST-NOT:  ldrb    r{{[0-9]+}}, [{{.*}}], #11171  entry:1172    %a = alloca %struct.J, align 11173    call void @use_J(ptr byval(%struct.J) align 1 %a)1174    ret void1175  }1176;ARM-LABEL:    <test_J_2>:1177;THUMB2-LABEL: <test_J_2>:1178;NO_NEON-LABEL:<test_J_2>:1179;THUMB1-LABEL: <test_J_2>:1180;T1POST-LABEL: <test_J_2>:1181  define void @test_J_2() {1182;ARM:         ldrh    r{{[0-9]+}}, [{{.*}}], #21183;ARM:         bne1184 1185;THUMB2:      ldrh    r{{[0-9]+}}, [{{.*}}], #21186;THUMB2:      bne1187 1188;NO_NEON:     ldrh    r{{[0-9]+}}, [{{.*}}], #21189;NO_NEON:     bne1190 1191;THUMB1:      ldrh    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1192;THUMB1:      adds    [[BASE]], #21193;THUMB1:      bne1194 1195;T1POST-NOT:  ldrh    r{{[0-9]+}}, [{{.*}}], #21196  entry:1197    %a = alloca %struct.J, align 21198    call void @use_J(ptr byval(%struct.J) align 2 %a)1199    ret void1200  }1201;ARM-LABEL:    <test_J_4>:1202;THUMB2-LABEL: <test_J_4>:1203;NO_NEON-LABEL:<test_J_4>:1204;THUMB1-LABEL: <test_J_4>:1205;T1POST-LABEL: <test_J_4>:1206  define void @test_J_4() {1207;ARM:         ldr     r{{[0-9]+}}, [{{.*}}], #41208;ARM:         bne1209 1210;THUMB2:      ldr     r{{[0-9]+}}, [{{.*}}], #41211;THUMB2:      bne1212 1213;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #41214;NO_NEON:     bne1215 1216;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1217;THUMB1:      adds    [[BASE]], #41218;THUMB1:      bne1219 1220;T1POST-NOT:  ldr     r{{[0-9]+}}, [{{.*}}], #41221  entry:1222    %a = alloca %struct.J, align 41223    call void @use_J(ptr byval(%struct.J) align 4 %a)1224    ret void1225  }1226;ARM-LABEL:    <test_J_8>:1227;THUMB2-LABEL: <test_J_8>:1228;NO_NEON-LABEL:<test_J_8>:1229;THUMB1-LABEL: <test_J_8>:1230;T1POST-LABEL: <test_J_8>:1231  define void @test_J_8() {1232;ARM:         vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1233;ARM:         bne1234 1235;THUMB2:      vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1236;THUMB2:      bne1237 1238;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #41239;NO_NEON:     bne1240;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1241 1242;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1243;THUMB1:      adds    [[BASE]], #41244;THUMB1:      bne1245 1246;T1POST-NOT:  vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1247  entry:1248    %a = alloca %struct.J, align 81249    call void @use_J(ptr byval(%struct.J) align 8 %a)1250    ret void1251  }1252;ARM-LABEL:    <test_J_16>:1253;THUMB2-LABEL: <test_J_16>:1254;NO_NEON-LABEL:<test_J_16>:1255;THUMB1-LABEL: <test_J_16>:1256;T1POST-LABEL: <test_J_16>:1257  define void @test_J_16() {1258;ARM:         vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1259;ARM:         bne1260 1261;THUMB2:      vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1262;THUMB2:      bne1263 1264;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #41265;NO_NEON:     bne1266;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1267 1268;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1269;THUMB1:      adds    [[BASE]], #41270;THUMB1:      bne1271 1272;T1POST-NOT:  vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1273  entry:1274    %a = alloca %struct.J, align 161275    call void @use_J(ptr byval(%struct.J) align 16 %a)1276    ret void1277  }1278;ARM-LABEL:    <test_K_1>:1279;THUMB2-LABEL: <test_K_1>:1280;NO_NEON-LABEL:<test_K_1>:1281;THUMB1-LABEL: <test_K_1>:1282;T1POST-LABEL: <test_K_1>:1283  define void @test_K_1() {1284;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #11285;ARM:         bne1286 1287;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #11288;THUMB2:      bne1289 1290;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #11291;NO_NEON:     bne1292 1293;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1294;THUMB1:      adds    [[BASE]], #11295;THUMB1:      bne1296 1297;T1POST-NOT:  ldrb    r{{[0-9]+}}, [{{.*}}], #11298  entry:1299    %a = alloca %struct.K, align 11300    call void @use_K(ptr byval(%struct.K) align 1 %a)1301    ret void1302  }1303;ARM-LABEL:    <test_K_2>:1304;THUMB2-LABEL: <test_K_2>:1305;NO_NEON-LABEL:<test_K_2>:1306;THUMB1-LABEL: <test_K_2>:1307;T1POST-LABEL: <test_K_2>:1308  define void @test_K_2() {1309;ARM:         ldrh    r{{[0-9]+}}, [{{.*}}], #21310;ARM:         bne1311 1312;THUMB2:      ldrh    r{{[0-9]+}}, [{{.*}}], #21313;THUMB2:      bne1314 1315;NO_NEON:     ldrh    r{{[0-9]+}}, [{{.*}}], #21316;NO_NEON:     bne1317 1318;THUMB1:      ldrh    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1319;THUMB1:      adds    [[BASE]], #21320;THUMB1:      bne1321 1322;T1POST-NOT:  ldrh    r{{[0-9]+}}, [{{.*}}], #21323  entry:1324    %a = alloca %struct.K, align 21325    call void @use_K(ptr byval(%struct.K) align 2 %a)1326    ret void1327  }1328;ARM-LABEL:    <test_K_4>:1329;THUMB2-LABEL: <test_K_4>:1330;NO_NEON-LABEL:<test_K_4>:1331;THUMB1-LABEL: <test_K_4>:1332;T1POST-LABEL: <test_K_4>:1333  define void @test_K_4() {1334;ARM:         ldr     r{{[0-9]+}}, [{{.*}}], #41335;ARM:         bne1336 1337;THUMB2:      ldr     r{{[0-9]+}}, [{{.*}}], #41338;THUMB2:      bne1339 1340;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #41341;NO_NEON:     bne1342 1343;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1344;THUMB1:      adds    [[BASE]], #41345;THUMB1:      bne1346 1347;T1POST-NOT:  ldr     r{{[0-9]+}}, [{{.*}}], #41348  entry:1349    %a = alloca %struct.K, align 41350    call void @use_K(ptr byval(%struct.K) align 4 %a)1351    ret void1352  }1353;ARM-LABEL:    <test_K_8>:1354;THUMB2-LABEL: <test_K_8>:1355;NO_NEON-LABEL:<test_K_8>:1356;THUMB1-LABEL: <test_K_8>:1357;T1POST-LABEL: <test_K_8>:1358  define void @test_K_8() {1359;ARM:         vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1360;ARM:         bne1361 1362;THUMB2:      vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1363;THUMB2:      bne1364 1365;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #41366;NO_NEON:     bne1367;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1368 1369;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1370;THUMB1:      adds    [[BASE]], #41371;THUMB1:      bne1372 1373;T1POST-NOT:  vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1374  entry:1375    %a = alloca %struct.K, align 81376    call void @use_K(ptr byval(%struct.K) align 8 %a)1377    ret void1378  }1379;ARM-LABEL:    <test_K_16>:1380;THUMB2-LABEL: <test_K_16>:1381;NO_NEON-LABEL:<test_K_16>:1382;THUMB1-LABEL: <test_K_16>:1383;T1POST-LABEL: <test_K_16>:1384  define void @test_K_16() {1385;ARM:         vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1386;ARM:         bne1387 1388;THUMB2:      vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1389;THUMB2:      bne1390 1391;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #41392;NO_NEON:     bne1393;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1394 1395;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1396;THUMB1:      adds    [[BASE]], #41397;THUMB1:      bne1398 1399;T1POST-NOT:  vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1400  entry:1401    %a = alloca %struct.K, align 161402    call void @use_K(ptr byval(%struct.K) align 16 %a)1403    ret void1404  }1405;ARM-LABEL:    <test_L_1>:1406;THUMB2-LABEL: <test_L_1>:1407;NO_NEON-LABEL:<test_L_1>:1408;THUMB1-LABEL: <test_L_1>:1409;T1POST-LABEL: <test_L_1>:1410  define void @test_L_1() {1411;ARM:         ldrb    r{{[0-9]+}}, [{{.*}}], #11412;ARM:         bne1413 1414;THUMB2:      ldrb    r{{[0-9]+}}, [{{.*}}], #11415;THUMB2:      bne1416 1417;NO_NEON:     ldrb    r{{[0-9]+}}, [{{.*}}], #11418;NO_NEON:     bne1419 1420;THUMB1:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1421;THUMB1:      adds    [[BASE]], #11422;THUMB1:      bne1423 1424;T1POST-NOT:  ldrb    r{{[0-9]+}}, [{{.*}}], #11425  entry:1426    %a = alloca %struct.L, align 11427    call void @use_L(ptr byval(%struct.L) align 1 %a)1428    ret void1429  }1430;ARM-LABEL:    <test_L_2>:1431;THUMB2-LABEL: <test_L_2>:1432;NO_NEON-LABEL:<test_L_2>:1433;THUMB1-LABEL: <test_L_2>:1434;T1POST-LABEL: <test_L_2>:1435  define void @test_L_2() {1436;ARM:         ldrh    r{{[0-9]+}}, [{{.*}}], #21437;ARM:         bne1438 1439;THUMB2:      ldrh    r{{[0-9]+}}, [{{.*}}], #21440;THUMB2:      bne1441 1442;NO_NEON:     ldrh    r{{[0-9]+}}, [{{.*}}], #21443;NO_NEON:     bne1444 1445;THUMB1:      ldrh    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1446;THUMB1:      adds    [[BASE]], #21447;THUMB1:      bne1448 1449;T1POST-NOT:  ldrh    r{{[0-9]+}}, [{{.*}}], #21450  entry:1451    %a = alloca %struct.L, align 21452    call void @use_L(ptr byval(%struct.L) align 2 %a)1453    ret void1454  }1455;ARM-LABEL:    <test_L_4>:1456;THUMB2-LABEL: <test_L_4>:1457;NO_NEON-LABEL:<test_L_4>:1458;THUMB1-LABEL: <test_L_4>:1459;T1POST-LABEL: <test_L_4>:1460  define void @test_L_4() {1461;ARM:         ldr     r{{[0-9]+}}, [{{.*}}], #41462;ARM:         bne1463 1464;THUMB2:      ldr     r{{[0-9]+}}, [{{.*}}], #41465;THUMB2:      bne1466 1467;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #41468;NO_NEON:     bne1469 1470;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1471;THUMB1:      adds    [[BASE]], #41472;THUMB1:      bne1473 1474;T1POST-NOT:  ldr     r{{[0-9]+}}, [{{.*}}], #41475  entry:1476    %a = alloca %struct.L, align 41477    call void @use_L(ptr byval(%struct.L) align 4 %a)1478    ret void1479  }1480;ARM-LABEL:    <test_L_8>:1481;THUMB2-LABEL: <test_L_8>:1482;NO_NEON-LABEL:<test_L_8>:1483;THUMB1-LABEL: <test_L_8>:1484;T1POST-LABEL: <test_L_8>:1485  define void @test_L_8() {1486;ARM:         vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1487;ARM:         bne1488 1489;THUMB2:      vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1490;THUMB2:      bne1491 1492;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #41493;NO_NEON:     bne1494;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1495 1496;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1497;THUMB1:      adds    [[BASE]], #41498;THUMB1:      bne1499 1500;T1POST-NOT:  vld1.32 {d{{[0-9]+}}}, [{{.*}}]!1501  entry:1502    %a = alloca %struct.L, align 81503    call void @use_L(ptr byval(%struct.L) align 8 %a)1504    ret void1505  }1506;ARM-LABEL:    <test_L_16>:1507;THUMB2-LABEL: <test_L_16>:1508;NO_NEON-LABEL:<test_L_16>:1509;THUMB1-LABEL: <test_L_16>:1510;T1POST-LABEL: <test_L_16>:1511  define void @test_L_16() {1512;ARM:         vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1513;ARM:         bne1514 1515;THUMB2:      vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1516;THUMB2:      bne1517 1518;NO_NEON:     ldr     r{{[0-9]+}}, [{{.*}}], #41519;NO_NEON:     bne1520;NO_NEON-NOT: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1521 1522;THUMB1:      ldr     r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1523;THUMB1:      adds    [[BASE]], #41524;THUMB1:      bne1525 1526;T1POST-NOT:  vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [{{.*}}]!1527  entry:1528    %a = alloca %struct.L, align 161529    call void @use_L(ptr byval(%struct.L) align 16 %a)1530    ret void1531  }1532;V8MBASE-LABEL: <test_M>:1533  define void @test_M() {1534 1535;V8MBASE:      ldrb    r{{[0-9]+}}, [[[BASE:r[0-9]+]]]1536;V8MBASE:      adds    [[BASE]], #11537;V8MBASE-NOT:  movw1538  entry:1539    %a = alloca %struct.M, align 11540    call void @use_M(ptr byval(%struct.M) align 1 %a)1541    ret void1542  }1543;V8MBASE-LABEL: <test_N>:1544  define void @test_N() {1545 1546;V8MBASE:      movw    r{{[0-9]+}}, #{{[0-9]+}}1547;V8MBASE-NOT:  b       #{{[0-9]+}}1548  entry:1549    %a = alloca %struct.N, align 11550    call void @use_N(ptr byval(%struct.N) align 1 %a)1551    ret void1552  }1553