1
+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
1
2
; RUN: opt < %s -passes=slp-vectorizer -o - -S -slp-threshold=-1000 | FileCheck %s
2
3
3
4
target datalayout = "e-p:32:32-i64:64-v16:16-v32:32-n16:32:64"
@@ -6,14 +7,16 @@ target triple = "nvptx--nvidiacl"
6
7
; Test that CTLZ can be vectorized currently even though the second argument is a scalar
7
8
8
9
define <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]]
12
15
;
13
16
entry:
14
17
%0 = extractelement <2 x i8 > %x , i32 0
15
18
%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
17
20
%1 = extractelement <2 x i8 > %x , i32 1
18
21
%call.i4 = call i8 @llvm.ctlz.i8 (i8 %1 , i1 false )
19
22
%vecinit2 = insertelement <2 x i8 > %vecinit , i8 %call.i4 , i32 1
@@ -22,9 +25,11 @@ entry:
22
25
23
26
24
27
define <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]]
28
33
;
29
34
entry:
30
35
%0 = extractelement <2 x i8 > %x , i32 0
0 commit comments