File: split-node-last-inst-vectorized.ll

package info (click to toggle)
llvm-toolchain-snapshot 1%3A22~%2B%2B20250731080150%2Bbe449d6b6587-1~exp1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 2,250,472 kB
  • sloc: cpp: 7,641,756; ansic: 1,439,220; asm: 1,072,591; python: 253,178; f90: 95,173; objc: 70,722; lisp: 44,365; pascal: 18,720; sh: 10,051; ml: 5,111; perl: 4,720; awk: 3,523; makefile: 3,397; javascript: 2,272; xml: 892; fortran: 783
file content (98 lines) | stat: -rw-r--r-- 4,147 bytes parent folder | download | duplicates (7)
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
; RUN: opt -S --passes=slp-vectorizer -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s

define void @test(ptr %0, <8 x i8> %1) {
; CHECK-LABEL: define void @test(
; CHECK-SAME: ptr [[TMP0:%.*]], <8 x i8> [[TMP1:%.*]]) {
; CHECK-NEXT:    [[TMP3:%.*]] = load i8, ptr [[TMP0]], align 2
; CHECK-NEXT:    [[TMP4:%.*]] = getelementptr i8, ptr [[TMP0]], i64 13436
; CHECK-NEXT:    [[TMP8:%.*]] = getelementptr i8, ptr [[TMP0]], i64 13444
; CHECK-NEXT:    [[TMP6:%.*]] = load i8, ptr [[TMP8]], align 4
; CHECK-NEXT:    [[TMP11:%.*]] = getelementptr i8, ptr [[TMP0]], i64 13544
; CHECK-NEXT:    [[TMP5:%.*]] = getelementptr i8, ptr [[TMP0]], i64 13536
; CHECK-NEXT:    [[TMP7:%.*]] = load <8 x i8>, ptr [[TMP4]], align 4
; CHECK-NEXT:    [[TMP12:%.*]] = insertelement <8 x i8> poison, i8 [[TMP6]], i32 0
; CHECK-NEXT:    [[TMP9:%.*]] = insertelement <8 x i8> [[TMP12]], i8 [[TMP3]], i32 1
; CHECK-NEXT:    [[TMP10:%.*]] = shufflevector <8 x i8> [[TMP9]], <8 x i8> poison, <8 x i32> <i32 0, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
; CHECK-NEXT:    [[TMP13:%.*]] = or <8 x i8> [[TMP10]], [[TMP7]]
; CHECK-NEXT:    store <8 x i8> [[TMP13]], ptr [[TMP11]], align 4
; CHECK-NEXT:    [[TMP14:%.*]] = shufflevector <8 x i8> [[TMP1]], <8 x i8> poison, <8 x i32> <i32 0, i32 0, i32 2, i32 3, i32 4, i32 5, i32 0, i32 7>
; CHECK-NEXT:    [[TMP15:%.*]] = or <8 x i8> [[TMP7]], [[TMP14]]
; CHECK-NEXT:    store <8 x i8> [[TMP15]], ptr [[TMP5]], align 4
; CHECK-NEXT:    ret void
;
  %3 = load i8, ptr %0, align 2
  %4 = getelementptr i8, ptr %0, i64 13442
  %5 = load i8, ptr %4, align 2
  %6 = or i8 %5, %3
  %7 = getelementptr i8, ptr %0, i64 13550
  store i8 %6, ptr %7, align 2
  %8 = extractelement <8 x i8> %1, i64 0
  %9 = or i8 %5, %8
  %10 = getelementptr i8, ptr %0, i64 13542
  store i8 %9, ptr %10, align 2
  %11 = getelementptr i8, ptr %0, i64 13438
  %12 = load i8, ptr %11, align 2
  %13 = or i8 %12, %3
  %14 = getelementptr i8, ptr %0, i64 13546
  store i8 %13, ptr %14, align 2
  %15 = extractelement <8 x i8> %1, i64 2
  %16 = or i8 %12, %15
  %17 = getelementptr i8, ptr %0, i64 13538
  store i8 %16, ptr %17, align 2
  %18 = getelementptr i8, ptr %0, i64 13440
  %19 = load i8, ptr %18, align 4
  %20 = or i8 %19, %3
  %21 = getelementptr i8, ptr %0, i64 13548
  store i8 %20, ptr %21, align 4
  %22 = extractelement <8 x i8> %1, i64 4
  %23 = or i8 %19, %22
  %24 = getelementptr i8, ptr %0, i64 13540
  store i8 %23, ptr %24, align 4
  %25 = getelementptr i8, ptr %0, i64 13436
  %26 = load i8, ptr %25, align 4
  %27 = getelementptr i8, ptr %0, i64 13444
  %28 = load i8, ptr %27, align 4
  %29 = or i8 %28, %26
  %30 = getelementptr i8, ptr %0, i64 13544
  store i8 %29, ptr %30, align 4
  %31 = or i8 %26, %8
  %32 = getelementptr i8, ptr %0, i64 13536
  store i8 %31, ptr %32, align 4
  %33 = getelementptr i8, ptr %0, i64 13443
  %34 = load i8, ptr %33, align 1
  %35 = or i8 %34, %3
  %36 = getelementptr i8, ptr %0, i64 13551
  store i8 %35, ptr %36, align 1
  %37 = extractelement <8 x i8> %1, i64 7
  %38 = or i8 %34, %37
  %39 = getelementptr i8, ptr %0, i64 13543
  store i8 %38, ptr %39, align 1
  %40 = getelementptr i8, ptr %0, i64 13439
  %41 = load i8, ptr %40, align 1
  %42 = or i8 %41, %3
  %43 = getelementptr i8, ptr %0, i64 13547
  store i8 %42, ptr %43, align 1
  %44 = extractelement <8 x i8> %1, i64 3
  %45 = or i8 %41, %44
  %46 = getelementptr i8, ptr %0, i64 13539
  store i8 %45, ptr %46, align 1
  %47 = getelementptr i8, ptr %0, i64 13441
  %48 = load i8, ptr %47, align 1
  %49 = or i8 %48, %3
  %50 = getelementptr i8, ptr %0, i64 13549
  store i8 %49, ptr %50, align 1
  %51 = extractelement <8 x i8> %1, i64 5
  %52 = or i8 %48, %51
  %53 = getelementptr i8, ptr %0, i64 13541
  store i8 %52, ptr %53, align 1
  %54 = getelementptr i8, ptr %0, i64 13437
  %55 = load i8, ptr %54, align 1
  %56 = or i8 %55, %3
  %57 = getelementptr i8, ptr %0, i64 13545
  store i8 %56, ptr %57, align 1
  %58 = or i8 %55, %8
  %59 = getelementptr i8, ptr %0, i64 13537
  store i8 %58, ptr %59, align 1
  ret void
}