brintos

brintos / llvm-project-archived public Read only

0
0
Text · 34.4 KiB · f1dccae Raw
1273 lines · plain
1; RUN: llc -mtriple aarch64_be < %s -aarch64-enable-ldst-opt=false -o - | FileCheck %s2; RUN: llc -mtriple aarch64_be < %s -aarch64-enable-ldst-opt=false -fast-isel=true -O0 -o - | FileCheck %s3 4; Note, we split the functions in to multiple BBs below to isolate the call5; instruction we want to test, from fast-isel failing to select instructions6; after it.7 8; CHECK-LABEL: test_i64_f64:9declare i64 @test_i64_f64_helper(double %p)10define void @test_i64_f64(ptr %p, ptr %q) {11; CHECK-NOT: rev12    %1 = load double, ptr %p13    %2 = fadd double %1, %114    %3 = call i64 @test_i64_f64_helper(double %2)15    br label %return_bb16return_bb:17    %4 = add i64 %3, %318    store i64 %4, ptr %q19    ret void20}21 22; CHECK-LABEL: test_i64_v1i64:23declare i64 @test_i64_v1i64_helper(<1 x i64> %p)24define void @test_i64_v1i64(ptr %p, ptr %q) {25; CHECK-NOT: rev26    %1 = load <1 x i64>, ptr %p27    %2 = add <1 x i64> %1, %128    %3 = call i64 @test_i64_v1i64_helper(<1 x i64> %2)29    br label %return_bb30return_bb:31    %4 = add i64 %3, %332    store i64 %4, ptr %q33    ret void34}35 36; CHECK-LABEL: test_i64_v2f32:37declare i64 @test_i64_v2f32_helper(<2 x float> %p)38define void @test_i64_v2f32(ptr %p, ptr %q) {39; CHECK: rev64 v{{[0-9]+}}.2s40    %1 = load <2 x float>, ptr %p41    %2 = fadd <2 x float> %1, %142    %3 = call i64 @test_i64_v2f32_helper(<2 x float> %2)43    br label %return_bb44return_bb:45    %4 = add i64 %3, %346    store i64 %4, ptr %q47    ret void48}49 50; CHECK-LABEL: test_i64_v2i32:51declare i64 @test_i64_v2i32_helper(<2 x i32> %p)52define void @test_i64_v2i32(ptr %p, ptr %q) {53; CHECK: rev64 v{{[0-9]+}}.2s54    %1 = load <2 x i32>, ptr %p55    %2 = add <2 x i32> %1, %156    %3 = call i64 @test_i64_v2i32_helper(<2 x i32> %2)57    br label %return_bb58return_bb:59    %4 = add i64 %3, %360    store i64 %4, ptr %q61    ret void62}63 64; CHECK-LABEL: test_i64_v4i16:65declare i64 @test_i64_v4i16_helper(<4 x i16> %p)66define void @test_i64_v4i16(ptr %p, ptr %q) {67; CHECK: rev64 v{{[0-9]+}}.4h68    %1 = load <4 x i16>, ptr %p69    %2 = add <4 x i16> %1, %170    %3 = call i64 @test_i64_v4i16_helper(<4 x i16> %2)71    br label %return_bb72return_bb:73    %4 = add i64 %3, %374    store i64 %4, ptr %q75    ret void76}77 78; CHECK-LABEL: test_i64_v8i8:79declare i64 @test_i64_v8i8_helper(<8 x i8> %p)80define void @test_i64_v8i8(ptr %p, ptr %q) {81; CHECK: rev64 v{{[0-9]+}}.8b82    %1 = load <8 x i8>, ptr %p83    %2 = add <8 x i8> %1, %184    %3 = call i64 @test_i64_v8i8_helper(<8 x i8> %2)85    br label %return_bb86return_bb:87    %4 = add i64 %3, %388    store i64 %4, ptr %q89    ret void90}91 92; CHECK-LABEL: test_f64_i64:93declare double @test_f64_i64_helper(i64 %p)94define void @test_f64_i64(ptr %p, ptr %q) {95; CHECK-NOT: rev96    %1 = load i64, ptr %p97    %2 = add i64 %1, %198    %3 = call double @test_f64_i64_helper(i64 %2)99    br label %return_bb100return_bb:101    %4 = fadd double %3, %3102    store double %4, ptr %q103    ret void104}105 106; CHECK-LABEL: test_f64_v1i64:107declare double @test_f64_v1i64_helper(<1 x i64> %p)108define void @test_f64_v1i64(ptr %p, ptr %q) {109; CHECK-NOT: rev110    %1 = load <1 x i64>, ptr %p111    %2 = add <1 x i64> %1, %1112    %3 = call double @test_f64_v1i64_helper(<1 x i64> %2)113    br label %return_bb114return_bb:115    %4 = fadd double %3, %3116    store double %4, ptr %q117    ret void118}119 120; CHECK-LABEL: test_f64_v2f32:121declare double @test_f64_v2f32_helper(<2 x float> %p)122define void @test_f64_v2f32(ptr %p, ptr %q) {123; CHECK: rev64 v{{[0-9]+}}.2s124    %1 = load <2 x float>, ptr %p125    %2 = fadd <2 x float> %1, %1126    %3 = call double @test_f64_v2f32_helper(<2 x float> %2)127    br label %return_bb128return_bb:129    %4 = fadd double %3, %3130    store double %4, ptr %q131    ret void132}133 134; CHECK-LABEL: test_f64_v2i32:135declare double @test_f64_v2i32_helper(<2 x i32> %p)136define void @test_f64_v2i32(ptr %p, ptr %q) {137; CHECK: rev64 v{{[0-9]+}}.2s138    %1 = load <2 x i32>, ptr %p139    %2 = add <2 x i32> %1, %1140    %3 = call double @test_f64_v2i32_helper(<2 x i32> %2)141    br label %return_bb142return_bb:143    %4 = fadd double %3, %3144    store double %4, ptr %q145    ret void146}147 148; CHECK-LABEL: test_f64_v4i16:149declare double @test_f64_v4i16_helper(<4 x i16> %p)150define void @test_f64_v4i16(ptr %p, ptr %q) {151; CHECK: rev64 v{{[0-9]+}}.4h152    %1 = load <4 x i16>, ptr %p153    %2 = add <4 x i16> %1, %1154    %3 = call double @test_f64_v4i16_helper(<4 x i16> %2)155    br label %return_bb156return_bb:157    %4 = fadd double %3, %3158    store double %4, ptr %q159    ret void160}161 162; CHECK-LABEL: test_f64_v8i8:163declare double @test_f64_v8i8_helper(<8 x i8> %p)164define void @test_f64_v8i8(ptr %p, ptr %q) {165; CHECK: rev64 v{{[0-9]+}}.8b166    %1 = load <8 x i8>, ptr %p167    %2 = add <8 x i8> %1, %1168    %3 = call double @test_f64_v8i8_helper(<8 x i8> %2)169    br label %return_bb170return_bb:171    %4 = fadd double %3, %3172    store double %4, ptr %q173    ret void174}175 176; CHECK-LABEL: test_v1i64_i64:177declare <1 x i64> @test_v1i64_i64_helper(i64 %p)178define void @test_v1i64_i64(ptr %p, ptr %q) {179; CHECK-NOT: rev180    %1 = load i64, ptr %p181    %2 = add i64 %1, %1182    %3 = call <1 x i64> @test_v1i64_i64_helper(i64 %2)183    br label %return_bb184return_bb:185    %4 = add <1 x i64> %3, %3186    store <1 x i64> %4, ptr %q187    ret void188}189 190; CHECK-LABEL: test_v1i64_f64:191declare <1 x i64> @test_v1i64_f64_helper(double %p)192define void @test_v1i64_f64(ptr %p, ptr %q) {193; CHECK-NOT: rev194    %1 = load double, ptr %p195    %2 = fadd double %1, %1196    %3 = call <1 x i64> @test_v1i64_f64_helper(double %2)197    br label %return_bb198return_bb:199    %4 = add <1 x i64> %3, %3200    store <1 x i64> %4, ptr %q201    ret void202}203 204; CHECK-LABEL: test_v1i64_v2f32:205declare <1 x i64> @test_v1i64_v2f32_helper(<2 x float> %p)206define void @test_v1i64_v2f32(ptr %p, ptr %q) {207; CHECK: rev64 v{{[0-9]+}}.2s208    %1 = load <2 x float>, ptr %p209    %2 = fadd <2 x float> %1, %1210    %3 = call <1 x i64> @test_v1i64_v2f32_helper(<2 x float> %2)211    br label %return_bb212return_bb:213    %4 = add <1 x i64> %3, %3214    store <1 x i64> %4, ptr %q215    ret void216}217 218; CHECK-LABEL: test_v1i64_v2i32:219declare <1 x i64> @test_v1i64_v2i32_helper(<2 x i32> %p)220define void @test_v1i64_v2i32(ptr %p, ptr %q) {221; CHECK: rev64 v{{[0-9]+}}.2s222    %1 = load <2 x i32>, ptr %p223    %2 = add <2 x i32> %1, %1224    %3 = call <1 x i64> @test_v1i64_v2i32_helper(<2 x i32> %2)225    br label %return_bb226return_bb:227    %4 = add <1 x i64> %3, %3228    store <1 x i64> %4, ptr %q229    ret void230}231 232; CHECK-LABEL: test_v1i64_v4i16:233declare <1 x i64> @test_v1i64_v4i16_helper(<4 x i16> %p)234define void @test_v1i64_v4i16(ptr %p, ptr %q) {235; CHECK: rev64 v{{[0-9]+}}.4h236    %1 = load <4 x i16>, ptr %p237    %2 = add <4 x i16> %1, %1238    %3 = call <1 x i64> @test_v1i64_v4i16_helper(<4 x i16> %2)239    br label %return_bb240return_bb:241    %4 = add <1 x i64> %3, %3242    store <1 x i64> %4, ptr %q243    ret void244}245 246; CHECK-LABEL: test_v1i64_v8i8:247declare <1 x i64> @test_v1i64_v8i8_helper(<8 x i8> %p)248define void @test_v1i64_v8i8(ptr %p, ptr %q) {249; CHECK: rev64 v{{[0-9]+}}.8b250    %1 = load <8 x i8>, ptr %p251    %2 = add <8 x i8> %1, %1252    %3 = call <1 x i64> @test_v1i64_v8i8_helper(<8 x i8> %2)253    br label %return_bb254return_bb:255    %4 = add <1 x i64> %3, %3256    store <1 x i64> %4, ptr %q257    ret void258}259 260; CHECK-LABEL: test_v2f32_i64:261declare <2 x float> @test_v2f32_i64_helper(i64 %p)262define void @test_v2f32_i64(ptr %p, ptr %q) {263; CHECK: rev64 v{{[0-9]+}}.2s264    %1 = load i64, ptr %p265    %2 = add i64 %1, %1266    %3 = call <2 x float> @test_v2f32_i64_helper(i64 %2)267    br label %return_bb268return_bb:269    %4 = fadd <2 x float> %3, %3270    store <2 x float> %4, ptr %q271    ret void272}273 274; CHECK-LABEL: test_v2f32_f64:275declare <2 x float> @test_v2f32_f64_helper(double %p)276define void @test_v2f32_f64(ptr %p, ptr %q) {277; CHECK: rev64 v{{[0-9]+}}.2s278    %1 = load double, ptr %p279    %2 = fadd double %1, %1280    %3 = call <2 x float> @test_v2f32_f64_helper(double %2)281    br label %return_bb282return_bb:283    %4 = fadd <2 x float> %3, %3284    store <2 x float> %4, ptr %q285    ret void286}287 288; CHECK-LABEL: test_v2f32_v1i64:289declare <2 x float> @test_v2f32_v1i64_helper(<1 x i64> %p)290define void @test_v2f32_v1i64(ptr %p, ptr %q) {291; CHECK: rev64 v{{[0-9]+}}.2s292    %1 = load <1 x i64>, ptr %p293    %2 = add <1 x i64> %1, %1294    %3 = call <2 x float> @test_v2f32_v1i64_helper(<1 x i64> %2)295    br label %return_bb296return_bb:297    %4 = fadd <2 x float> %3, %3298    store <2 x float> %4, ptr %q299    ret void300}301 302; CHECK-LABEL: test_v2f32_v2i32:303declare <2 x float> @test_v2f32_v2i32_helper(<2 x i32> %p)304define void @test_v2f32_v2i32(ptr %p, ptr %q) {305; CHECK: rev64 v{{[0-9]+}}.2s306; CHECK: rev64 v{{[0-9]+}}.2s307    %1 = load <2 x i32>, ptr %p308    %2 = add <2 x i32> %1, %1309    %3 = call <2 x float> @test_v2f32_v2i32_helper(<2 x i32> %2)310    br label %return_bb311return_bb:312    %4 = fadd <2 x float> %3, %3313    store <2 x float> %4, ptr %q314    ret void315}316 317; CHECK-LABEL: test_v2f32_v4i16:318declare <2 x float> @test_v2f32_v4i16_helper(<4 x i16> %p)319define void @test_v2f32_v4i16(ptr %p, ptr %q) {320; CHECK: rev64 v{{[0-9]+}}.4h321; CHECK: rev64 v{{[0-9]+}}.2s322    %1 = load <4 x i16>, ptr %p323    %2 = add <4 x i16> %1, %1324    %3 = call <2 x float> @test_v2f32_v4i16_helper(<4 x i16> %2)325    br label %return_bb326return_bb:327    %4 = fadd <2 x float> %3, %3328    store <2 x float> %4, ptr %q329    ret void330}331 332; CHECK-LABEL: test_v2f32_v8i8:333declare <2 x float> @test_v2f32_v8i8_helper(<8 x i8> %p)334define void @test_v2f32_v8i8(ptr %p, ptr %q) {335; CHECK: rev64 v{{[0-9]+}}.8b336; CHECK: rev64 v{{[0-9]+}}.2s337    %1 = load <8 x i8>, ptr %p338    %2 = add <8 x i8> %1, %1339    %3 = call <2 x float> @test_v2f32_v8i8_helper(<8 x i8> %2)340    br label %return_bb341return_bb:342    %4 = fadd <2 x float> %3, %3343    store <2 x float> %4, ptr %q344    ret void345}346 347; CHECK-LABEL: test_v2i32_i64:348declare <2 x i32> @test_v2i32_i64_helper(i64 %p)349define void @test_v2i32_i64(ptr %p, ptr %q) {350; CHECK: rev64 v{{[0-9]+}}.2s351    %1 = load i64, ptr %p352    %2 = add i64 %1, %1353    %3 = call <2 x i32> @test_v2i32_i64_helper(i64 %2)354    br label %return_bb355return_bb:356    %4 = add <2 x i32> %3, %3357    store <2 x i32> %4, ptr %q358    ret void359}360 361; CHECK-LABEL: test_v2i32_f64:362declare <2 x i32> @test_v2i32_f64_helper(double %p)363define void @test_v2i32_f64(ptr %p, ptr %q) {364; CHECK: rev64 v{{[0-9]+}}.2s365    %1 = load double, ptr %p366    %2 = fadd double %1, %1367    %3 = call <2 x i32> @test_v2i32_f64_helper(double %2)368    br label %return_bb369return_bb:370    %4 = add <2 x i32> %3, %3371    store <2 x i32> %4, ptr %q372    ret void373}374 375; CHECK-LABEL: test_v2i32_v1i64:376declare <2 x i32> @test_v2i32_v1i64_helper(<1 x i64> %p)377define void @test_v2i32_v1i64(ptr %p, ptr %q) {378; CHECK: rev64 v{{[0-9]+}}.2s379    %1 = load <1 x i64>, ptr %p380    %2 = add <1 x i64> %1, %1381    %3 = call <2 x i32> @test_v2i32_v1i64_helper(<1 x i64> %2)382    br label %return_bb383return_bb:384    %4 = add <2 x i32> %3, %3385    store <2 x i32> %4, ptr %q386    ret void387}388 389; CHECK-LABEL: test_v2i32_v2f32:390declare <2 x i32> @test_v2i32_v2f32_helper(<2 x float> %p)391define void @test_v2i32_v2f32(ptr %p, ptr %q) {392; CHECK: rev64 v{{[0-9]+}}.2s393; CHECK: rev64 v{{[0-9]+}}.2s394    %1 = load <2 x float>, ptr %p395    %2 = fadd <2 x float> %1, %1396    %3 = call <2 x i32> @test_v2i32_v2f32_helper(<2 x float> %2)397    br label %return_bb398return_bb:399    %4 = add <2 x i32> %3, %3400    store <2 x i32> %4, ptr %q401    ret void402}403 404; CHECK-LABEL: test_v2i32_v4i16:405declare <2 x i32> @test_v2i32_v4i16_helper(<4 x i16> %p)406define void @test_v2i32_v4i16(ptr %p, ptr %q) {407; CHECK: rev64 v{{[0-9]+}}.4h408; CHECK: rev64 v{{[0-9]+}}.2s409    %1 = load <4 x i16>, ptr %p410    %2 = add <4 x i16> %1, %1411    %3 = call <2 x i32> @test_v2i32_v4i16_helper(<4 x i16> %2)412    br label %return_bb413return_bb:414    %4 = add <2 x i32> %3, %3415    store <2 x i32> %4, ptr %q416    ret void417}418 419; CHECK-LABEL: test_v2i32_v8i8:420declare <2 x i32> @test_v2i32_v8i8_helper(<8 x i8> %p)421define void @test_v2i32_v8i8(ptr %p, ptr %q) {422; CHECK: rev64 v{{[0-9]+}}.8b423; CHECK: rev64 v{{[0-9]+}}.2s424    %1 = load <8 x i8>, ptr %p425    %2 = add <8 x i8> %1, %1426    %3 = call <2 x i32> @test_v2i32_v8i8_helper(<8 x i8> %2)427    br label %return_bb428return_bb:429    %4 = add <2 x i32> %3, %3430    store <2 x i32> %4, ptr %q431    ret void432}433 434; CHECK-LABEL: test_v4i16_i64:435declare <4 x i16> @test_v4i16_i64_helper(i64 %p)436define void @test_v4i16_i64(ptr %p, ptr %q) {437; CHECK: rev64 v{{[0-9]+}}.4h438    %1 = load i64, ptr %p439    %2 = add i64 %1, %1440    %3 = call <4 x i16> @test_v4i16_i64_helper(i64 %2)441    br label %return_bb442return_bb:443    %4 = add <4 x i16> %3, %3444    store <4 x i16> %4, ptr %q445    ret void446}447 448; CHECK-LABEL: test_v4i16_f64:449declare <4 x i16> @test_v4i16_f64_helper(double %p)450define void @test_v4i16_f64(ptr %p, ptr %q) {451; CHECK: rev64 v{{[0-9]+}}.4h452    %1 = load double, ptr %p453    %2 = fadd double %1, %1454    %3 = call <4 x i16> @test_v4i16_f64_helper(double %2)455    br label %return_bb456return_bb:457    %4 = add <4 x i16> %3, %3458    store <4 x i16> %4, ptr %q459    ret void460}461 462; CHECK-LABEL: test_v4i16_v1i64:463declare <4 x i16> @test_v4i16_v1i64_helper(<1 x i64> %p)464define void @test_v4i16_v1i64(ptr %p, ptr %q) {465; CHECK: rev64 v{{[0-9]+}}.4h466    %1 = load <1 x i64>, ptr %p467    %2 = add <1 x i64> %1, %1468    %3 = call <4 x i16> @test_v4i16_v1i64_helper(<1 x i64> %2)469    br label %return_bb470return_bb:471    %4 = add <4 x i16> %3, %3472    store <4 x i16> %4, ptr %q473    ret void474}475 476; CHECK-LABEL: test_v4i16_v2f32:477declare <4 x i16> @test_v4i16_v2f32_helper(<2 x float> %p)478define void @test_v4i16_v2f32(ptr %p, ptr %q) {479; CHECK: rev64 v{{[0-9]+}}.2s480; CHECK: rev64 v{{[0-9]+}}.4h481    %1 = load <2 x float>, ptr %p482    %2 = fadd <2 x float> %1, %1483    %3 = call <4 x i16> @test_v4i16_v2f32_helper(<2 x float> %2)484    br label %return_bb485return_bb:486    %4 = add <4 x i16> %3, %3487    store <4 x i16> %4, ptr %q488    ret void489}490 491; CHECK-LABEL: test_v4i16_v2i32:492declare <4 x i16> @test_v4i16_v2i32_helper(<2 x i32> %p)493define void @test_v4i16_v2i32(ptr %p, ptr %q) {494; CHECK: rev64 v{{[0-9]+}}.2s495; CHECK: rev64 v{{[0-9]+}}.4h496    %1 = load <2 x i32>, ptr %p497    %2 = add <2 x i32> %1, %1498    %3 = call <4 x i16> @test_v4i16_v2i32_helper(<2 x i32> %2)499    br label %return_bb500return_bb:501    %4 = add <4 x i16> %3, %3502    store <4 x i16> %4, ptr %q503    ret void504}505 506; CHECK-LABEL: test_v4i16_v8i8:507declare <4 x i16> @test_v4i16_v8i8_helper(<8 x i8> %p)508define void @test_v4i16_v8i8(ptr %p, ptr %q) {509; CHECK: rev64 v{{[0-9]+}}.8b510; CHECK: rev64 v{{[0-9]+}}.4h511    %1 = load <8 x i8>, ptr %p512    %2 = add <8 x i8> %1, %1513    %3 = call <4 x i16> @test_v4i16_v8i8_helper(<8 x i8> %2)514    br label %return_bb515return_bb:516    %4 = add <4 x i16> %3, %3517    store <4 x i16> %4, ptr %q518    ret void519}520 521; CHECK-LABEL: test_v8i8_i64:522declare <8 x i8> @test_v8i8_i64_helper(i64 %p)523define void @test_v8i8_i64(ptr %p, ptr %q) {524; CHECK: rev64 v{{[0-9]+}}.8b525    %1 = load i64, ptr %p526    %2 = add i64 %1, %1527    %3 = call <8 x i8> @test_v8i8_i64_helper(i64 %2)528    br label %return_bb529return_bb:530    %4 = add <8 x i8> %3, %3531    store <8 x i8> %4, ptr %q532    ret void533}534 535; CHECK-LABEL: test_v8i8_f64:536declare <8 x i8> @test_v8i8_f64_helper(double %p)537define void @test_v8i8_f64(ptr %p, ptr %q) {538; CHECK: rev64 v{{[0-9]+}}.8b539    %1 = load double, ptr %p540    %2 = fadd double %1, %1541    %3 = call <8 x i8> @test_v8i8_f64_helper(double %2)542    br label %return_bb543return_bb:544    %4 = add <8 x i8> %3, %3545    store <8 x i8> %4, ptr %q546    ret void547}548 549; CHECK-LABEL: test_v8i8_v1i64:550declare <8 x i8> @test_v8i8_v1i64_helper(<1 x i64> %p)551define void @test_v8i8_v1i64(ptr %p, ptr %q) {552; CHECK: rev64 v{{[0-9]+}}.8b553    %1 = load <1 x i64>, ptr %p554    %2 = add <1 x i64> %1, %1555    %3 = call <8 x i8> @test_v8i8_v1i64_helper(<1 x i64> %2)556    br label %return_bb557return_bb:558    %4 = add <8 x i8> %3, %3559    store <8 x i8> %4, ptr %q560    ret void561}562 563; CHECK-LABEL: test_v8i8_v2f32:564declare <8 x i8> @test_v8i8_v2f32_helper(<2 x float> %p)565define void @test_v8i8_v2f32(ptr %p, ptr %q) {566; CHECK: rev64 v{{[0-9]+}}.2s567; CHECK: rev64 v{{[0-9]+}}.8b568    %1 = load <2 x float>, ptr %p569    %2 = fadd <2 x float> %1, %1570    %3 = call <8 x i8> @test_v8i8_v2f32_helper(<2 x float> %2)571    br label %return_bb572return_bb:573    %4 = add <8 x i8> %3, %3574    store <8 x i8> %4, ptr %q575    ret void576}577 578; CHECK-LABEL: test_v8i8_v2i32:579declare <8 x i8> @test_v8i8_v2i32_helper(<2 x i32> %p)580define void @test_v8i8_v2i32(ptr %p, ptr %q) {581; CHECK: rev64 v{{[0-9]+}}.2s582; CHECK: rev64 v{{[0-9]+}}.8b583    %1 = load <2 x i32>, ptr %p584    %2 = add <2 x i32> %1, %1585    %3 = call <8 x i8> @test_v8i8_v2i32_helper(<2 x i32> %2)586    br label %return_bb587return_bb:588    %4 = add <8 x i8> %3, %3589    store <8 x i8> %4, ptr %q590    ret void591}592 593; CHECK-LABEL: test_v8i8_v4i16:594declare <8 x i8> @test_v8i8_v4i16_helper(<4 x i16> %p)595define void @test_v8i8_v4i16(ptr %p, ptr %q) {596; CHECK: rev64 v{{[0-9]+}}.4h597; CHECK: rev64 v{{[0-9]+}}.8b598    %1 = load <4 x i16>, ptr %p599    %2 = add <4 x i16> %1, %1600    %3 = call <8 x i8> @test_v8i8_v4i16_helper(<4 x i16> %2)601    br label %return_bb602return_bb:603    %4 = add <8 x i8> %3, %3604    store <8 x i8> %4, ptr %q605    ret void606}607 608; CHECK-LABEL: test_f128_v2f64:609declare fp128 @test_f128_v2f64_helper(<2 x double> %p)610define void @test_f128_v2f64(ptr %p, ptr %q) {611; CHECK: ext612    %1 = load <2 x double>, ptr %p613    %2 = fadd <2 x double> %1, %1614    %3 = call fp128 @test_f128_v2f64_helper(<2 x double> %2)615    br label %return_bb616return_bb:617    %4 = fadd fp128 %3, %3618    store fp128 %4, ptr %q619    ret void620}621 622; CHECK-LABEL: test_f128_v2i64:623declare fp128 @test_f128_v2i64_helper(<2 x i64> %p)624define void @test_f128_v2i64(ptr %p, ptr %q) {625; CHECK: ext626    %1 = load <2 x i64>, ptr %p627    %2 = add <2 x i64> %1, %1628    %3 = call fp128 @test_f128_v2i64_helper(<2 x i64> %2)629    br label %return_bb630return_bb:631    %4 = fadd fp128 %3, %3632    store fp128 %4, ptr %q633    ret void634}635 636; CHECK-LABEL: test_f128_v4f32:637declare fp128 @test_f128_v4f32_helper(<4 x float> %p)638define void @test_f128_v4f32(ptr %p, ptr %q) {639; CHECK: rev64 v{{[0-9]+}}.4s640; CHECK: ext641    %1 = load <4 x float>, ptr %p642    %2 = fadd <4 x float> %1, %1643    %3 = call fp128 @test_f128_v4f32_helper(<4 x float> %2)644    br label %return_bb645return_bb:646    %4 = fadd fp128 %3, %3647    store fp128 %4, ptr %q648    ret void649}650 651; CHECK-LABEL: test_f128_v4i32:652declare fp128 @test_f128_v4i32_helper(<4 x i32> %p)653define void @test_f128_v4i32(ptr %p, ptr %q) {654; CHECK: rev64 v{{[0-9]+}}.4s655; CHECK: ext656    %1 = load <4 x i32>, ptr %p657    %2 = add <4 x i32> %1, %1658    %3 = call fp128 @test_f128_v4i32_helper(<4 x i32> %2)659    br label %return_bb660return_bb:661    %4 = fadd fp128 %3, %3662    store fp128 %4, ptr %q663    ret void664}665 666; CHECK-LABEL: test_f128_v8i16:667declare fp128 @test_f128_v8i16_helper(<8 x i16> %p)668define void @test_f128_v8i16(ptr %p, ptr %q) {669; CHECK: rev64 v{{[0-9]+}}.8h670; CHECK: ext671    %1 = load <8 x i16>, ptr %p672    %2 = add <8 x i16> %1, %1673    %3 = call fp128 @test_f128_v8i16_helper(<8 x i16> %2)674    br label %return_bb675return_bb:676    %4 = fadd fp128 %3, %3677    store fp128 %4, ptr %q678    ret void679}680 681; CHECK-LABEL: test_f128_v16i8:682declare fp128 @test_f128_v16i8_helper(<16 x i8> %p)683define void @test_f128_v16i8(ptr %p, ptr %q) {684; CHECK: rev64 v{{[0-9]+}}.16b685; CHECK: ext686    %1 = load <16 x i8>, ptr %p687    %2 = add <16 x i8> %1, %1688    %3 = call fp128 @test_f128_v16i8_helper(<16 x i8> %2)689    br label %return_bb690return_bb:691    %4 = fadd fp128 %3, %3692    store fp128 %4, ptr %q693    ret void694}695 696; CHECK-LABEL: test_v2f64_f128:697declare <2 x double> @test_v2f64_f128_helper(fp128 %p)698define void @test_v2f64_f128(ptr %p, ptr %q) {699; CHECK: ext700    %1 = load fp128, ptr %p701    %2 = fadd fp128 %1, %1702    %3 = call <2 x double> @test_v2f64_f128_helper(fp128 %2)703    br label %return_bb704return_bb:705    %4 = fadd <2 x double> %3, %3706    store <2 x double> %4, ptr %q707    ret void708}709 710; CHECK-LABEL: test_v2f64_v2i64:711declare <2 x double> @test_v2f64_v2i64_helper(<2 x i64> %p)712define void @test_v2f64_v2i64(ptr %p, ptr %q) {713; CHECK: ext714; CHECK: ext715    %1 = load <2 x i64>, ptr %p716    %2 = add <2 x i64> %1, %1717    %3 = call <2 x double> @test_v2f64_v2i64_helper(<2 x i64> %2)718    br label %return_bb719return_bb:720    %4 = fadd <2 x double> %3, %3721    store <2 x double> %4, ptr %q722    ret void723}724 725; CHECK-LABEL: test_v2f64_v4f32:726declare <2 x double> @test_v2f64_v4f32_helper(<4 x float> %p)727define void @test_v2f64_v4f32(ptr %p, ptr %q) {728; CHECK: rev64 v{{[0-9]+}}.4s729; CHECK: ext730; CHECK: ext731    %1 = load <4 x float>, ptr %p732    %2 = fadd <4 x float> %1, %1733    %3 = call <2 x double> @test_v2f64_v4f32_helper(<4 x float> %2)734    br label %return_bb735return_bb:736    %4 = fadd <2 x double> %3, %3737    store <2 x double> %4, ptr %q738    ret void739}740 741; CHECK-LABEL: test_v2f64_v4i32:742declare <2 x double> @test_v2f64_v4i32_helper(<4 x i32> %p)743define void @test_v2f64_v4i32(ptr %p, ptr %q) {744; CHECK: rev64 v{{[0-9]+}}.4s745; CHECK: ext746; CHECK: ext747    %1 = load <4 x i32>, ptr %p748    %2 = add <4 x i32> %1, %1749    %3 = call <2 x double> @test_v2f64_v4i32_helper(<4 x i32> %2)750    br label %return_bb751return_bb:752    %4 = fadd <2 x double> %3, %3753    store <2 x double> %4, ptr %q754    ret void755}756 757; CHECK-LABEL: test_v2f64_v8i16:758declare <2 x double> @test_v2f64_v8i16_helper(<8 x i16> %p)759define void @test_v2f64_v8i16(ptr %p, ptr %q) {760; CHECK: rev64 v{{[0-9]+}}.8h761; CHECK: ext762; CHECK: ext763    %1 = load <8 x i16>, ptr %p764    %2 = add <8 x i16> %1, %1765    %3 = call <2 x double> @test_v2f64_v8i16_helper(<8 x i16> %2)766    br label %return_bb767return_bb:768    %4 = fadd <2 x double> %3, %3769    store <2 x double> %4, ptr %q770    ret void771}772 773; CHECK-LABEL: test_v2f64_v16i8:774declare <2 x double> @test_v2f64_v16i8_helper(<16 x i8> %p)775define void @test_v2f64_v16i8(ptr %p, ptr %q) {776; CHECK: rev64 v{{[0-9]+}}.16b777; CHECK: ext778; CHECK: ext779    %1 = load <16 x i8>, ptr %p780    %2 = add <16 x i8> %1, %1781    %3 = call <2 x double> @test_v2f64_v16i8_helper(<16 x i8> %2)782    br label %return_bb783return_bb:784    %4 = fadd <2 x double> %3, %3785    store <2 x double> %4, ptr %q786    ret void787}788 789; CHECK-LABEL: test_v2i64_f128:790declare <2 x i64> @test_v2i64_f128_helper(fp128 %p)791define void @test_v2i64_f128(ptr %p, ptr %q) {792; CHECK: ext793    %1 = load fp128, ptr %p794    %2 = fadd fp128 %1, %1795    %3 = call <2 x i64> @test_v2i64_f128_helper(fp128 %2)796    br label %return_bb797return_bb:798    %4 = add <2 x i64> %3, %3799    store <2 x i64> %4, ptr %q800    ret void801}802 803; CHECK-LABEL: test_v2i64_v2f64:804declare <2 x i64> @test_v2i64_v2f64_helper(<2 x double> %p)805define void @test_v2i64_v2f64(ptr %p, ptr %q) {806; CHECK: ext807; CHECK: ext808    %1 = load <2 x double>, ptr %p809    %2 = fadd <2 x double> %1, %1810    %3 = call <2 x i64> @test_v2i64_v2f64_helper(<2 x double> %2)811    br label %return_bb812return_bb:813    %4 = add <2 x i64> %3, %3814    store <2 x i64> %4, ptr %q815    ret void816}817 818; CHECK-LABEL: test_v2i64_v4f32:819declare <2 x i64> @test_v2i64_v4f32_helper(<4 x float> %p)820define void @test_v2i64_v4f32(ptr %p, ptr %q) {821; CHECK: rev64 v{{[0-9]+}}.4s822; CHECK: ext823; CHECK: ext824    %1 = load <4 x float>, ptr %p825    %2 = fadd <4 x float> %1, %1826    %3 = call <2 x i64> @test_v2i64_v4f32_helper(<4 x float> %2)827    br label %return_bb828return_bb:829    %4 = add <2 x i64> %3, %3830    store <2 x i64> %4, ptr %q831    ret void832}833 834; CHECK-LABEL: test_v2i64_v4i32:835declare <2 x i64> @test_v2i64_v4i32_helper(<4 x i32> %p)836define void @test_v2i64_v4i32(ptr %p, ptr %q) {837; CHECK: rev64 v{{[0-9]+}}.4s838; CHECK: ext839; CHECK: ext840    %1 = load <4 x i32>, ptr %p841    %2 = add <4 x i32> %1, %1842    %3 = call <2 x i64> @test_v2i64_v4i32_helper(<4 x i32> %2)843    br label %return_bb844return_bb:845    %4 = add <2 x i64> %3, %3846    store <2 x i64> %4, ptr %q847    ret void848}849 850; CHECK-LABEL: test_v2i64_v8i16:851declare <2 x i64> @test_v2i64_v8i16_helper(<8 x i16> %p)852define void @test_v2i64_v8i16(ptr %p, ptr %q) {853; CHECK: rev64 v{{[0-9]+}}.8h854; CHECK: ext855; CHECK: ext856    %1 = load <8 x i16>, ptr %p857    %2 = add <8 x i16> %1, %1858    %3 = call <2 x i64> @test_v2i64_v8i16_helper(<8 x i16> %2)859    br label %return_bb860return_bb:861    %4 = add <2 x i64> %3, %3862    store <2 x i64> %4, ptr %q863    ret void864}865 866; CHECK-LABEL: test_v2i64_v16i8:867declare <2 x i64> @test_v2i64_v16i8_helper(<16 x i8> %p)868define void @test_v2i64_v16i8(ptr %p, ptr %q) {869; CHECK: rev64 v{{[0-9]+}}.16b870; CHECK: ext871; CHECK: ext872    %1 = load <16 x i8>, ptr %p873    %2 = add <16 x i8> %1, %1874    %3 = call <2 x i64> @test_v2i64_v16i8_helper(<16 x i8> %2)875    br label %return_bb876return_bb:877    %4 = add <2 x i64> %3, %3878    store <2 x i64> %4, ptr %q879    ret void880}881 882; CHECK-LABEL: test_v4f32_f128:883declare <4 x float> @test_v4f32_f128_helper(fp128 %p)884define void @test_v4f32_f128(ptr %p, ptr %q) {885; CHECK: rev64 v{{[0-9]+}}.4s886; CHECK: ext887    %1 = load fp128, ptr %p888    %2 = fadd fp128 %1, %1889    %3 = call <4 x float> @test_v4f32_f128_helper(fp128 %2)890    br label %return_bb891return_bb:892    %4 = fadd <4 x float> %3, %3893    store <4 x float> %4, ptr %q894    ret void895}896 897; CHECK-LABEL: test_v4f32_v2f64:898declare <4 x float> @test_v4f32_v2f64_helper(<2 x double> %p)899define void @test_v4f32_v2f64(ptr %p, ptr %q) {900; CHECK: ext901; CHECK: rev64 v{{[0-9]+}}.4s902; CHECK: ext903    %1 = load <2 x double>, ptr %p904    %2 = fadd <2 x double> %1, %1905    %3 = call <4 x float> @test_v4f32_v2f64_helper(<2 x double> %2)906    br label %return_bb907return_bb:908    %4 = fadd <4 x float> %3, %3909    store <4 x float> %4, ptr %q910    ret void911}912 913; CHECK-LABEL: test_v4f32_v2i64:914declare <4 x float> @test_v4f32_v2i64_helper(<2 x i64> %p)915define void @test_v4f32_v2i64(ptr %p, ptr %q) {916; CHECK: ext917; CHECK: rev64 v{{[0-9]+}}.4s918; CHECK: ext919    %1 = load <2 x i64>, ptr %p920    %2 = add <2 x i64> %1, %1921    %3 = call <4 x float> @test_v4f32_v2i64_helper(<2 x i64> %2)922    br label %return_bb923return_bb:924    %4 = fadd <4 x float> %3, %3925    store <4 x float> %4, ptr %q926    ret void927}928 929; CHECK-LABEL: test_v4f32_v4i32:930declare <4 x float> @test_v4f32_v4i32_helper(<4 x i32> %p)931define void @test_v4f32_v4i32(ptr %p, ptr %q) {932; CHECK: rev64 v{{[0-9]+}}.4s933; CHECK: ext934; CHECK: rev64 v{{[0-9]+}}.4s935; CHECK: ext936    %1 = load <4 x i32>, ptr %p937    %2 = add <4 x i32> %1, %1938    %3 = call <4 x float> @test_v4f32_v4i32_helper(<4 x i32> %2)939    br label %return_bb940return_bb:941    %4 = fadd <4 x float> %3, %3942    store <4 x float> %4, ptr %q943    ret void944}945 946; CHECK-LABEL: test_v4f32_v8i16:947declare <4 x float> @test_v4f32_v8i16_helper(<8 x i16> %p)948define void @test_v4f32_v8i16(ptr %p, ptr %q) {949; CHECK: rev64 v{{[0-9]+}}.8h950; CHECK: ext951; CHECK: rev64 v{{[0-9]+}}.4s952; CHECK: ext953    %1 = load <8 x i16>, ptr %p954    %2 = add <8 x i16> %1, %1955    %3 = call <4 x float> @test_v4f32_v8i16_helper(<8 x i16> %2)956    br label %return_bb957return_bb:958    %4 = fadd <4 x float> %3, %3959    store <4 x float> %4, ptr %q960    ret void961}962 963; CHECK-LABEL: test_v4f32_v16i8:964declare <4 x float> @test_v4f32_v16i8_helper(<16 x i8> %p)965define void @test_v4f32_v16i8(ptr %p, ptr %q) {966; CHECK: rev64 v{{[0-9]+}}.16b967; CHECK: ext968; CHECK: rev64 v{{[0-9]+}}.4s969; CHECK: ext970    %1 = load <16 x i8>, ptr %p971    %2 = add <16 x i8> %1, %1972    %3 = call <4 x float> @test_v4f32_v16i8_helper(<16 x i8> %2)973    br label %return_bb974return_bb:975    %4 = fadd <4 x float> %3, %3976    store <4 x float> %4, ptr %q977    ret void978}979 980; CHECK-LABEL: test_v4i32_f128:981declare <4 x i32> @test_v4i32_f128_helper(fp128 %p)982define void @test_v4i32_f128(ptr %p, ptr %q) {983; CHECK: rev64 v{{[0-9]+}}.4s984; CHECK: ext985    %1 = load fp128, ptr %p986    %2 = fadd fp128 %1, %1987    %3 = call <4 x i32> @test_v4i32_f128_helper(fp128 %2)988    br label %return_bb989return_bb:990    %4 = add <4 x i32> %3, %3991    store <4 x i32> %4, ptr %q992    ret void993}994 995; CHECK-LABEL: test_v4i32_v2f64:996declare <4 x i32> @test_v4i32_v2f64_helper(<2 x double> %p)997define void @test_v4i32_v2f64(ptr %p, ptr %q) {998; CHECK: ext999; CHECK: rev64 v{{[0-9]+}}.4s1000; CHECK: ext1001    %1 = load <2 x double>, ptr %p1002    %2 = fadd <2 x double> %1, %11003    %3 = call <4 x i32> @test_v4i32_v2f64_helper(<2 x double> %2)1004    br label %return_bb1005return_bb:1006    %4 = add <4 x i32> %3, %31007    store <4 x i32> %4, ptr %q1008    ret void1009}1010 1011; CHECK-LABEL: test_v4i32_v2i64:1012declare <4 x i32> @test_v4i32_v2i64_helper(<2 x i64> %p)1013define void @test_v4i32_v2i64(ptr %p, ptr %q) {1014; CHECK: ext1015; CHECK: rev64 v{{[0-9]+}}.4s1016; CHECK: ext1017    %1 = load <2 x i64>, ptr %p1018    %2 = add <2 x i64> %1, %11019    %3 = call <4 x i32> @test_v4i32_v2i64_helper(<2 x i64> %2)1020    br label %return_bb1021return_bb:1022    %4 = add <4 x i32> %3, %31023    store <4 x i32> %4, ptr %q1024    ret void1025}1026 1027; CHECK-LABEL: test_v4i32_v4f32:1028declare <4 x i32> @test_v4i32_v4f32_helper(<4 x float> %p)1029define void @test_v4i32_v4f32(ptr %p, ptr %q) {1030; CHECK: rev64 v{{[0-9]+}}.4s1031; CHECK: ext1032; CHECK: rev64 v{{[0-9]+}}.4s1033; CHECK: ext1034    %1 = load <4 x float>, ptr %p1035    %2 = fadd <4 x float> %1, %11036    %3 = call <4 x i32> @test_v4i32_v4f32_helper(<4 x float> %2)1037    br label %return_bb1038return_bb:1039    %4 = add <4 x i32> %3, %31040    store <4 x i32> %4, ptr %q1041    ret void1042}1043 1044; CHECK-LABEL: test_v4i32_v8i16:1045declare <4 x i32> @test_v4i32_v8i16_helper(<8 x i16> %p)1046define void @test_v4i32_v8i16(ptr %p, ptr %q) {1047; CHECK: rev64 v{{[0-9]+}}.8h1048; CHECK: ext1049; CHECK: rev64 v{{[0-9]+}}.4s1050; CHECK: ext1051    %1 = load <8 x i16>, ptr %p1052    %2 = add <8 x i16> %1, %11053    %3 = call <4 x i32> @test_v4i32_v8i16_helper(<8 x i16> %2)1054    br label %return_bb1055return_bb:1056    %4 = add <4 x i32> %3, %31057    store <4 x i32> %4, ptr %q1058    ret void1059}1060 1061; CHECK-LABEL: test_v4i32_v16i8:1062declare <4 x i32> @test_v4i32_v16i8_helper(<16 x i8> %p)1063define void @test_v4i32_v16i8(ptr %p, ptr %q) {1064; CHECK: rev64 v{{[0-9]+}}.16b1065; CHECK: ext1066; CHECK: rev64 v{{[0-9]+}}.4s1067; CHECK: ext1068    %1 = load <16 x i8>, ptr %p1069    %2 = add <16 x i8> %1, %11070    %3 = call <4 x i32> @test_v4i32_v16i8_helper(<16 x i8> %2)1071    br label %return_bb1072return_bb:1073    %4 = add <4 x i32> %3, %31074    store <4 x i32> %4, ptr %q1075    ret void1076}1077 1078; CHECK-LABEL: test_v8i16_f128:1079declare <8 x i16> @test_v8i16_f128_helper(fp128 %p)1080define void @test_v8i16_f128(ptr %p, ptr %q) {1081; CHECK: rev64 v{{[0-9]+}}.8h1082; CHECK: ext1083    %1 = load fp128, ptr %p1084    %2 = fadd fp128 %1, %11085    %3 = call <8 x i16> @test_v8i16_f128_helper(fp128 %2)1086    br label %return_bb1087return_bb:1088    %4 = add <8 x i16> %3, %31089    store <8 x i16> %4, ptr %q1090    ret void1091}1092 1093; CHECK-LABEL: test_v8i16_v2f64:1094declare <8 x i16> @test_v8i16_v2f64_helper(<2 x double> %p)1095define void @test_v8i16_v2f64(ptr %p, ptr %q) {1096; CHECK: ext1097; CHECK: rev64 v{{[0-9]+}}.8h1098; CHECK: ext1099    %1 = load <2 x double>, ptr %p1100    %2 = fadd <2 x double> %1, %11101    %3 = call <8 x i16> @test_v8i16_v2f64_helper(<2 x double> %2)1102    br label %return_bb1103return_bb:1104    %4 = add <8 x i16> %3, %31105    store <8 x i16> %4, ptr %q1106    ret void1107}1108 1109; CHECK-LABEL: test_v8i16_v2i64:1110declare <8 x i16> @test_v8i16_v2i64_helper(<2 x i64> %p)1111define void @test_v8i16_v2i64(ptr %p, ptr %q) {1112; CHECK: ext1113; CHECK: rev64 v{{[0-9]+}}.8h1114; CHECK: ext1115    %1 = load <2 x i64>, ptr %p1116    %2 = add <2 x i64> %1, %11117    %3 = call <8 x i16> @test_v8i16_v2i64_helper(<2 x i64> %2)1118    br label %return_bb1119return_bb:1120    %4 = add <8 x i16> %3, %31121    store <8 x i16> %4, ptr %q1122    ret void1123}1124 1125; CHECK-LABEL: test_v8i16_v4f32:1126declare <8 x i16> @test_v8i16_v4f32_helper(<4 x float> %p)1127define void @test_v8i16_v4f32(ptr %p, ptr %q) {1128; CHECK: rev64 v{{[0-9]+}}.4s1129; CHECK: ext1130; CHECK: rev64 v{{[0-9]+}}.8h1131; CHECK: ext1132    %1 = load <4 x float>, ptr %p1133    %2 = fadd <4 x float> %1, %11134    %3 = call <8 x i16> @test_v8i16_v4f32_helper(<4 x float> %2)1135    br label %return_bb1136return_bb:1137    %4 = add <8 x i16> %3, %31138    store <8 x i16> %4, ptr %q1139    ret void1140}1141 1142; CHECK-LABEL: test_v8i16_v4i32:1143declare <8 x i16> @test_v8i16_v4i32_helper(<4 x i32> %p)1144define void @test_v8i16_v4i32(ptr %p, ptr %q) {1145; CHECK: rev64 v{{[0-9]+}}.4s1146; CHECK: ext1147; CHECK: rev64 v{{[0-9]+}}.8h1148; CHECK: ext1149    %1 = load <4 x i32>, ptr %p1150    %2 = add <4 x i32> %1, %11151    %3 = call <8 x i16> @test_v8i16_v4i32_helper(<4 x i32> %2)1152    br label %return_bb1153return_bb:1154    %4 = add <8 x i16> %3, %31155    store <8 x i16> %4, ptr %q1156    ret void1157}1158 1159; CHECK-LABEL: test_v8i16_v16i8:1160declare <8 x i16> @test_v8i16_v16i8_helper(<16 x i8> %p)1161define void @test_v8i16_v16i8(ptr %p, ptr %q) {1162; CHECK: rev64 v{{[0-9]+}}.16b1163; CHECK: ext1164; CHECK: rev64 v{{[0-9]+}}.8h1165; CHECK: ext1166    %1 = load <16 x i8>, ptr %p1167    %2 = add <16 x i8> %1, %11168    %3 = call <8 x i16> @test_v8i16_v16i8_helper(<16 x i8> %2)1169    br label %return_bb1170return_bb:1171    %4 = add <8 x i16> %3, %31172    store <8 x i16> %4, ptr %q1173    ret void1174}1175 1176; CHECK-LABEL: test_v16i8_f128:1177declare <16 x i8> @test_v16i8_f128_helper(fp128 %p)1178define void @test_v16i8_f128(ptr %p, ptr %q) {1179; CHECK: rev64 v{{[0-9]+}}.16b1180; CHECK: ext1181    %1 = load fp128, ptr %p1182    %2 = fadd fp128 %1, %11183    %3 = call <16 x i8> @test_v16i8_f128_helper(fp128 %2)1184    br label %return_bb1185return_bb:1186    %4 = add <16 x i8> %3, %31187    store <16 x i8> %4, ptr %q1188    ret void1189}1190 1191; CHECK-LABEL: test_v16i8_v2f64:1192declare <16 x i8> @test_v16i8_v2f64_helper(<2 x double> %p)1193define void @test_v16i8_v2f64(ptr %p, ptr %q) {1194; CHECK: ext1195; CHECK: rev64 v{{[0-9]+}}.16b1196; CHECK: ext1197    %1 = load <2 x double>, ptr %p1198    %2 = fadd <2 x double> %1, %11199    %3 = call <16 x i8> @test_v16i8_v2f64_helper(<2 x double> %2)1200    br label %return_bb1201return_bb:1202    %4 = add <16 x i8> %3, %31203    store <16 x i8> %4, ptr %q1204    ret void1205}1206 1207; CHECK-LABEL: test_v16i8_v2i64:1208declare <16 x i8> @test_v16i8_v2i64_helper(<2 x i64> %p)1209define void @test_v16i8_v2i64(ptr %p, ptr %q) {1210; CHECK: ext1211; CHECK: rev64 v{{[0-9]+}}.16b1212; CHECK: ext1213    %1 = load <2 x i64>, ptr %p1214    %2 = add <2 x i64> %1, %11215    %3 = call <16 x i8> @test_v16i8_v2i64_helper(<2 x i64> %2)1216    br label %return_bb1217return_bb:1218    %4 = add <16 x i8> %3, %31219    store <16 x i8> %4, ptr %q1220    ret void1221}1222 1223; CHECK-LABEL: test_v16i8_v4f32:1224declare <16 x i8> @test_v16i8_v4f32_helper(<4 x float> %p)1225define void @test_v16i8_v4f32(ptr %p, ptr %q) {1226; CHECK: rev64 v{{[0-9]+}}.4s1227; CHECK: ext1228; CHECK: rev64 v{{[0-9]+}}.16b1229; CHECK: ext1230    %1 = load <4 x float>, ptr %p1231    %2 = fadd <4 x float> %1, %11232    %3 = call <16 x i8> @test_v16i8_v4f32_helper(<4 x float> %2)1233    br label %return_bb1234return_bb:1235    %4 = add <16 x i8> %3, %31236    store <16 x i8> %4, ptr %q1237    ret void1238}1239 1240; CHECK-LABEL: test_v16i8_v4i32:1241declare <16 x i8> @test_v16i8_v4i32_helper(<4 x i32> %p)1242define void @test_v16i8_v4i32(ptr %p, ptr %q) {1243; CHECK: rev64 v{{[0-9]+}}.4s1244; CHECK: ext1245; CHECK: rev64 v{{[0-9]+}}.16b1246; CHECK: ext1247    %1 = load <4 x i32>, ptr %p1248    %2 = add <4 x i32> %1, %11249    %3 = call <16 x i8> @test_v16i8_v4i32_helper(<4 x i32> %2)1250    br label %return_bb1251return_bb:1252    %4 = add <16 x i8> %3, %31253    store <16 x i8> %4, ptr %q1254    ret void1255}1256 1257; CHECK-LABEL: test_v16i8_v8i16:1258declare <16 x i8> @test_v16i8_v8i16_helper(<8 x i16> %p)1259define void @test_v16i8_v8i16(ptr %p, ptr %q) {1260; CHECK: rev64 v{{[0-9]+}}.8h1261; CHECK: ext1262; CHECK: rev64 v{{[0-9]+}}.16b1263; CHECK: ext1264    %1 = load <8 x i16>, ptr %p1265    %2 = add <8 x i16> %1, %11266    %3 = call <16 x i8> @test_v16i8_v8i16_helper(<8 x i16> %2)1267    br label %return_bb1268return_bb:1269    %4 = add <16 x i8> %3, %31270    store <16 x i8> %4, ptr %q1271    ret void1272}1273