File: isel-select-v4i8.ll

package info (click to toggle)
llvm-toolchain-16 1%3A16.0.6-15~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,634,792 kB
  • sloc: cpp: 6,179,261; ansic: 1,216,205; asm: 741,319; python: 196,614; objc: 75,325; f90: 49,640; lisp: 32,396; pascal: 12,286; sh: 9,394; perl: 7,442; ml: 5,494; awk: 3,523; makefile: 2,723; javascript: 1,206; xml: 886; fortran: 581; cs: 573
file content (35 lines) | stat: -rw-r--r-- 1,319 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
; RUN: llc -march=hexagon < %s | FileCheck %s

; This used to fail:
; LLVM ERROR: Cannot select: t54: v4i8 = select t50, t53, t52

; CHECK: jumpr r31

target triple = "hexagon"

@g0 = external dso_local unnamed_addr constant [41 x i8], align 1
define dso_local void @f0() local_unnamed_addr #0 {
b0:
  %v0 = load <16 x i32>, ptr undef, align 16
  %v1 = icmp eq <16 x i32> %v0, zeroinitializer
  %v2 = or <16 x i1> %v1, zeroinitializer
  %v3 = or <16 x i1> %v2, zeroinitializer
  %v4 = or <16 x i1> %v3, zeroinitializer
  %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>
  %v6 = or <16 x i1> %v4, %v5
  %v7 = extractelement <16 x i1> %v6, i32 0
  %v8 = or i1 %v7, undef
  %v9 = or i1 %v8, undef
  br i1 %v9, label %b2, label %b1

b1:                                               ; preds = %b0
  call void (ptr, ...) @f1(ptr @g0)
  unreachable

b2:                                               ; preds = %b0
  ret void
}
declare dso_local void @f1(ptr, ...) local_unnamed_addr #1

attributes #0 = { "target-cpu"="hexagonv66" "target-features"="+hvx-length64b,+hvxv66,+v66,-long-calls" }
attributes #1 = { "use-soft-float"="false" }