brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 4fc6f54 Raw
97 lines · plain
1; Test population-count instruction2;3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z196 | FileCheck %s4 5declare i32 @llvm.ctpop.i32(i32 %a)6declare i64 @llvm.ctpop.i64(i64 %a)7 8define i32 @f1(i32 %a) {9; CHECK-LABEL: f1:10; CHECK: popcnt  %r0, %r211; CHECK: sllk    %r1, %r0, 1612; CHECK: ar      %r0, %r113; CHECK: sllk    %r1, %r0, 814; CHECK: ar      %r0, %r115; CHECK: srlk    %r2, %r0, 2416; CHECK: br      %r1417 18  %popcnt = call i32 @llvm.ctpop.i32(i32 %a)19  ret i32 %popcnt20}21 22define i32 @f2(i32 %a) {23; CHECK-LABEL: f2:24; CHECK: llhr    %r0, %r225; CHECK: popcnt  %r0, %r026; CHECK: risblg  %r1, %r0, 16, 151, 827; CHECK: ar      %r0, %r128; CHECK: srlk    %r2, %r0, 829; CHECK: br      %r1430  %and = and i32 %a, 6553531  %popcnt = call i32 @llvm.ctpop.i32(i32 %and)32  ret i32 %popcnt33}34 35define i32 @f3(i32 %a) {36; CHECK-LABEL: f3:37; CHECK: llcr    %r0, %r238; CHECK: popcnt  %r2, %r039; CHECK: br      %r1440  %and = and i32 %a, 25541  %popcnt = call i32 @llvm.ctpop.i32(i32 %and)42  ret i32 %popcnt43}44 45define i64 @f4(i64 %a) {46; CHECK-LABEL: f4:47; CHECK: popcnt  %r0, %r248; CHECK: sllg    %r1, %r0, 3249; CHECK: agr     %r0, %r150; CHECK: sllg    %r1, %r0, 1651; CHECK: agr     %r0, %r152; CHECK: sllg    %r1, %r0, 853; CHECK: agr     %r0, %r154; CHECK: srlg    %r2, %r0, 5655; CHECK: br      %r1456  %popcnt = call i64 @llvm.ctpop.i64(i64 %a)57  ret i64 %popcnt58}59 60define i64 @f5(i64 %a) {61; CHECK-LABEL: f5:62; CHECK: llgfr   %r0, %r263; CHECK: popcnt  %r0, %r064; CHECK: sllg    %r1, %r0, 1665; CHECK: algfr   %r0, %r166; CHECK: sllg    %r1, %r0, 867; CHECK: algfr   %r0, %r168; CHECK: srlg    %r2, %r0, 2469  %and = and i64 %a, 429496729570  %popcnt = call i64 @llvm.ctpop.i64(i64 %and)71  ret i64 %popcnt72}73 74define i64 @f6(i64 %a) {75; CHECK-LABEL: f6:76; CHECK: llghr   %r0, %r277; CHECK: popcnt  %r0, %r078; CHECK: risbg   %r1, %r0, 48, 183, 879; CHECK: agr     %r0, %r180; CHECK: srlg    %r2, %r0, 881; CHECK: br      %r1482  %and = and i64 %a, 6553583  %popcnt = call i64 @llvm.ctpop.i64(i64 %and)84  ret i64 %popcnt85}86 87define i64 @f7(i64 %a) {88; CHECK-LABEL: f7:89; CHECK: llgcr   %r0, %r290; CHECK: popcnt  %r2, %r091; CHECK: br      %r1492  %and = and i64 %a, 25593  %popcnt = call i64 @llvm.ctpop.i64(i64 %and)94  ret i64 %popcnt95}96 97