• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc -march=hexagon < %s | FileCheck %s
2
3; This used to fail:
4; LLVM ERROR: Cannot select: t54: v4i8 = select t50, t53, t52
5
6; CHECK: jumpr r31
7
8target triple = "hexagon"
9
10@g0 = external dso_local unnamed_addr constant [41 x i8], align 1
11define dso_local void @f0() local_unnamed_addr #0 {
12b0:
13  %v0 = load <16 x i32>, <16 x i32>* undef, align 16
14  %v1 = icmp eq <16 x i32> %v0, zeroinitializer
15  %v2 = or <16 x i1> %v1, zeroinitializer
16  %v3 = or <16 x i1> %v2, zeroinitializer
17  %v4 = or <16 x i1> %v3, zeroinitializer
18  %v5 = shufflevector <16 x i1> %v4, <16 x i1> 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>
19  %v6 = or <16 x i1> %v4, %v5
20  %v7 = extractelement <16 x i1> %v6, i32 0
21  %v8 = or i1 %v7, undef
22  %v9 = or i1 %v8, undef
23  br i1 %v9, label %b2, label %b1
24
25b1:                                               ; preds = %b0
26  call void (i8*, ...) @f1(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @g0, i32 0, i32 0))
27  unreachable
28
29b2:                                               ; preds = %b0
30  ret void
31}
32declare dso_local void @f1(i8*, ...) local_unnamed_addr #1
33
34attributes #0 = { "target-cpu"="hexagonv66" "target-features"="+hvx-length64b,+hvxv66,+v66,-long-calls" }
35attributes #1 = { "use-soft-float"="false" }
36