219 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=hexagon < %s | FileCheck %s3 4define void @f0(ptr %a0, ptr %a1, ptr %a2, ptr %a3) {5; CHECK-LABEL: f0:6; CHECK: .cfi_startproc7; CHECK-NEXT: // %bb.0: // %b08; CHECK-NEXT: {9; CHECK-NEXT: r0 = memub(r0+#0)10; CHECK-NEXT: }11; CHECK-NEXT: {12; CHECK-NEXT: p0 = r013; CHECK-NEXT: }14; CHECK-NEXT: {15; CHECK-NEXT: r0 = mux(p0,r1,r2)16; CHECK-NEXT: }17; CHECK-NEXT: {18; CHECK-NEXT: r0 = memub(r0+#0)19; CHECK-NEXT: }20; CHECK-NEXT: {21; CHECK-NEXT: p0 = r022; CHECK-NEXT: }23; CHECK-NEXT: {24; CHECK-NEXT: r0 = mux(p0,#1,#0)25; CHECK-NEXT: jumpr r3126; CHECK-NEXT: memb(r3+#0) = r0.new27; CHECK-NEXT: }28b0:29 %v0 = load i1, ptr %a030 %v1 = load i1, ptr %a131 %v2 = load i1, ptr %a232 %v3 = select i1 %v0, i1 %v1, i1 %v233 store i1 %v3, ptr %a334 ret void35}36 37define void @f1(ptr %a0, ptr %a1, ptr %a2, ptr %a3) {38; CHECK-LABEL: f1:39; CHECK: .cfi_startproc40; CHECK-NEXT: // %bb.0: // %b041; CHECK-NEXT: {42; CHECK-NEXT: r0 = memub(r0+#0)43; CHECK-NEXT: }44; CHECK-NEXT: {45; CHECK-NEXT: p0 = r046; CHECK-NEXT: }47; CHECK-NEXT: {48; CHECK-NEXT: r0 = mux(p0,r1,r2)49; CHECK-NEXT: }50; CHECK-NEXT: {51; CHECK-NEXT: jumpr r3152; CHECK-NEXT: r0 = memub(r0+#0)53; CHECK-NEXT: memb(r3+#0) = r0.new54; CHECK-NEXT: }55b0:56 %v0 = load i1, ptr %a057 %v1 = load <2 x i1>, ptr %a158 %v2 = load <2 x i1>, ptr %a259 %v3 = select i1 %v0, <2 x i1> %v1, <2 x i1> %v260 store <2 x i1> %v3, ptr %a361 ret void62}63 64define void @f2(ptr %a0, ptr %a1, ptr %a2, ptr %a3) {65; CHECK-LABEL: f2:66; CHECK: .cfi_startproc67; CHECK-NEXT: // %bb.0: // %b068; CHECK-NEXT: {69; CHECK-NEXT: r0 = memub(r0+#0)70; CHECK-NEXT: }71; CHECK-NEXT: {72; CHECK-NEXT: p0 = r073; CHECK-NEXT: }74; CHECK-NEXT: {75; CHECK-NEXT: r0 = mux(p0,r1,r2)76; CHECK-NEXT: }77; CHECK-NEXT: {78; CHECK-NEXT: jumpr r3179; CHECK-NEXT: r0 = memub(r0+#0)80; CHECK-NEXT: memb(r3+#0) = r0.new81; CHECK-NEXT: }82b0:83 %v0 = load i1, ptr %a084 %v1 = load <4 x i1>, ptr %a185 %v2 = load <4 x i1>, ptr %a286 %v3 = select i1 %v0, <4 x i1> %v1, <4 x i1> %v287 store <4 x i1> %v3, ptr %a388 ret void89}90 91define void @f3(ptr %a0, ptr %a1, ptr %a2, ptr %a3) {92; CHECK-LABEL: f3:93; CHECK: .cfi_startproc94; CHECK-NEXT: // %bb.0: // %b095; CHECK-NEXT: {96; CHECK-NEXT: r0 = memub(r0+#0)97; CHECK-NEXT: }98; CHECK-NEXT: {99; CHECK-NEXT: p0 = r0100; CHECK-NEXT: }101; CHECK-NEXT: {102; CHECK-NEXT: r0 = mux(p0,r1,r2)103; CHECK-NEXT: }104; CHECK-NEXT: {105; CHECK-NEXT: jumpr r31106; CHECK-NEXT: r0 = memub(r0+#0)107; CHECK-NEXT: memb(r3+#0) = r0.new108; CHECK-NEXT: }109b0:110 %v0 = load i1, ptr %a0111 %v1 = load <8 x i1>, ptr %a1112 %v2 = load <8 x i1>, ptr %a2113 %v3 = select i1 %v0, <8 x i1> %v1, <8 x i1> %v2114 store <8 x i1> %v3, ptr %a3115 ret void116}117 118define void @f4(ptr %a0, ptr %a1, ptr %a2, ptr %a3) {119; CHECK-LABEL: f4:120; CHECK: .cfi_startproc121; CHECK-NEXT: // %bb.0: // %b0122; CHECK-NEXT: {123; CHECK-NEXT: r1 = memub(r1+#0)124; CHECK-NEXT: r0 = memub(r0+#0)125; CHECK-NEXT: }126; CHECK-NEXT: {127; CHECK-NEXT: p0 = r0128; CHECK-NEXT: p1 = r1129; CHECK-NEXT: r2 = memub(r2+#0)130; CHECK-NEXT: }131; CHECK-NEXT: {132; CHECK-NEXT: p2 = r2133; CHECK-NEXT: p1 = and(p1,p0)134; CHECK-NEXT: }135; CHECK-NEXT: {136; CHECK-NEXT: p0 = or(p1,and(p2,!p0))137; CHECK-NEXT: }138; CHECK-NEXT: {139; CHECK-NEXT: r2 = p0140; CHECK-NEXT: jumpr r31141; CHECK-NEXT: memb(r3+#0) = r2.new142; CHECK-NEXT: }143b0:144 %v0 = load <2 x i1>, ptr %a0145 %v1 = load <2 x i1>, ptr %a1146 %v2 = load <2 x i1>, ptr %a2147 %v3 = select <2 x i1> %v0, <2 x i1> %v1, <2 x i1> %v2148 store <2 x i1> %v3, ptr %a3149 ret void150}151 152define void @f5(ptr %a0, ptr %a1, ptr %a2, ptr %a3) {153; CHECK-LABEL: f5:154; CHECK: .cfi_startproc155; CHECK-NEXT: // %bb.0: // %b0156; CHECK-NEXT: {157; CHECK-NEXT: r1 = memub(r1+#0)158; CHECK-NEXT: r0 = memub(r0+#0)159; CHECK-NEXT: }160; CHECK-NEXT: {161; CHECK-NEXT: p0 = r0162; CHECK-NEXT: p1 = r1163; CHECK-NEXT: r2 = memub(r2+#0)164; CHECK-NEXT: }165; CHECK-NEXT: {166; CHECK-NEXT: p2 = r2167; CHECK-NEXT: p1 = and(p1,p0)168; CHECK-NEXT: }169; CHECK-NEXT: {170; CHECK-NEXT: p0 = or(p1,and(p2,!p0))171; CHECK-NEXT: }172; CHECK-NEXT: {173; CHECK-NEXT: r2 = p0174; CHECK-NEXT: jumpr r31175; CHECK-NEXT: memb(r3+#0) = r2.new176; CHECK-NEXT: }177b0:178 %v0 = load <4 x i1>, ptr %a0179 %v1 = load <4 x i1>, ptr %a1180 %v2 = load <4 x i1>, ptr %a2181 %v3 = select <4 x i1> %v0, <4 x i1> %v1, <4 x i1> %v2182 store <4 x i1> %v3, ptr %a3183 ret void184}185 186define void @f6(ptr %a0, ptr %a1, ptr %a2, ptr %a3) {187; CHECK-LABEL: f6:188; CHECK: .cfi_startproc189; CHECK-NEXT: // %bb.0: // %b0190; CHECK-NEXT: {191; CHECK-NEXT: r1 = memub(r1+#0)192; CHECK-NEXT: r0 = memub(r0+#0)193; CHECK-NEXT: }194; CHECK-NEXT: {195; CHECK-NEXT: p0 = r0196; CHECK-NEXT: p1 = r1197; CHECK-NEXT: r2 = memub(r2+#0)198; CHECK-NEXT: }199; CHECK-NEXT: {200; CHECK-NEXT: p2 = r2201; CHECK-NEXT: p1 = and(p1,p0)202; CHECK-NEXT: }203; CHECK-NEXT: {204; CHECK-NEXT: p0 = or(p1,and(p2,!p0))205; CHECK-NEXT: }206; CHECK-NEXT: {207; CHECK-NEXT: r2 = p0208; CHECK-NEXT: jumpr r31209; CHECK-NEXT: memb(r3+#0) = r2.new210; CHECK-NEXT: }211b0:212 %v0 = load <8 x i1>, ptr %a0213 %v1 = load <8 x i1>, ptr %a1214 %v2 = load <8 x i1>, ptr %a2215 %v3 = select <8 x i1> %v0, <8 x i1> %v1, <8 x i1> %v2216 store <8 x i1> %v3, ptr %a3217 ret void218}219