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
4 ; FIXME: can do better here ...
6 declare i128 @llvm.ctlz.i128(i128, i1)
8 define i128 @f1(i128 %a) {
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
40 %res = tail call i128 @llvm.ctlz.i128(i128 %a, i1 false)
44 define i128 @f2(i128 %a) {
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
76 %res = tail call i128 @llvm.ctlz.i128(i128 %a, i1 true)