53 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt < %s -passes=slp-vectorizer -o - -S -slp-threshold=-1000 | FileCheck %s3 4target datalayout = "e-p:32:32-i64:64-v16:16-v32:32-n16:32:64"5target triple = "nvptx--nvidiacl"6 7; Vector versions of the intrinsics are scalarized, so keep them scalar8define <2 x i8> @cltz_test(<2 x i8> %x) {9; CHECK-LABEL: define <2 x i8> @cltz_test(10; CHECK-SAME: <2 x i8> [[X:%.*]]) {11; CHECK-NEXT: [[ENTRY:.*:]]12; CHECK-NEXT: [[TMP0:%.*]] = extractelement <2 x i8> [[X]], i32 013; CHECK-NEXT: [[CALL_I:%.*]] = call i8 @llvm.ctlz.i8(i8 [[TMP0]], i1 false)14; CHECK-NEXT: [[VECINIT:%.*]] = insertelement <2 x i8> zeroinitializer, i8 [[CALL_I]], i32 015; CHECK-NEXT: [[TMP1:%.*]] = extractelement <2 x i8> [[X]], i32 116; CHECK-NEXT: [[CALL_I4:%.*]] = call i8 @llvm.ctlz.i8(i8 [[TMP1]], i1 false)17; CHECK-NEXT: [[VEC:%.*]] = insertelement <2 x i8> [[VECINIT]], i8 [[CALL_I4]], i32 118; CHECK-NEXT: ret <2 x i8> [[VEC]]19;20entry:21 %0 = extractelement <2 x i8> %x, i32 022 %call.i = call i8 @llvm.ctlz.i8(i8 %0, i1 false)23 %vecinit = insertelement <2 x i8> zeroinitializer, i8 %call.i, i32 024 %1 = extractelement <2 x i8> %x, i32 125 %call.i4 = call i8 @llvm.ctlz.i8(i8 %1, i1 false)26 %vecinit2 = insertelement <2 x i8> %vecinit, i8 %call.i4, i32 127 ret <2 x i8> %vecinit228}29 30define <2 x i8> @cltz_test_poison(<2 x i8> %x) {31; CHECK-LABEL: define <2 x i8> @cltz_test_poison(32; CHECK-SAME: <2 x i8> [[X:%.*]]) {33; CHECK-NEXT: [[ENTRY:.*:]]34; CHECK-NEXT: [[TMP0:%.*]] = extractelement <2 x i8> [[X]], i32 035; CHECK-NEXT: [[CALL_I:%.*]] = call i8 @llvm.ctlz.i8(i8 [[TMP0]], i1 false)36; CHECK-NEXT: [[VECINIT:%.*]] = insertelement <2 x i8> poison, i8 [[CALL_I]], i32 037; CHECK-NEXT: [[TMP1:%.*]] = extractelement <2 x i8> [[X]], i32 138; CHECK-NEXT: [[CALL_I4:%.*]] = call i8 @llvm.ctlz.i8(i8 [[TMP1]], i1 false)39; CHECK-NEXT: [[VEC:%.*]] = insertelement <2 x i8> [[VECINIT]], i8 [[CALL_I4]], i32 140; CHECK-NEXT: ret <2 x i8> [[VEC]]41;42entry:43 %0 = extractelement <2 x i8> %x, i32 044 %call.i = call i8 @llvm.ctlz.i8(i8 %0, i1 false)45 %vecinit = insertelement <2 x i8> poison, i8 %call.i, i32 046 %1 = extractelement <2 x i8> %x, i32 147 %call.i4 = call i8 @llvm.ctlz.i8(i8 %1, i1 false)48 %vecinit2 = insertelement <2 x i8> %vecinit, i8 %call.i4, i32 149 ret <2 x i8> %vecinit250}51 52declare i8 @llvm.ctlz.i8(i8, i1)53 "unsafe-fp-math"="false"