[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / Hexagon / vect / vsplat-v8i8.ll
blobc5b93f49c2eecb4773d9864cc59654a02b37ccec
1 ; RUN: llc -march=hexagon < %s | FileCheck %s
3 ; Check that this compiles successfully. Used to crash with "cannot select
4 ; v8i8 = vsplat ..."
5 ; CHECK: jumpr r31
7 target datalayout = "e-m:e-p:32:32:32-a:0-n16:32-i64:64:64-i32:32:32-i16:16:16-i1:8:8-f32:32:32-f64:64:64-v32:32:32-v64:64:64-v512:512:512-v1024:1024:1024-v2048:2048:2048"
8 target triple = "hexagon"
10 ; Function Attrs: nounwind
11 define i32 @fred() #0 {
12 b0:
13   br label %b1
15 b1:                                               ; preds = %b1, %b0
16   %v2 = xor <16 x i8> undef, undef
17   %v3 = icmp eq i32 undef, undef
18   br i1 %v3, label %b4, label %b1
20 b4:                                               ; preds = %b1
21   %v5 = xor <16 x i8> %v2, zeroinitializer
22   %v6 = xor <16 x i8> %v5, zeroinitializer
23   %v7 = xor <16 x i8> %v6, zeroinitializer
24   %v8 = xor <16 x i8> %v7, zeroinitializer
25   %v9 = shufflevector <16 x i8> %v8, <16 x i8> undef, <16 x i32> <i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
26   %v10 = xor <16 x i8> %v8, %v9
27   %v11 = extractelement <16 x i8> %v10, i32 0
28   br i1 undef, label %b14, label %b12
30 b12:                                              ; preds = %b4
31   %v13 = xor i8 undef, %v11
32   br label %b14
34 b14:                                              ; preds = %b12, %b4
35   %v15 = phi i8 [ %v11, %b4 ], [ %v13, %b12 ]
36   %v16 = zext i8 %v15 to i32
37   ret i32 %v16
40 attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx-length64b,+hvxv60" }