388 lines · plain
1;RUN: llc -mtriple=arm-eabi -mattr=+v7 -mattr=+neon %s -o - | FileCheck %s2 3;ALIGN = 14;SIZE = 645;TYPE = <8 x i8>6define void @v64_v8i8_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {7;CHECK-LABEL: v64_v8i8_1:8entry:9;CHECK: vld1.810 %v1 = load <8 x i8>, ptr %in, align 111;CHECK: vst1.812 store <8 x i8> %v1, ptr %out, align 113 ret void14}15 16 17;ALIGN = 118;SIZE = 6419;TYPE = <4 x i16>20define void @v64_v4i16_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {21;CHECK-LABEL: v64_v4i16_1:22entry:23;CHECK: vld1.824 %v1 = load <4 x i16>, ptr %in, align 125;CHECK: vst1.826 store <4 x i16> %v1, ptr %out, align 127 ret void28}29 30 31;ALIGN = 132;SIZE = 6433;TYPE = <2 x i32>34define void @v64_v2i32_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {35;CHECK-LABEL: v64_v2i32_1:36entry:37;CHECK: vld1.838 %v1 = load <2 x i32>, ptr %in, align 139;CHECK: vst1.840 store <2 x i32> %v1, ptr %out, align 141 ret void42}43 44 45;ALIGN = 146;SIZE = 6447;TYPE = <2 x float>48define void @v64_v2f32_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {49;CHECK-LABEL: v64_v2f32_1:50entry:51;CHECK: vld1.852 %v1 = load <2 x float>, ptr %in, align 153;CHECK: vst1.854 store <2 x float> %v1, ptr %out, align 155 ret void56}57 58 59;ALIGN = 160;SIZE = 12861;TYPE = <16 x i8>62define void @v128_v16i8_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {63;CHECK-LABEL: v128_v16i8_1:64entry:65;CHECK: vld1.866 %v1 = load <16 x i8>, ptr %in, align 167;CHECK: vst1.868 store <16 x i8> %v1, ptr %out, align 169 ret void70}71 72 73;ALIGN = 174;SIZE = 12875;TYPE = <8 x i16>76define void @v128_v8i16_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {77;CHECK-LABEL: v128_v8i16_1:78entry:79;CHECK: vld1.880 %v1 = load <8 x i16>, ptr %in, align 181;CHECK: vst1.882 store <8 x i16> %v1, ptr %out, align 183 ret void84}85 86 87;ALIGN = 188;SIZE = 12889;TYPE = <4 x i32>90define void @v128_v4i32_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {91;CHECK-LABEL: v128_v4i32_1:92entry:93;CHECK: vld1.894 %v1 = load <4 x i32>, ptr %in, align 195;CHECK: vst1.896 store <4 x i32> %v1, ptr %out, align 197 ret void98}99 100 101;ALIGN = 1102;SIZE = 128103;TYPE = <2 x i64>104define void @v128_v2i64_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {105;CHECK-LABEL: v128_v2i64_1:106entry:107;CHECK: vld1.8108 %v1 = load <2 x i64>, ptr %in, align 1109;CHECK: vst1.8110 store <2 x i64> %v1, ptr %out, align 1111 ret void112}113 114 115;ALIGN = 1116;SIZE = 128117;TYPE = <4 x float>118define void @v128_v4f32_1(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {119;CHECK-LABEL: v128_v4f32_1:120entry:121;CHECK: vld1.8122 %v1 = load <4 x float>, ptr %in, align 1123;CHECK: vst1.8124 store <4 x float> %v1, ptr %out, align 1125 ret void126}127 128 129;ALIGN = 2130;SIZE = 64131;TYPE = <8 x i8>132define void @v64_v8i8_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {133;CHECK-LABEL: v64_v8i8_2:134entry:135;CHECK: vld1.16136 %v1 = load <8 x i8>, ptr %in, align 2137;CHECK: vst1.16138 store <8 x i8> %v1, ptr %out, align 2139 ret void140}141 142 143;ALIGN = 2144;SIZE = 64145;TYPE = <4 x i16>146define void @v64_v4i16_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {147;CHECK-LABEL: v64_v4i16_2:148entry:149;CHECK: vld1.16150 %v1 = load <4 x i16>, ptr %in, align 2151;CHECK: vst1.16152 store <4 x i16> %v1, ptr %out, align 2153 ret void154}155 156 157;ALIGN = 2158;SIZE = 64159;TYPE = <2 x i32>160define void @v64_v2i32_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {161;CHECK-LABEL: v64_v2i32_2:162entry:163;CHECK: vld1.16164 %v1 = load <2 x i32>, ptr %in, align 2165;CHECK: vst1.16166 store <2 x i32> %v1, ptr %out, align 2167 ret void168}169 170 171;ALIGN = 2172;SIZE = 64173;TYPE = <2 x float>174define void @v64_v2f32_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {175;CHECK-LABEL: v64_v2f32_2:176entry:177;CHECK: vld1.16178 %v1 = load <2 x float>, ptr %in, align 2179;CHECK: vst1.16180 store <2 x float> %v1, ptr %out, align 2181 ret void182}183 184 185;ALIGN = 2186;SIZE = 128187;TYPE = <16 x i8>188define void @v128_v16i8_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {189;CHECK-LABEL: v128_v16i8_2:190entry:191;CHECK: vld1.16192 %v1 = load <16 x i8>, ptr %in, align 2193;CHECK: vst1.16194 store <16 x i8> %v1, ptr %out, align 2195 ret void196}197 198 199;ALIGN = 2200;SIZE = 128201;TYPE = <8 x i16>202define void @v128_v8i16_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {203;CHECK-LABEL: v128_v8i16_2:204entry:205;CHECK: vld1.16206 %v1 = load <8 x i16>, ptr %in, align 2207;CHECK: vst1.16208 store <8 x i16> %v1, ptr %out, align 2209 ret void210}211 212 213;ALIGN = 2214;SIZE = 128215;TYPE = <4 x i32>216define void @v128_v4i32_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {217;CHECK-LABEL: v128_v4i32_2:218entry:219;CHECK: vld1.16220 %v1 = load <4 x i32>, ptr %in, align 2221;CHECK: vst1.16222 store <4 x i32> %v1, ptr %out, align 2223 ret void224}225 226 227;ALIGN = 2228;SIZE = 128229;TYPE = <2 x i64>230define void @v128_v2i64_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {231;CHECK-LABEL: v128_v2i64_2:232entry:233;CHECK: vld1.16234 %v1 = load <2 x i64>, ptr %in, align 2235;CHECK: vst1.16236 store <2 x i64> %v1, ptr %out, align 2237 ret void238}239 240 241;ALIGN = 2242;SIZE = 128243;TYPE = <4 x float>244define void @v128_v4f32_2(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {245;CHECK-LABEL: v128_v4f32_2:246entry:247;CHECK: vld1.16248 %v1 = load <4 x float>, ptr %in, align 2249;CHECK: vst1.16250 store <4 x float> %v1, ptr %out, align 2251 ret void252}253 254 255;ALIGN = 4256;SIZE = 64257;TYPE = <8 x i8>258define void @v64_v8i8_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {259;CHECK-LABEL: v64_v8i8_4:260entry:261;CHECK: vldr262 %v1 = load <8 x i8>, ptr %in, align 4263;CHECK: vstr264 store <8 x i8> %v1, ptr %out, align 4265 ret void266}267 268 269;ALIGN = 4270;SIZE = 64271;TYPE = <4 x i16>272define void @v64_v4i16_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {273;CHECK-LABEL: v64_v4i16_4:274entry:275;CHECK: vldr276 %v1 = load <4 x i16>, ptr %in, align 4277;CHECK: vstr278 store <4 x i16> %v1, ptr %out, align 4279 ret void280}281 282 283;ALIGN = 4284;SIZE = 64285;TYPE = <2 x i32>286define void @v64_v2i32_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {287;CHECK-LABEL: v64_v2i32_4:288entry:289;CHECK: vldr290 %v1 = load <2 x i32>, ptr %in, align 4291;CHECK: vstr292 store <2 x i32> %v1, ptr %out, align 4293 ret void294}295 296 297;ALIGN = 4298;SIZE = 64299;TYPE = <2 x float>300define void @v64_v2f32_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {301;CHECK-LABEL: v64_v2f32_4:302entry:303;CHECK: vldr304 %v1 = load <2 x float>, ptr %in, align 4305;CHECK: vstr306 store <2 x float> %v1, ptr %out, align 4307 ret void308}309 310 311;ALIGN = 4312;SIZE = 128313;TYPE = <16 x i8>314define void @v128_v16i8_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {315;CHECK-LABEL: v128_v16i8_4:316entry:317;CHECK: vld1.32318 %v1 = load <16 x i8>, ptr %in, align 4319;CHECK: vst1.32320 store <16 x i8> %v1, ptr %out, align 4321 ret void322}323 324 325;ALIGN = 4326;SIZE = 128327;TYPE = <8 x i16>328define void @v128_v8i16_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {329;CHECK-LABEL: v128_v8i16_4:330entry:331;CHECK: vld1.32332 %v1 = load <8 x i16>, ptr %in, align 4333;CHECK: vst1.32334 store <8 x i16> %v1, ptr %out, align 4335 ret void336}337 338 339;ALIGN = 4340;SIZE = 128341;TYPE = <4 x i32>342define void @v128_v4i32_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {343;CHECK-LABEL: v128_v4i32_4:344entry:345;CHECK: vld1.32346 %v1 = load <4 x i32>, ptr %in, align 4347;CHECK: vst1.32348 store <4 x i32> %v1, ptr %out, align 4349 ret void350}351 352 353;ALIGN = 4354;SIZE = 128355;TYPE = <2 x i64>356define void @v128_v2i64_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {357;CHECK-LABEL: v128_v2i64_4:358entry:359;CHECK: vld1.32360 %v1 = load <2 x i64>, ptr %in, align 4361;CHECK: vst1.32362 store <2 x i64> %v1, ptr %out, align 4363 ret void364}365 366 367;ALIGN = 4368;SIZE = 128369;TYPE = <4 x float>370define void @v128_v4f32_4(ptr noalias nocapture %out, ptr noalias nocapture %in) nounwind {371;CHECK-LABEL: v128_v4f32_4:372entry:373;CHECK: vld1.32374 %v1 = load <4 x float>, ptr %in, align 4375;CHECK: vst1.32376 store <4 x float> %v1, ptr %out, align 4377 ret void378}379 380define void @test_weird_type(<3 x double> %in, ptr %ptr) {381; CHECK-LABEL: test_weird_type:382; CHECK: vst1383 384 %vec.int = bitcast <3 x double> %in to <3 x i64>385 store <3 x i64> %vec.int, ptr %ptr, align 8386 ret void387}388