brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.4 KiB · 3330d6a Raw
273 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=hexagon | FileCheck %s3; RUN: llc < %s -mtriple=hexagon -mattr=+hvx,hvx-length64b | FileCheck %s --check-prefix=CHECK-64B4; RUN: llc < %s -mtriple=hexagon -mattr=+hvx,hvx-length128b | FileCheck %s --check-prefix=CHECK-128B5define <2 x i32> @test1(<2 x i32> %m) {6; CHECK-LABEL: test1:7; CHECK:         .cfi_startproc8; CHECK-NEXT:  // %bb.0: // %entry9; CHECK-NEXT:    {10; CHECK-NEXT:     r1 = extract(r1,#8,#0)11; CHECK-NEXT:     r0 = sxtb(r0)12; CHECK-NEXT:     jumpr r3113; CHECK-NEXT:    }14;15; CHECK-64B-LABEL: test1:16; CHECK-64B:         .cfi_startproc17; CHECK-64B-NEXT:  // %bb.0: // %entry18; CHECK-64B-NEXT:    {19; CHECK-64B-NEXT:     r1 = extract(r1,#8,#0)20; CHECK-64B-NEXT:     r0 = sxtb(r0)21; CHECK-64B-NEXT:     jumpr r3122; CHECK-64B-NEXT:    }23;24; CHECK-128B-LABEL: test1:25; CHECK-128B:         .cfi_startproc26; CHECK-128B-NEXT:  // %bb.0: // %entry27; CHECK-128B-NEXT:    {28; CHECK-128B-NEXT:     r1 = extract(r1,#8,#0)29; CHECK-128B-NEXT:     r0 = sxtb(r0)30; CHECK-128B-NEXT:     jumpr r3131; CHECK-128B-NEXT:    }32entry:33  %shl = shl <2 x i32> %m, <i32 24, i32 24>34  %shr = ashr exact <2 x i32> %shl, <i32 24, i32 24>35  ret <2 x i32> %shr36}37 38define <16 x i32> @test2(<16 x i32> %m) {39; CHECK-LABEL: test2:40; CHECK:         .cfi_startproc41; CHECK-NEXT:  // %bb.0: // %entry42; CHECK-NEXT:    {43; CHECK-NEXT:     r3 = extract(r3,#8,#0)44; CHECK-NEXT:     r29 = add(r29,#-8)45; CHECK-NEXT:     r2 = sxtb(r2)46; CHECK-NEXT:     r4 = sxtb(r4)47; CHECK-NEXT:    }48; CHECK-NEXT:    {49; CHECK-NEXT:     r5 = extract(r5,#8,#0)50; CHECK-NEXT:     r13:12 = memd(r29+#48)51; CHECK-NEXT:     memd(r29+#0) = r17:1652; CHECK-NEXT:    }53; CHECK-NEXT:    {54; CHECK-NEXT:     r13 = extract(r13,#8,#0)55; CHECK-NEXT:     r12 = sxtb(r12)56; CHECK-NEXT:     r15:14 = memd(r29+#40)57; CHECK-NEXT:     r9:8 = memd(r29+#32)58; CHECK-NEXT:    }59; CHECK-NEXT:    {60; CHECK-NEXT:     r9 = extract(r9,#8,#0)61; CHECK-NEXT:     r8 = sxtb(r8)62; CHECK-NEXT:     r11:10 = memd(r29+#24)63; CHECK-NEXT:     r7:6 = memd(r29+#16)64; CHECK-NEXT:    }65; CHECK-NEXT:    {66; CHECK-NEXT:     r11 = extract(r11,#8,#0)67; CHECK-NEXT:     r10 = sxtb(r10)68; CHECK-NEXT:     r14 = sxtb(r14)69; CHECK-NEXT:     r17:16 = memd(r29+#8)70; CHECK-NEXT:    }71; CHECK-NEXT:    {72; CHECK-NEXT:     r15 = extract(r15,#8,#0)73; CHECK-NEXT:     r17 = extract(r17,#8,#0)74; CHECK-NEXT:     r16 = sxtb(r16)75; CHECK-NEXT:     r6 = sxtb(r6)76; CHECK-NEXT:    }77; CHECK-NEXT:    {78; CHECK-NEXT:     r7 = extract(r7,#8,#0)79; CHECK-NEXT:     memd(r0+#56) = r13:1280; CHECK-NEXT:     memd(r0+#48) = r15:1481; CHECK-NEXT:    }82; CHECK-NEXT:    {83; CHECK-NEXT:     memd(r0+#40) = r9:884; CHECK-NEXT:     memd(r0+#32) = r11:1085; CHECK-NEXT:    }86; CHECK-NEXT:    {87; CHECK-NEXT:     memd(r0+#24) = r7:688; CHECK-NEXT:     memd(r0+#16) = r17:1689; CHECK-NEXT:    }90; CHECK-NEXT:    {91; CHECK-NEXT:     memd(r0+#8) = r5:492; CHECK-NEXT:     memd(r0+#0) = r3:293; CHECK-NEXT:    }94; CHECK-NEXT:    {95; CHECK-NEXT:     r29 = add(r29,#8)96; CHECK-NEXT:     r17:16 = memd(r29+#0)97; CHECK-NEXT:     jumpr r3198; CHECK-NEXT:    } // 8-byte Folded Reload99;100; CHECK-64B-LABEL: test2:101; CHECK-64B:         .cfi_startproc102; CHECK-64B-NEXT:  // %bb.0: // %entry103; CHECK-64B-NEXT:    {104; CHECK-64B-NEXT:     r0 = #24105; CHECK-64B-NEXT:    }106; CHECK-64B-NEXT:    {107; CHECK-64B-NEXT:     v0.w = vasl(v0.w,r0)108; CHECK-64B-NEXT:    }109; CHECK-64B-NEXT:    {110; CHECK-64B-NEXT:     v0.w = vasr(v0.w,r0)111; CHECK-64B-NEXT:     jumpr r31112; CHECK-64B-NEXT:    }113;114; CHECK-128B-LABEL: test2:115; CHECK-128B:         .cfi_startproc116; CHECK-128B-NEXT:  // %bb.0: // %entry117; CHECK-128B-NEXT:    {118; CHECK-128B-NEXT:     r0 = #24119; CHECK-128B-NEXT:    }120; CHECK-128B-NEXT:    {121; CHECK-128B-NEXT:     v0.w = vasl(v0.w,r0)122; CHECK-128B-NEXT:    }123; CHECK-128B-NEXT:    {124; CHECK-128B-NEXT:     v0.w = vasr(v0.w,r0)125; CHECK-128B-NEXT:     jumpr r31126; CHECK-128B-NEXT:    }127entry:128  %shl = shl <16 x i32> %m, <i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24>129  %shr = ashr exact <16 x i32> %shl, <i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24>130  ret <16 x i32> %shr131}132 133define <64 x i16> @test3(<64 x i16> %m) {134; CHECK-LABEL: test3:135; CHECK:         .cfi_startproc136; CHECK-NEXT:  // %bb.0: // %entry137; CHECK-NEXT:    {138; CHECK-NEXT:     r3:2 = vaslh(r3:2,#8)139; CHECK-NEXT:     r5:4 = vaslh(r5:4,#8)140; CHECK-NEXT:     r9:8 = memd(r29+#96)141; CHECK-NEXT:     r11:10 = memd(r29+#88)142; CHECK-NEXT:    }143; CHECK-NEXT:    {144; CHECK-NEXT:     r9:8 = vaslh(r9:8,#8)145; CHECK-NEXT:     r11:10 = vaslh(r11:10,#8)146; CHECK-NEXT:     r13:12 = memd(r29+#80)147; CHECK-NEXT:     r7:6 = memd(r29+#104)148; CHECK-NEXT:    }149; CHECK-NEXT:    {150; CHECK-NEXT:     r15:14 = vaslh(r7:6,#8)151; CHECK-NEXT:     r13:12 = vaslh(r13:12,#8)152; CHECK-NEXT:     r7:6 = memd(r29+#72)153; CHECK-NEXT:    }154; CHECK-NEXT:    {155; CHECK-NEXT:     r15:14 = vasrh(r15:14,#8)156; CHECK-NEXT:     r9:8 = vasrh(r9:8,#8)157; CHECK-NEXT:    }158; CHECK-NEXT:    {159; CHECK-NEXT:     r11:10 = vasrh(r11:10,#8)160; CHECK-NEXT:     r13:12 = vasrh(r13:12,#8)161; CHECK-NEXT:     r15:14 = memd(r29+#64)162; CHECK-NEXT:     memd(r0+#120) = r15:14163; CHECK-NEXT:    }164; CHECK-NEXT:    {165; CHECK-NEXT:     r7:6 = vaslh(r7:6,#8)166; CHECK-NEXT:     r15:14 = vaslh(r15:14,#8)167; CHECK-NEXT:     r9:8 = memd(r29+#56)168; CHECK-NEXT:     memd(r0+#112) = r9:8169; CHECK-NEXT:    }170; CHECK-NEXT:    {171; CHECK-NEXT:     r9:8 = vaslh(r9:8,#8)172; CHECK-NEXT:     r7:6 = vasrh(r7:6,#8)173; CHECK-NEXT:     r11:10 = memd(r29+#48)174; CHECK-NEXT:     memd(r0+#104) = r11:10175; CHECK-NEXT:    }176; CHECK-NEXT:    {177; CHECK-NEXT:     r11:10 = vaslh(r11:10,#8)178; CHECK-NEXT:     r15:14 = vasrh(r15:14,#8)179; CHECK-NEXT:     r13:12 = memd(r29+#40)180; CHECK-NEXT:     memd(r0+#96) = r13:12181; CHECK-NEXT:    }182; CHECK-NEXT:    {183; CHECK-NEXT:     r13:12 = vaslh(r13:12,#8)184; CHECK-NEXT:     r9:8 = vasrh(r9:8,#8)185; CHECK-NEXT:     r7:6 = memd(r29+#32)186; CHECK-NEXT:     memd(r0+#88) = r7:6187; CHECK-NEXT:    }188; CHECK-NEXT:    {189; CHECK-NEXT:     r11:10 = vasrh(r11:10,#8)190; CHECK-NEXT:     r13:12 = vasrh(r13:12,#8)191; CHECK-NEXT:     r15:14 = memd(r29+#0)192; CHECK-NEXT:     memd(r0+#80) = r15:14193; CHECK-NEXT:    }194; CHECK-NEXT:    {195; CHECK-NEXT:     r7:6 = vaslh(r7:6,#8)196; CHECK-NEXT:     r15:14 = vaslh(r15:14,#8)197; CHECK-NEXT:     r9:8 = memd(r29+#16)198; CHECK-NEXT:     memd(r0+#72) = r9:8199; CHECK-NEXT:    }200; CHECK-NEXT:    {201; CHECK-NEXT:     r9:8 = vaslh(r9:8,#8)202; CHECK-NEXT:     r7:6 = vasrh(r7:6,#8)203; CHECK-NEXT:     r11:10 = memd(r29+#24)204; CHECK-NEXT:     memd(r0+#64) = r11:10205; CHECK-NEXT:    }206; CHECK-NEXT:    {207; CHECK-NEXT:     r11:10 = vaslh(r11:10,#8)208; CHECK-NEXT:     r3:2 = vasrh(r3:2,#8)209; CHECK-NEXT:     r13:12 = memd(r29+#8)210; CHECK-NEXT:     memd(r0+#56) = r13:12211; CHECK-NEXT:    }212; CHECK-NEXT:    {213; CHECK-NEXT:     r13:12 = vaslh(r13:12,#8)214; CHECK-NEXT:     r9:8 = vasrh(r9:8,#8)215; CHECK-NEXT:     memd(r0+#48) = r7:6216; CHECK-NEXT:     memd(r0+#0) = r3:2217; CHECK-NEXT:    }218; CHECK-NEXT:    {219; CHECK-NEXT:     r11:10 = vasrh(r11:10,#8)220; CHECK-NEXT:     r7:6 = vasrh(r15:14,#8)221; CHECK-NEXT:     memd(r0+#32) = r9:8222; CHECK-NEXT:    }223; CHECK-NEXT:    {224; CHECK-NEXT:     r13:12 = vasrh(r13:12,#8)225; CHECK-NEXT:     r5:4 = vasrh(r5:4,#8)226; CHECK-NEXT:     memd(r0+#40) = r11:10227; CHECK-NEXT:     memd(r0+#16) = r7:6228; CHECK-NEXT:    }229; CHECK-NEXT:    {230; CHECK-NEXT:     jumpr r31231; CHECK-NEXT:     memd(r0+#24) = r13:12232; CHECK-NEXT:     memd(r0+#8) = r5:4233; CHECK-NEXT:    }234;235; CHECK-64B-LABEL: test3:236; CHECK-64B:         .cfi_startproc237; CHECK-64B-NEXT:  // %bb.0: // %entry238; CHECK-64B-NEXT:    {239; CHECK-64B-NEXT:     r0 = #8240; CHECK-64B-NEXT:    }241; CHECK-64B-NEXT:    {242; CHECK-64B-NEXT:     v0.h = vasl(v0.h,r0)243; CHECK-64B-NEXT:    }244; CHECK-64B-NEXT:    {245; CHECK-64B-NEXT:     v1.h = vasl(v1.h,r0)246; CHECK-64B-NEXT:    }247; CHECK-64B-NEXT:    {248; CHECK-64B-NEXT:     v0.h = vasr(v0.h,r0)249; CHECK-64B-NEXT:    }250; CHECK-64B-NEXT:    {251; CHECK-64B-NEXT:     v1.h = vasr(v1.h,r0)252; CHECK-64B-NEXT:     jumpr r31253; CHECK-64B-NEXT:    }254;255; CHECK-128B-LABEL: test3:256; CHECK-128B:         .cfi_startproc257; CHECK-128B-NEXT:  // %bb.0: // %entry258; CHECK-128B-NEXT:    {259; CHECK-128B-NEXT:     r0 = #8260; CHECK-128B-NEXT:    }261; CHECK-128B-NEXT:    {262; CHECK-128B-NEXT:     v0.h = vasl(v0.h,r0)263; CHECK-128B-NEXT:    }264; CHECK-128B-NEXT:    {265; CHECK-128B-NEXT:     v0.h = vasr(v0.h,r0)266; CHECK-128B-NEXT:     jumpr r31267; CHECK-128B-NEXT:    }268entry:269  %shl = shl <64 x i16> %m, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>270  %shr = ashr exact <64 x i16> %shl, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>271  ret <64 x i16> %shr272}273