brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.8 KiB · ac024a0 Raw
571 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=hexagon -mattr=+hvxv60,+hvx-length128b,-packets < %s | FileCheck --check-prefix=V60 %s3; RUN: llc -mtriple=hexagon -mattr=+hvxv62,+hvx-length128b,-packets < %s | FileCheck --check-prefix=V62 %s4 5define <32 x i32> @f0(<32 x i32> %a0, <32 x i32> %a1) #0 {6; V60-LABEL: f0:7; V60:       // %bb.0:8; V60-NEXT:    {9; V60-NEXT:     r0 = #1610; V60-NEXT:    }11; V60-NEXT:    {12; V60-NEXT:     v2.w = vmpye(v1.w,v0.uh)13; V60-NEXT:    }14; V60-NEXT:    {15; V60-NEXT:     v31.w = vasr(v0.w,r0)16; V60-NEXT:    }17; V60-NEXT:    {18; V60-NEXT:     v3.w = vasr(v1.w,r0)19; V60-NEXT:    }20; V60-NEXT:    {21; V60-NEXT:     v5:4.w = vmpy(v31.h,v1.uh)22; V60-NEXT:    }23; V60-NEXT:    {24; V60-NEXT:     v31:30.w = vmpy(v31.h,v3.h)25; V60-NEXT:    }26; V60-NEXT:    {27; V60-NEXT:     v7:6.w = vadd(v2.uh,v4.uh)28; V60-NEXT:    }29; V60-NEXT:    {30; V60-NEXT:     v29:28.w = vadd(v2.h,v4.h)31; V60-NEXT:    }32; V60-NEXT:    {33; V60-NEXT:     v29.w += vasr(v6.w,r0)34; V60-NEXT:    }35; V60-NEXT:    {36; V60-NEXT:     v0.w = vadd(v29.w,v30.w)37; V60-NEXT:    }38; V60-NEXT:    {39; V60-NEXT:     jumpr r3140; V60-NEXT:    }41;42; V62-LABEL: f0:43; V62:       // %bb.0:44; V62-NEXT:    {45; V62-NEXT:     v3:2 = vmpye(v0.w,v1.uh)46; V62-NEXT:    }47; V62-NEXT:    {48; V62-NEXT:     v3:2 += vmpyo(v0.w,v1.h)49; V62-NEXT:    }50; V62-NEXT:    {51; V62-NEXT:     v0 = v352; V62-NEXT:    }53; V62-NEXT:    {54; V62-NEXT:     jumpr r3155; V62-NEXT:    }56  %v0 = call {<32 x i32>, <32 x i32>} @llvm.hexagon.V6.vmpyss.parts.128B(<32 x i32> %a0, <32 x i32> %a1)57  %v1 = extractvalue {<32 x i32>, <32 x i32>} %v0, 058  ret <32 x i32> %v159}60 61define <32 x i32> @f1(<32 x i32> %a0, <32 x i32> %a1) #0 {62; V60-LABEL: f1:63; V60:       // %bb.0:64; V60-NEXT:    {65; V60-NEXT:     v2.w = vmpyieo(v0.h,v1.h)66; V60-NEXT:    }67; V60-NEXT:    {68; V60-NEXT:     v2.w += vmpyie(v0.w,v1.uh)69; V60-NEXT:    }70; V60-NEXT:    {71; V60-NEXT:     v0 = v272; V60-NEXT:    }73; V60-NEXT:    {74; V60-NEXT:     jumpr r3175; V60-NEXT:    }76;77; V62-LABEL: f1:78; V62:       // %bb.0:79; V62-NEXT:    {80; V62-NEXT:     v2.w = vmpyieo(v0.h,v1.h)81; V62-NEXT:    }82; V62-NEXT:    {83; V62-NEXT:     v2.w += vmpyie(v0.w,v1.uh)84; V62-NEXT:    }85; V62-NEXT:    {86; V62-NEXT:     v0 = v287; V62-NEXT:    }88; V62-NEXT:    {89; V62-NEXT:     jumpr r3190; V62-NEXT:    }91  %v0 = call {<32 x i32>, <32 x i32>} @llvm.hexagon.V6.vmpyss.parts.128B(<32 x i32> %a0, <32 x i32> %a1)92  %v1 = extractvalue {<32 x i32>, <32 x i32>} %v0, 193  ret <32 x i32> %v194}95 96define <32 x i32> @f2(<32 x i32> %a0, <32 x i32> %a1) #0 {97; V60-LABEL: f2:98; V60:       // %bb.0:99; V60-NEXT:    {100; V60-NEXT:     r1:0 = combine(#16,##33686018)101; V60-NEXT:    }102; V60-NEXT:    {103; V60-NEXT:     v3:2.uw = vmpy(v0.uh,v1.uh)104; V60-NEXT:    }105; V60-NEXT:    {106; V60-NEXT:     v30 = vxor(v30,v30)107; V60-NEXT:    }108; V60-NEXT:    {109; V60-NEXT:     v4 = vsplat(r0)110; V60-NEXT:    }111; V60-NEXT:    {112; V60-NEXT:     q0 = vcmp.gt(v30.w,v1.w)113; V60-NEXT:    }114; V60-NEXT:    {115; V60-NEXT:     v2.uw = vlsr(v2.uw,r1)116; V60-NEXT:    }117; V60-NEXT:    {118; V60-NEXT:     v4 = vdelta(v1,v4)119; V60-NEXT:    }120; V60-NEXT:    {121; V60-NEXT:     v5:4.uw = vmpy(v0.uh,v4.uh)122; V60-NEXT:    }123; V60-NEXT:    {124; V60-NEXT:     v5:4.w = vadd(v5.uh,v4.uh)125; V60-NEXT:    }126; V60-NEXT:    {127; V60-NEXT:     v2.w = vadd(v4.w,v2.w)128; V60-NEXT:    }129; V60-NEXT:    {130; V60-NEXT:     v5.w += vasr(v2.w,r1)131; V60-NEXT:    }132; V60-NEXT:    {133; V60-NEXT:     v31.w = vadd(v3.w,v5.w)134; V60-NEXT:    }135; V60-NEXT:    {136; V60-NEXT:     if (q0) v31.w -= v0.w137; V60-NEXT:    }138; V60-NEXT:    {139; V60-NEXT:     v0 = v31140; V60-NEXT:    }141; V60-NEXT:    {142; V60-NEXT:     jumpr r31143; V60-NEXT:    }144;145; V62-LABEL: f2:146; V62:       // %bb.0:147; V62-NEXT:    {148; V62-NEXT:     v3:2 = vmpye(v0.w,v1.uh)149; V62-NEXT:    }150; V62-NEXT:    {151; V62-NEXT:     v4 = vxor(v4,v4)152; V62-NEXT:    }153; V62-NEXT:    {154; V62-NEXT:     q0 = vcmp.gt(v4.w,v0.w)155; V62-NEXT:    }156; V62-NEXT:    {157; V62-NEXT:     v3:2 += vmpyo(v0.w,v1.h)158; V62-NEXT:    }159; V62-NEXT:    {160; V62-NEXT:     if (q0) v3.w += v1.w161; V62-NEXT:    }162; V62-NEXT:    {163; V62-NEXT:     v0 = v3164; V62-NEXT:    }165; V62-NEXT:    {166; V62-NEXT:     jumpr r31167; V62-NEXT:    }168  %v0 = call {<32 x i32>, <32 x i32>} @llvm.hexagon.V6.vmpyus.parts.128B(<32 x i32> %a0, <32 x i32> %a1)169  %v1 = extractvalue {<32 x i32>, <32 x i32>} %v0, 0170  ret <32 x i32> %v1171}172 173define <32 x i32> @f3(<32 x i32> %a0, <32 x i32> %a1) #0 {174; V60-LABEL: f3:175; V60:       // %bb.0:176; V60-NEXT:    {177; V60-NEXT:     v2.w = vmpyieo(v0.h,v1.h)178; V60-NEXT:    }179; V60-NEXT:    {180; V60-NEXT:     v2.w += vmpyie(v0.w,v1.uh)181; V60-NEXT:    }182; V60-NEXT:    {183; V60-NEXT:     v0 = v2184; V60-NEXT:    }185; V60-NEXT:    {186; V60-NEXT:     jumpr r31187; V60-NEXT:    }188;189; V62-LABEL: f3:190; V62:       // %bb.0:191; V62-NEXT:    {192; V62-NEXT:     v2.w = vmpyieo(v0.h,v1.h)193; V62-NEXT:    }194; V62-NEXT:    {195; V62-NEXT:     v2.w += vmpyie(v0.w,v1.uh)196; V62-NEXT:    }197; V62-NEXT:    {198; V62-NEXT:     v0 = v2199; V62-NEXT:    }200; V62-NEXT:    {201; V62-NEXT:     jumpr r31202; V62-NEXT:    }203  %v0 = call {<32 x i32>, <32 x i32>} @llvm.hexagon.V6.vmpyus.parts.128B(<32 x i32> %a0, <32 x i32> %a1)204  %v1 = extractvalue {<32 x i32>, <32 x i32>} %v0, 1205  ret <32 x i32> %v1206}207 208define <32 x i32> @f4(<32 x i32> %a0, <32 x i32> %a1) #0 {209; V60-LABEL: f4:210; V60:       // %bb.0:211; V60-NEXT:    {212; V60-NEXT:     r0 = ##33686018213; V60-NEXT:    }214; V60-NEXT:    {215; V60-NEXT:     v3:2.uw = vmpy(v0.uh,v1.uh)216; V60-NEXT:    }217; V60-NEXT:    {218; V60-NEXT:     r2 = #16219; V60-NEXT:    }220; V60-NEXT:    {221; V60-NEXT:     v4 = vsplat(r0)222; V60-NEXT:    }223; V60-NEXT:    {224; V60-NEXT:     v2.uw = vlsr(v2.uw,r2)225; V60-NEXT:    }226; V60-NEXT:    {227; V60-NEXT:     v31 = vdelta(v1,v4)228; V60-NEXT:    }229; V60-NEXT:    {230; V60-NEXT:     v1:0.uw = vmpy(v0.uh,v31.uh)231; V60-NEXT:    }232; V60-NEXT:    {233; V60-NEXT:     v1:0.w = vadd(v1.uh,v0.uh)234; V60-NEXT:    }235; V60-NEXT:    {236; V60-NEXT:     v0.w = vadd(v0.w,v2.w)237; V60-NEXT:    }238; V60-NEXT:    {239; V60-NEXT:     v1.w += vasr(v0.w,r2)240; V60-NEXT:    }241; V60-NEXT:    {242; V60-NEXT:     v0.w = vadd(v3.w,v1.w)243; V60-NEXT:    }244; V60-NEXT:    {245; V60-NEXT:     jumpr r31246; V60-NEXT:    }247;248; V62-LABEL: f4:249; V62:       // %bb.0:250; V62-NEXT:    {251; V62-NEXT:     v2 = vxor(v2,v2)252; V62-NEXT:    }253; V62-NEXT:    {254; V62-NEXT:     v5:4 = vmpye(v0.w,v1.uh)255; V62-NEXT:    }256; V62-NEXT:    {257; V62-NEXT:     q0 = vcmp.gt(v2.w,v0.w)258; V62-NEXT:    }259; V62-NEXT:    {260; V62-NEXT:     q1 = vcmp.gt(v2.w,v1.w)261; V62-NEXT:    }262; V62-NEXT:    {263; V62-NEXT:     v5:4 += vmpyo(v0.w,v1.h)264; V62-NEXT:    }265; V62-NEXT:    {266; V62-NEXT:     v31 = vand(q0,v1)267; V62-NEXT:    }268; V62-NEXT:    {269; V62-NEXT:     if (q1) v31.w += v0.w270; V62-NEXT:    }271; V62-NEXT:    {272; V62-NEXT:     v0.w = vadd(v5.w,v31.w)273; V62-NEXT:    }274; V62-NEXT:    {275; V62-NEXT:     jumpr r31276; V62-NEXT:    }277  %v0 = call {<32 x i32>, <32 x i32>} @llvm.hexagon.V6.vmpyuu.parts.128B(<32 x i32> %a0, <32 x i32> %a1)278  %v1 = extractvalue {<32 x i32>, <32 x i32>} %v0, 0279  ret <32 x i32> %v1280}281 282define <32 x i32> @f5(<32 x i32> %a0, <32 x i32> %a1) #0 {283; V60-LABEL: f5:284; V60:       // %bb.0:285; V60-NEXT:    {286; V60-NEXT:     v2.w = vmpyieo(v0.h,v1.h)287; V60-NEXT:    }288; V60-NEXT:    {289; V60-NEXT:     v2.w += vmpyie(v0.w,v1.uh)290; V60-NEXT:    }291; V60-NEXT:    {292; V60-NEXT:     v0 = v2293; V60-NEXT:    }294; V60-NEXT:    {295; V60-NEXT:     jumpr r31296; V60-NEXT:    }297;298; V62-LABEL: f5:299; V62:       // %bb.0:300; V62-NEXT:    {301; V62-NEXT:     v2.w = vmpyieo(v0.h,v1.h)302; V62-NEXT:    }303; V62-NEXT:    {304; V62-NEXT:     v2.w += vmpyie(v0.w,v1.uh)305; V62-NEXT:    }306; V62-NEXT:    {307; V62-NEXT:     v0 = v2308; V62-NEXT:    }309; V62-NEXT:    {310; V62-NEXT:     jumpr r31311; V62-NEXT:    }312  %v0 = call {<32 x i32>, <32 x i32>} @llvm.hexagon.V6.vmpyuu.parts.128B(<32 x i32> %a0, <32 x i32> %a1)313  %v1 = extractvalue {<32 x i32>, <32 x i32>} %v0, 1314  ret <32 x i32> %v1315}316 317define <64 x i32> @f10(<32 x i32> %a0, <32 x i32> %a1) #0 {318; V60-LABEL: f10:319; V60:       // %bb.0:320; V60-NEXT:    {321; V60-NEXT:     r0 = ##33686018322; V60-NEXT:    }323; V60-NEXT:    {324; V60-NEXT:     v3:2 = vcombine(v0,v1)325; V60-NEXT:    }326; V60-NEXT:    {327; V60-NEXT:     v1:0.uw = vmpy(v0.uh,v1.uh)328; V60-NEXT:    }329; V60-NEXT:    {330; V60-NEXT:     r2 = #16331; V60-NEXT:    }332; V60-NEXT:    {333; V60-NEXT:     v5 = vsplat(r0)334; V60-NEXT:    }335; V60-NEXT:    {336; V60-NEXT:     v4 = vxor(v4,v4)337; V60-NEXT:    }338; V60-NEXT:    {339; V60-NEXT:     v6.uw = vlsr(v0.uw,r2)340; V60-NEXT:    }341; V60-NEXT:    {342; V60-NEXT:     q1 = vcmp.gt(v4.w,v3.w)343; V60-NEXT:    }344; V60-NEXT:    {345; V60-NEXT:     q0 = vcmp.gt(v4.w,v2.w)346; V60-NEXT:    }347; V60-NEXT:    {348; V60-NEXT:     v5 = vdelta(v2,v5)349; V60-NEXT:    }350; V60-NEXT:    {351; V60-NEXT:     v2 = vmux(q1,v2,v4)352; V60-NEXT:    }353; V60-NEXT:    {354; V60-NEXT:     if (q0) v2.w += v3.w355; V60-NEXT:    }356; V60-NEXT:    {357; V60-NEXT:     v9:8.uw = vmpy(v3.uh,v5.uh)358; V60-NEXT:    }359; V60-NEXT:    {360; V60-NEXT:     v9:8.w = vadd(v9.uh,v8.uh)361; V60-NEXT:    }362; V60-NEXT:    {363; V60-NEXT:     v31.w = vadd(v8.w,v6.w)364; V60-NEXT:    }365; V60-NEXT:    {366; V60-NEXT:     v0.w += vasl(v8.w,r2)367; V60-NEXT:    }368; V60-NEXT:    {369; V60-NEXT:     v9.w += vasr(v31.w,r2)370; V60-NEXT:    }371; V60-NEXT:    {372; V60-NEXT:     v1.w = vadd(v1.w,v9.w)373; V60-NEXT:    }374; V60-NEXT:    {375; V60-NEXT:     v1.w = vsub(v1.w,v2.w)376; V60-NEXT:    }377; V60-NEXT:    {378; V60-NEXT:     jumpr r31379; V60-NEXT:    }380;381; V62-LABEL: f10:382; V62:       // %bb.0:383; V62-NEXT:    {384; V62-NEXT:     v3:2 = vmpye(v0.w,v1.uh)385; V62-NEXT:    }386; V62-NEXT:    {387; V62-NEXT:     v3:2 += vmpyo(v0.w,v1.h)388; V62-NEXT:    }389; V62-NEXT:    {390; V62-NEXT:     v1:0 = vcombine(v3,v2)391; V62-NEXT:    }392; V62-NEXT:    {393; V62-NEXT:     jumpr r31394; V62-NEXT:    }395  %v0 = call {<32 x i32>, <32 x i32>} @llvm.hexagon.V6.vmpyss.parts.128B(<32 x i32> %a0, <32 x i32> %a1)396  %v1 = extractvalue {<32 x i32>, <32 x i32>} %v0, 0397  %v2 = extractvalue {<32 x i32>, <32 x i32>} %v0, 1398  %v3 = shufflevector <32 x i32> %v2, <32 x i32> %v1, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>399  ret <64 x i32> %v3400}401 402define <64 x i32> @f11(<32 x i32> %a0, <32 x i32> %a1) #0 {403; V60-LABEL: f11:404; V60:       // %bb.0:405; V60-NEXT:    {406; V60-NEXT:     r1:0 = combine(#16,##33686018)407; V60-NEXT:    }408; V60-NEXT:    {409; V60-NEXT:     v3:2.uw = vmpy(v0.uh,v1.uh)410; V60-NEXT:    }411; V60-NEXT:    {412; V60-NEXT:     v31 = vxor(v31,v31)413; V60-NEXT:    }414; V60-NEXT:    {415; V60-NEXT:     v4 = vsplat(r0)416; V60-NEXT:    }417; V60-NEXT:    {418; V60-NEXT:     q0 = vcmp.gt(v31.w,v1.w)419; V60-NEXT:    }420; V60-NEXT:    {421; V60-NEXT:     v5.uw = vlsr(v2.uw,r1)422; V60-NEXT:    }423; V60-NEXT:    {424; V60-NEXT:     v4 = vdelta(v1,v4)425; V60-NEXT:    }426; V60-NEXT:    {427; V60-NEXT:     v7:6.uw = vmpy(v0.uh,v4.uh)428; V60-NEXT:    }429; V60-NEXT:    {430; V60-NEXT:     v7:6.w = vadd(v7.uh,v6.uh)431; V60-NEXT:    }432; V60-NEXT:    {433; V60-NEXT:     v30.w = vadd(v6.w,v5.w)434; V60-NEXT:    }435; V60-NEXT:    {436; V60-NEXT:     v2.w += vasl(v6.w,r1)437; V60-NEXT:    }438; V60-NEXT:    {439; V60-NEXT:     v7.w += vasr(v30.w,r1)440; V60-NEXT:    }441; V60-NEXT:    {442; V60-NEXT:     v3.w = vadd(v3.w,v7.w)443; V60-NEXT:    }444; V60-NEXT:    {445; V60-NEXT:     if (q0) v3.w -= v0.w446; V60-NEXT:    }447; V60-NEXT:    {448; V60-NEXT:     v1:0 = vcombine(v3,v2)449; V60-NEXT:    }450; V60-NEXT:    {451; V60-NEXT:     jumpr r31452; V60-NEXT:    }453;454; V62-LABEL: f11:455; V62:       // %bb.0:456; V62-NEXT:    {457; V62-NEXT:     v3:2 = vmpye(v0.w,v1.uh)458; V62-NEXT:    }459; V62-NEXT:    {460; V62-NEXT:     v4 = vxor(v4,v4)461; V62-NEXT:    }462; V62-NEXT:    {463; V62-NEXT:     q0 = vcmp.gt(v4.w,v0.w)464; V62-NEXT:    }465; V62-NEXT:    {466; V62-NEXT:     v3:2 += vmpyo(v0.w,v1.h)467; V62-NEXT:    }468; V62-NEXT:    {469; V62-NEXT:     if (q0) v3.w += v1.w470; V62-NEXT:    }471; V62-NEXT:    {472; V62-NEXT:     v1:0 = vcombine(v3,v2)473; V62-NEXT:    }474; V62-NEXT:    {475; V62-NEXT:     jumpr r31476; V62-NEXT:    }477  %v0 = call {<32 x i32>, <32 x i32>} @llvm.hexagon.V6.vmpyus.parts.128B(<32 x i32> %a0, <32 x i32> %a1)478  %v1 = extractvalue {<32 x i32>, <32 x i32>} %v0, 0479  %v2 = extractvalue {<32 x i32>, <32 x i32>} %v0, 1480  %v3 = shufflevector <32 x i32> %v2, <32 x i32> %v1, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>481  ret <64 x i32> %v3482}483 484define <64 x i32> @f12(<32 x i32> %a0, <32 x i32> %a1) #0 {485; V60-LABEL: f12:486; V60:       // %bb.0:487; V60-NEXT:    {488; V60-NEXT:     r1:0 = combine(#16,##33686018)489; V60-NEXT:    }490; V60-NEXT:    {491; V60-NEXT:     v3:2.uw = vmpy(v0.uh,v1.uh)492; V60-NEXT:    }493; V60-NEXT:    {494; V60-NEXT:     v4 = vsplat(r0)495; V60-NEXT:    }496; V60-NEXT:    {497; V60-NEXT:     v5.uw = vlsr(v2.uw,r1)498; V60-NEXT:    }499; V60-NEXT:    {500; V60-NEXT:     v30 = vdelta(v1,v4)501; V60-NEXT:    }502; V60-NEXT:    {503; V60-NEXT:     v1:0.uw = vmpy(v0.uh,v30.uh)504; V60-NEXT:    }505; V60-NEXT:    {506; V60-NEXT:     v1:0.w = vadd(v1.uh,v0.uh)507; V60-NEXT:    }508; V60-NEXT:    {509; V60-NEXT:     v31.w = vadd(v0.w,v5.w)510; V60-NEXT:    }511; V60-NEXT:    {512; V60-NEXT:     v2.w += vasl(v0.w,r1)513; V60-NEXT:    }514; V60-NEXT:    {515; V60-NEXT:     v1.w += vasr(v31.w,r1)516; V60-NEXT:    }517; V60-NEXT:    {518; V60-NEXT:     v3.w = vadd(v3.w,v1.w)519; V60-NEXT:    }520; V60-NEXT:    {521; V60-NEXT:     v1:0 = vcombine(v3,v2)522; V60-NEXT:    }523; V60-NEXT:    {524; V60-NEXT:     jumpr r31525; V60-NEXT:    }526;527; V62-LABEL: f12:528; V62:       // %bb.0:529; V62-NEXT:    {530; V62-NEXT:     v4 = vxor(v4,v4)531; V62-NEXT:    }532; V62-NEXT:    {533; V62-NEXT:     v3:2 = vmpye(v0.w,v1.uh)534; V62-NEXT:    }535; V62-NEXT:    {536; V62-NEXT:     q0 = vcmp.gt(v4.w,v0.w)537; V62-NEXT:    }538; V62-NEXT:    {539; V62-NEXT:     q1 = vcmp.gt(v4.w,v1.w)540; V62-NEXT:    }541; V62-NEXT:    {542; V62-NEXT:     v3:2 += vmpyo(v0.w,v1.h)543; V62-NEXT:    }544; V62-NEXT:    {545; V62-NEXT:     v31 = vand(q0,v1)546; V62-NEXT:    }547; V62-NEXT:    {548; V62-NEXT:     if (q1) v31.w += v0.w549; V62-NEXT:    }550; V62-NEXT:    {551; V62-NEXT:     v3.w = vadd(v3.w,v31.w)552; V62-NEXT:    }553; V62-NEXT:    {554; V62-NEXT:     v1:0 = vcombine(v3,v2)555; V62-NEXT:    }556; V62-NEXT:    {557; V62-NEXT:     jumpr r31558; V62-NEXT:    }559  %v0 = call {<32 x i32>, <32 x i32>} @llvm.hexagon.V6.vmpyuu.parts.128B(<32 x i32> %a0, <32 x i32> %a1)560  %v1 = extractvalue {<32 x i32>, <32 x i32>} %v0, 0561  %v2 = extractvalue {<32 x i32>, <32 x i32>} %v0, 1562  %v3 = shufflevector <32 x i32> %v2, <32 x i32> %v1, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>563  ret <64 x i32> %v3564}565 566declare {<32 x i32>, <32 x i32>} @llvm.hexagon.V6.vmpyss.parts.128B(<32 x i32>, <32 x i32>)567declare {<32 x i32>, <32 x i32>} @llvm.hexagon.V6.vmpyus.parts.128B(<32 x i32>, <32 x i32>)568declare {<32 x i32>, <32 x i32>} @llvm.hexagon.V6.vmpyuu.parts.128B(<32 x i32>, <32 x i32>)569 570attributes #0 = { nounwind }571