1+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
12; RUN: opt < %s -passes=slp-vectorizer -o - -S -slp-threshold=-1000 | FileCheck %s
23
34target datalayout = "e-p:32:32-i64:64-v16:16-v32:32-n16:32:64"
@@ -6,14 +7,16 @@ target triple = "nvptx--nvidiacl"
67; Test that CTLZ can be vectorized currently even though the second argument is a scalar
78
89define <2 x i8 > @cltz_test (<2 x i8 > %x ) #0 {
9- ; CHECK-LABEL: @cltz_test(
10- ; CHECK: [[VEC:%.*]] = call <2 x i8> @llvm.ctlz.v2i8(<2 x i8> %{{.*}}, i1 false)
11- ; CHECK-NEXT: ret <2 x i8> [[VEC]]
10+ ; CHECK-LABEL: define <2 x i8> @cltz_test(
11+ ; CHECK-SAME: <2 x i8> [[X:%.*]]) #[[ATTR0:[0-9]+]] {
12+ ; CHECK-NEXT: [[ENTRY:.*:]]
13+ ; CHECK-NEXT: [[VEC:%.*]] = call <2 x i8> @llvm.ctlz.v2i8(<2 x i8> [[X]], i1 false)
14+ ; CHECK-NEXT: ret <2 x i8> [[VEC]]
1215;
1316entry:
1417 %0 = extractelement <2 x i8 > %x , i32 0
1518 %call.i = call i8 @llvm.ctlz.i8 (i8 %0 , i1 false )
16- %vecinit = insertelement <2 x i8 > undef , i8 %call.i , i32 0
19+ %vecinit = insertelement <2 x i8 > zeroinitializer , i8 %call.i , i32 0
1720 %1 = extractelement <2 x i8 > %x , i32 1
1821 %call.i4 = call i8 @llvm.ctlz.i8 (i8 %1 , i1 false )
1922 %vecinit2 = insertelement <2 x i8 > %vecinit , i8 %call.i4 , i32 1
@@ -22,9 +25,11 @@ entry:
2225
2326
2427define <2 x i8 > @cltz_test_poison (<2 x i8 > %x ) #0 {
25- ; CHECK-LABEL: @cltz_test_poison(
26- ; CHECK: [[VEC:%.*]] = call <2 x i8> @llvm.ctlz.v2i8(<2 x i8> %{{.*}}, i1 false)
27- ; CHECK-NEXT: ret <2 x i8> [[VEC]]
28+ ; CHECK-LABEL: define <2 x i8> @cltz_test_poison(
29+ ; CHECK-SAME: <2 x i8> [[X:%.*]]) #[[ATTR0]] {
30+ ; CHECK-NEXT: [[ENTRY:.*:]]
31+ ; CHECK-NEXT: [[VEC:%.*]] = call <2 x i8> @llvm.ctlz.v2i8(<2 x i8> [[X]], i1 false)
32+ ; CHECK-NEXT: ret <2 x i8> [[VEC]]
2833;
2934entry:
3035 %0 = extractelement <2 x i8 > %x , i32 0
0 commit comments