• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc < %s -mtriple=arm64-eabi -aarch64-neon-syntax=apple | FileCheck %s
2
3define <8 x i8> @test_vclz_u8(<8 x i8> %a) nounwind readnone ssp {
4  ; CHECK-LABEL: test_vclz_u8:
5  ; CHECK: clz.8b v0, v0
6  ; CHECK-NEXT: ret
7  %vclz.i = tail call <8 x i8> @llvm.ctlz.v8i8(<8 x i8> %a, i1 false) nounwind
8  ret <8 x i8> %vclz.i
9}
10
11define <8 x i8> @test_vclz_s8(<8 x i8> %a) nounwind readnone ssp {
12  ; CHECK-LABEL: test_vclz_s8:
13  ; CHECK: clz.8b v0, v0
14  ; CHECK-NEXT: ret
15  %vclz.i = tail call <8 x i8> @llvm.ctlz.v8i8(<8 x i8> %a, i1 false) nounwind
16  ret <8 x i8> %vclz.i
17}
18
19define <4 x i16> @test_vclz_u16(<4 x i16> %a) nounwind readnone ssp {
20  ; CHECK-LABEL: test_vclz_u16:
21  ; CHECK: clz.4h v0, v0
22  ; CHECK-NEXT: ret
23  %vclz1.i = tail call <4 x i16> @llvm.ctlz.v4i16(<4 x i16> %a, i1 false) nounwind
24  ret <4 x i16> %vclz1.i
25}
26
27define <4 x i16> @test_vclz_s16(<4 x i16> %a) nounwind readnone ssp {
28  ; CHECK-LABEL: test_vclz_s16:
29  ; CHECK: clz.4h v0, v0
30  ; CHECK-NEXT: ret
31  %vclz1.i = tail call <4 x i16> @llvm.ctlz.v4i16(<4 x i16> %a, i1 false) nounwind
32  ret <4 x i16> %vclz1.i
33}
34
35define <2 x i32> @test_vclz_u32(<2 x i32> %a) nounwind readnone ssp {
36  ; CHECK-LABEL: test_vclz_u32:
37  ; CHECK: clz.2s v0, v0
38  ; CHECK-NEXT: ret
39  %vclz1.i = tail call <2 x i32> @llvm.ctlz.v2i32(<2 x i32> %a, i1 false) nounwind
40  ret <2 x i32> %vclz1.i
41}
42
43define <2 x i32> @test_vclz_s32(<2 x i32> %a) nounwind readnone ssp {
44  ; CHECK-LABEL: test_vclz_s32:
45  ; CHECK: clz.2s v0, v0
46  ; CHECK-NEXT: ret
47  %vclz1.i = tail call <2 x i32> @llvm.ctlz.v2i32(<2 x i32> %a, i1 false) nounwind
48  ret <2 x i32> %vclz1.i
49}
50
51define <1 x i64> @test_vclz_u64(<1 x i64> %a) nounwind readnone ssp {
52  ; CHECK-LABEL: test_vclz_u64:
53  %vclz1.i = tail call <1 x i64> @llvm.ctlz.v1i64(<1 x i64> %a, i1 false) nounwind
54  ret <1 x i64> %vclz1.i
55}
56
57define <1 x i64> @test_vclz_s64(<1 x i64> %a) nounwind readnone ssp {
58  ; CHECK-LABEL: test_vclz_s64:
59  %vclz1.i = tail call <1 x i64> @llvm.ctlz.v1i64(<1 x i64> %a, i1 false) nounwind
60  ret <1 x i64> %vclz1.i
61}
62
63define <16 x i8> @test_vclzq_u8(<16 x i8> %a) nounwind readnone ssp {
64  ; CHECK-LABEL: test_vclzq_u8:
65  ; CHECK: clz.16b v0, v0
66  ; CHECK-NEXT: ret
67  %vclz.i = tail call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 false) nounwind
68  ret <16 x i8> %vclz.i
69}
70
71define <16 x i8> @test_vclzq_s8(<16 x i8> %a) nounwind readnone ssp {
72  ; CHECK-LABEL: test_vclzq_s8:
73  ; CHECK: clz.16b v0, v0
74  ; CHECK-NEXT: ret
75  %vclz.i = tail call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %a, i1 false) nounwind
76  ret <16 x i8> %vclz.i
77}
78
79define <8 x i16> @test_vclzq_u16(<8 x i16> %a) nounwind readnone ssp {
80  ; CHECK-LABEL: test_vclzq_u16:
81  ; CHECK: clz.8h v0, v0
82  ; CHECK-NEXT: ret
83  %vclz1.i = tail call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 false) nounwind
84  ret <8 x i16> %vclz1.i
85}
86
87define <8 x i16> @test_vclzq_s16(<8 x i16> %a) nounwind readnone ssp {
88  ; CHECK-LABEL: test_vclzq_s16:
89  ; CHECK: clz.8h v0, v0
90  ; CHECK-NEXT: ret
91  %vclz1.i = tail call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %a, i1 false) nounwind
92  ret <8 x i16> %vclz1.i
93}
94
95define <4 x i32> @test_vclzq_u32(<4 x i32> %a) nounwind readnone ssp {
96  ; CHECK-LABEL: test_vclzq_u32:
97  ; CHECK: clz.4s v0, v0
98  ; CHECK-NEXT: ret
99  %vclz1.i = tail call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 false) nounwind
100  ret <4 x i32> %vclz1.i
101}
102
103define <4 x i32> @test_vclzq_s32(<4 x i32> %a) nounwind readnone ssp {
104  ; CHECK-LABEL: test_vclzq_s32:
105  ; CHECK: clz.4s v0, v0
106  ; CHECK-NEXT: ret
107  %vclz1.i = tail call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %a, i1 false) nounwind
108  ret <4 x i32> %vclz1.i
109}
110
111define <2 x i64> @test_vclzq_u64(<2 x i64> %a) nounwind readnone ssp {
112  ; CHECK-LABEL: test_vclzq_u64:
113  %vclz1.i = tail call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 false) nounwind
114  ret <2 x i64> %vclz1.i
115}
116
117define <2 x i64> @test_vclzq_s64(<2 x i64> %a) nounwind readnone ssp {
118  ; CHECK-LABEL: test_vclzq_s64:
119  %vclz1.i = tail call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %a, i1 false) nounwind
120  ret <2 x i64> %vclz1.i
121}
122
123declare <2 x i64> @llvm.ctlz.v2i64(<2 x i64>, i1) nounwind readnone
124
125declare <4 x i32> @llvm.ctlz.v4i32(<4 x i32>, i1) nounwind readnone
126
127declare <8 x i16> @llvm.ctlz.v8i16(<8 x i16>, i1) nounwind readnone
128
129declare <16 x i8> @llvm.ctlz.v16i8(<16 x i8>, i1) nounwind readnone
130
131declare <1 x i64> @llvm.ctlz.v1i64(<1 x i64>, i1) nounwind readnone
132
133declare <2 x i32> @llvm.ctlz.v2i32(<2 x i32>, i1) nounwind readnone
134
135declare <4 x i16> @llvm.ctlz.v4i16(<4 x i16>, i1) nounwind readnone
136
137declare <8 x i8> @llvm.ctlz.v8i8(<8 x i8>, i1) nounwind readnone
138