138 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s3 4;5; CTPOP6;7 8define <vscale x 16 x i1> @ctpop_nxv16i1(<vscale x 16 x i1> %a) {9; CHECK-LABEL: ctpop_nxv16i1:10; CHECK: // %bb.0:11; CHECK-NEXT: ret12 %res = call <vscale x 16 x i1> @llvm.ctpop.nxv16i1(<vscale x 16 x i1> %a)13 ret <vscale x 16 x i1> %res14}15 16define <vscale x 8 x i1> @ctpop_nxv8i1(<vscale x 8 x i1> %a) {17; CHECK-LABEL: ctpop_nxv8i1:18; CHECK: // %bb.0:19; CHECK-NEXT: ret20 %res = call <vscale x 8 x i1> @llvm.ctpop.nxv8i1(<vscale x 8 x i1> %a)21 ret <vscale x 8 x i1> %res22}23 24define <vscale x 4 x i1> @ctpop_nxv4i1(<vscale x 4 x i1> %a) {25; CHECK-LABEL: ctpop_nxv4i1:26; CHECK: // %bb.0:27; CHECK-NEXT: ret28 %res = call <vscale x 4 x i1> @llvm.ctpop.nxv4i1(<vscale x 4 x i1> %a)29 ret <vscale x 4 x i1> %res30}31 32define <vscale x 2 x i1> @ctpop_nxv2i1(<vscale x 2 x i1> %a) {33; CHECK-LABEL: ctpop_nxv2i1:34; CHECK: // %bb.0:35; CHECK-NEXT: ret36 %res = call <vscale x 2 x i1> @llvm.ctpop.nxv2i1(<vscale x 2 x i1> %a)37 ret <vscale x 2 x i1> %res38}39 40; CTLZ41 42define <vscale x 16 x i1> @ctlz_nxv16i1(<vscale x 16 x i1> %a) {43; CHECK-LABEL: ctlz_nxv16i1:44; CHECK: // %bb.0:45; CHECK-NEXT: ptrue p1.b46; CHECK-NEXT: not p0.b, p1/z, p0.b47; CHECK-NEXT: ret48 %res = call <vscale x 16 x i1> @llvm.ctlz.nxv16i1(<vscale x 16 x i1> %a)49 ret <vscale x 16 x i1> %res50}51 52define <vscale x 8 x i1> @ctlz_nxv8i1(<vscale x 8 x i1> %a) {53; CHECK-LABEL: ctlz_nxv8i1:54; CHECK: // %bb.0:55; CHECK-NEXT: ptrue p1.h56; CHECK-NEXT: not p0.b, p1/z, p0.b57; CHECK-NEXT: ret58 %res = call <vscale x 8 x i1> @llvm.ctlz.nxv8i1(<vscale x 8 x i1> %a)59 ret <vscale x 8 x i1> %res60}61 62define <vscale x 4 x i1> @ctlz_nxv4i1(<vscale x 4 x i1> %a) {63; CHECK-LABEL: ctlz_nxv4i1:64; CHECK: // %bb.0:65; CHECK-NEXT: ptrue p1.s66; CHECK-NEXT: not p0.b, p1/z, p0.b67; CHECK-NEXT: ret68 %res = call <vscale x 4 x i1> @llvm.ctlz.nxv4i1(<vscale x 4 x i1> %a)69 ret <vscale x 4 x i1> %res70}71 72define <vscale x 2 x i1> @ctlz_nxv2i1(<vscale x 2 x i1> %a) {73; CHECK-LABEL: ctlz_nxv2i1:74; CHECK: // %bb.0:75; CHECK-NEXT: ptrue p1.d76; CHECK-NEXT: not p0.b, p1/z, p0.b77; CHECK-NEXT: ret78 %res = call <vscale x 2 x i1> @llvm.ctlz.nxv2i1(<vscale x 2 x i1> %a)79 ret <vscale x 2 x i1> %res80}81 82; CTTZ83 84define <vscale x 16 x i1> @cttz_nxv16i1(<vscale x 16 x i1> %a) {85; CHECK-LABEL: cttz_nxv16i1:86; CHECK: // %bb.0:87; CHECK-NEXT: ptrue p1.b88; CHECK-NEXT: not p0.b, p1/z, p0.b89; CHECK-NEXT: ret90 %res = call <vscale x 16 x i1> @llvm.cttz.nxv16i1(<vscale x 16 x i1> %a)91 ret <vscale x 16 x i1> %res92}93 94define <vscale x 8 x i1> @cttz_nxv8i1(<vscale x 8 x i1> %a) {95; CHECK-LABEL: cttz_nxv8i1:96; CHECK: // %bb.0:97; CHECK-NEXT: ptrue p1.h98; CHECK-NEXT: not p0.b, p1/z, p0.b99; CHECK-NEXT: ret100 %res = call <vscale x 8 x i1> @llvm.cttz.nxv8i1(<vscale x 8 x i1> %a)101 ret <vscale x 8 x i1> %res102}103 104define <vscale x 4 x i1> @cttz_nxv4i1(<vscale x 4 x i1> %a) {105; CHECK-LABEL: cttz_nxv4i1:106; CHECK: // %bb.0:107; CHECK-NEXT: ptrue p1.s108; CHECK-NEXT: not p0.b, p1/z, p0.b109; CHECK-NEXT: ret110 %res = call <vscale x 4 x i1> @llvm.cttz.nxv4i1(<vscale x 4 x i1> %a)111 ret <vscale x 4 x i1> %res112}113 114define <vscale x 2 x i1> @cttz_nxv2i1(<vscale x 2 x i1> %a) {115; CHECK-LABEL: cttz_nxv2i1:116; CHECK: // %bb.0:117; CHECK-NEXT: ptrue p1.d118; CHECK-NEXT: not p0.b, p1/z, p0.b119; CHECK-NEXT: ret120 %res = call <vscale x 2 x i1> @llvm.cttz.nxv2i1(<vscale x 2 x i1> %a)121 ret <vscale x 2 x i1> %res122}123 124declare <vscale x 16 x i1> @llvm.ctpop.nxv16i1(<vscale x 16 x i1>)125declare <vscale x 8 x i1> @llvm.ctpop.nxv8i1(<vscale x 8 x i1>)126declare <vscale x 4 x i1> @llvm.ctpop.nxv4i1(<vscale x 4 x i1>)127declare <vscale x 2 x i1> @llvm.ctpop.nxv2i1(<vscale x 2 x i1>)128 129declare <vscale x 16 x i1> @llvm.ctlz.nxv16i1(<vscale x 16 x i1>)130declare <vscale x 8 x i1> @llvm.ctlz.nxv8i1(<vscale x 8 x i1>)131declare <vscale x 4 x i1> @llvm.ctlz.nxv4i1(<vscale x 4 x i1>)132declare <vscale x 2 x i1> @llvm.ctlz.nxv2i1(<vscale x 2 x i1>)133 134declare <vscale x 16 x i1> @llvm.cttz.nxv16i1(<vscale x 16 x i1>)135declare <vscale x 8 x i1> @llvm.cttz.nxv8i1(<vscale x 8 x i1>)136declare <vscale x 4 x i1> @llvm.cttz.nxv4i1(<vscale x 4 x i1>)137declare <vscale x 2 x i1> @llvm.cttz.nxv2i1(<vscale x 2 x i1>)138