brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 0bd9a99 Raw
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"