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