1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 2; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s 3 4; FIXME: can do better here ... 5 6declare i128 @llvm.ctlz.i128(i128, i1) 7 8define i128 @f1(i128 %a) { 9; CHECK-LABEL: f1: 10; CHECK: # %bb.0: 11; CHECK-NEXT: vl %v0, 0(%r3), 3 12; CHECK-NEXT: vrepib %v1, 1 13; CHECK-NEXT: vsrl %v1, %v0, %v1 14; CHECK-NEXT: vo %v0, %v0, %v1 15; CHECK-NEXT: vrepib %v1, 2 16; CHECK-NEXT: vsrl %v1, %v0, %v1 17; CHECK-NEXT: vo %v0, %v0, %v1 18; CHECK-NEXT: vrepib %v1, 4 19; CHECK-NEXT: vsrl %v1, %v0, %v1 20; CHECK-NEXT: vo %v0, %v0, %v1 21; CHECK-NEXT: vrepib %v1, 8 22; CHECK-NEXT: vsrlb %v1, %v0, %v1 23; CHECK-NEXT: vo %v0, %v0, %v1 24; CHECK-NEXT: vrepib %v1, 16 25; CHECK-NEXT: vsrlb %v1, %v0, %v1 26; CHECK-NEXT: vo %v0, %v0, %v1 27; CHECK-NEXT: vrepib %v1, 32 28; CHECK-NEXT: vsrlb %v1, %v0, %v1 29; CHECK-NEXT: vo %v0, %v0, %v1 30; CHECK-NEXT: vrepib %v1, 64 31; CHECK-NEXT: vsrlb %v1, %v0, %v1 32; CHECK-NEXT: vno %v0, %v0, %v1 33; CHECK-NEXT: vpopct %v0, %v0, 0 34; CHECK-NEXT: vgbm %v1, 0 35; CHECK-NEXT: vsumb %v0, %v0, %v1 36; CHECK-NEXT: vsumgf %v0, %v0, %v1 37; CHECK-NEXT: vsumqg %v0, %v0, %v1 38; CHECK-NEXT: vst %v0, 0(%r2), 3 39; CHECK-NEXT: br %r14 40 %res = tail call i128 @llvm.ctlz.i128(i128 %a, i1 false) 41 ret i128 %res 42} 43 44define i128 @f2(i128 %a) { 45; CHECK-LABEL: f2: 46; CHECK: # %bb.0: 47; CHECK-NEXT: vl %v0, 0(%r3), 3 48; CHECK-NEXT: vrepib %v1, 1 49; CHECK-NEXT: vsrl %v1, %v0, %v1 50; CHECK-NEXT: vo %v0, %v0, %v1 51; CHECK-NEXT: vrepib %v1, 2 52; CHECK-NEXT: vsrl %v1, %v0, %v1 53; CHECK-NEXT: vo %v0, %v0, %v1 54; CHECK-NEXT: vrepib %v1, 4 55; CHECK-NEXT: vsrl %v1, %v0, %v1 56; CHECK-NEXT: vo %v0, %v0, %v1 57; CHECK-NEXT: vrepib %v1, 8 58; CHECK-NEXT: vsrlb %v1, %v0, %v1 59; CHECK-NEXT: vo %v0, %v0, %v1 60; CHECK-NEXT: vrepib %v1, 16 61; CHECK-NEXT: vsrlb %v1, %v0, %v1 62; CHECK-NEXT: vo %v0, %v0, %v1 63; CHECK-NEXT: vrepib %v1, 32 64; CHECK-NEXT: vsrlb %v1, %v0, %v1 65; CHECK-NEXT: vo %v0, %v0, %v1 66; CHECK-NEXT: vrepib %v1, 64 67; CHECK-NEXT: vsrlb %v1, %v0, %v1 68; CHECK-NEXT: vno %v0, %v0, %v1 69; CHECK-NEXT: vpopct %v0, %v0, 0 70; CHECK-NEXT: vgbm %v1, 0 71; CHECK-NEXT: vsumb %v0, %v0, %v1 72; CHECK-NEXT: vsumgf %v0, %v0, %v1 73; CHECK-NEXT: vsumqg %v0, %v0, %v1 74; CHECK-NEXT: vst %v0, 0(%r2), 3 75; CHECK-NEXT: br %r14 76 %res = tail call i128 @llvm.ctlz.i128(i128 %a, i1 true) 77 ret i128 %res 78} 79