File: pr61315.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 (133 lines) | stat: -rw-r--r-- 7,067 bytes parent folder | download | duplicates (2)
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
; RUN:   -mcpu=pwr9 -mtriple=powerpc64 < %s | FileCheck %s
define dso_local <16 x i8> @ConvertExtractedMaskBitsToVect(<16 x i8> noundef %0) local_unnamed_addr #0 {
; CHECK: .LCPI0_0:
; CHECK-NEXT: .byte	7                               # 0x7
; CHECK-NEXT: .byte	7                               # 0x7
; CHECK-NEXT: .byte	7                               # 0x7
; CHECK-NEXT: .byte	7                               # 0x7
; CHECK-NEXT: .byte	7                               # 0x7
; CHECK-NEXT: .byte	7                               # 0x7
; CHECK-NEXT: .byte	7                               # 0x7
; CHECK-NEXT: .byte	7                               # 0x7
; CHECK-NEXT: .byte	16                              # 0x10
; CHECK-NEXT: .byte	16                              # 0x10
; CHECK-NEXT: .byte	16                              # 0x10
; CHECK-NEXT: .byte	16                              # 0x10
; CHECK-NEXT: .byte	16                              # 0x10
; CHECK-NEXT: .byte	16                              # 0x10
; CHECK-NEXT: .byte	16                              # 0x10
; CHECK-NEXT: .byte	16                              # 0x10
; CHECK-LABEL: ConvertExtractedMaskBitsToVect:
; CHECK:       # %bb.0:
; CHECK-NEXT:    addis r3, r2, .LCPI0_0@toc@ha
; CHECK-NEXT:    xxlxor v4, v4, v4
; CHECK-NEXT:    xxlxor v3, v3, v3
; CHECK-NEXT:    addi r3, r3, .LCPI0_0@toc@l
; CHECK-NEXT:    lxv vs0, 0(r3)
; CHECK-NEXT:    addis r3, r2, .LCPI0_1@toc@ha
; CHECK-NEXT:    addi r3, r3, .LCPI0_1@toc@l
; CHECK-NEXT:    xxperm v4, v2, vs0
; CHECK-NEXT:    lxv vs0, 0(r3)
; CHECK-NEXT:    xxland v2, v4, vs0
; CHECK-NEXT:    vcmpequb v2, v2, v3
; CHECK-NEXT:    xxlnor v2, v2, v2
; CHECK-NEXT:    blr
  %a4 = extractelement <16 x i8> %0, i64 7
  %a5 = zext i8 %a4 to i16
  %a6 = insertelement <8 x i16> poison, i16 %a5, i64 0
  %a7 = bitcast <8 x i16> %a6 to <16 x i8>
  %a8 = shufflevector <16 x i8> %a7, <16 x i8> undef, <16 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
  %a9 = and <16 x i8> %a8, <i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128, i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128>
  %a10 = icmp eq <16 x i8> %a9, <i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128, i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128>
  %a11 = sext <16 x i1> %a10 to <16 x i8>
  ret <16 x i8> %a11
}

define dso_local <16 x i8> @ConvertExtractedMaskBitsToVect2(<16 x i8> noundef %0) local_unnamed_addr #0 {
; CHECK: .LCPI1_0:
; CHECK-NEXT: .byte	7                               # 0x7
; CHECK-NEXT: .byte	7                               # 0x7
; CHECK-NEXT: .byte	7                               # 0x7
; CHECK-NEXT: .byte	7                               # 0x7
; CHECK-NEXT: .byte	7                               # 0x7
; CHECK-NEXT: .byte	7                               # 0x7
; CHECK-NEXT: .byte	7                               # 0x7
; CHECK-NEXT: .byte	7                               # 0x7
; CHECK-NEXT: .byte	16                              # 0x10
; CHECK-NEXT: .byte	16                              # 0x10
; CHECK-NEXT: .byte	16                              # 0x10
; CHECK-NEXT: .byte	16                              # 0x10
; CHECK-NEXT: .byte	16                              # 0x10
; CHECK-NEXT: .byte	16                              # 0x10
; CHECK-NEXT: .byte	16                              # 0x10
; CHECK-NEXT: .byte	16                              # 0x10
; CHECK-LABEL: ConvertExtractedMaskBitsToVect2:
; CHECK:       # %bb.0:
; CHECK-NEXT:    addis r3, r2, .LCPI1_0@toc@ha
; CHECK-NEXT:    xxlxor v4, v4, v4
; CHECK-NEXT:    xxlxor v3, v3, v3
; CHECK-NEXT:    addi r3, r3, .LCPI1_0@toc@l
; CHECK-NEXT:    lxv vs0, 0(r3)
; CHECK-NEXT:    addis r3, r2, .LCPI1_1@toc@ha
; CHECK-NEXT:    addi r3, r3, .LCPI1_1@toc@l
; CHECK-NEXT:    xxperm v4, v2, vs0
; CHECK-NEXT:    lxv vs0, 0(r3)
; CHECK-NEXT:    xxland v2, v4, vs0
; CHECK-NEXT:    vcmpequb v2, v2, v3
; CHECK-NEXT:    xxlnor v2, v2, v2
; CHECK-NEXT:    blr
  %a4 = extractelement <16 x i8> %0, i64 7
  %a5 = zext i8 %a4 to i32
  %a6 = insertelement <4 x i32> poison, i32 %a5, i64 0
  %a7 = bitcast <4 x i32> %a6 to <16 x i8>
  %a8 = shufflevector <16 x i8> %a7, <16 x i8> undef, <16 x i32> <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
  %a9 = and <16 x i8> %a8, <i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128, i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128>
  %a10 = icmp eq <16 x i8> %a9, <i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128, i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128>
  %a11 = sext <16 x i1> %a10 to <16 x i8>
  ret <16 x i8> %a11
}

define dso_local <16 x i8> @ConvertExtractedMaskBitsToVect3(<8 x i16> noundef %0) local_unnamed_addr #0 {
; CHECK: .LCPI2_0:
; CHECK-NEXT: .byte	6                                # 0x6
; CHECK-NEXT: .byte	7                                # 0x7
; CHECK-NEXT: .byte	6                                # 0x6
; CHECK-NEXT: .byte	7                                # 0x7
; CHECK-NEXT: .byte	6                                # 0x6
; CHECK-NEXT: .byte	7                                # 0x7
; CHECK-NEXT: .byte	6                                # 0x6
; CHECK-NEXT: .byte	7                                # 0x7
; CHECK-NEXT: .byte	16                               # 0x10
; CHECK-NEXT: .byte	16                               # 0x10
; CHECK-NEXT: .byte	16                               # 0x10
; CHECK-NEXT: .byte	16                               # 0x10
; CHECK-NEXT: .byte	16                               # 0x10
; CHECK-NEXT: .byte	16                               # 0x10
; CHECK-NEXT: .byte	16                               # 0x10
; CHECK-NEXT: .byte	16                               # 0x10
; CHECK-LABEL: ConvertExtractedMaskBitsToVect3:
; CHECK:       # %bb.0:
; CHECK-NEXT:    addis r3, r2, .LCPI2_0@toc@ha
; CHECK-NEXT:    xxlxor v4, v4, v4
; CHECK-NEXT:    xxlxor v3, v3, v3
; CHECK-NEXT:    addi r3, r3, .LCPI2_0@toc@l
; CHECK-NEXT:    lxv vs0, 0(r3)
; CHECK-NEXT:    addis r3, r2, .LCPI2_1@toc@ha
; CHECK-NEXT:    addi r3, r3, .LCPI2_1@toc@l
; CHECK-NEXT:    xxperm v4, v2, vs0
; CHECK-NEXT:    lxv vs0, 0(r3)
; CHECK-NEXT:    xxland v2, v4, vs0
; CHECK-NEXT:    vcmpequb v2, v2, v3
; CHECK-NEXT:    xxlnor v2, v2, v2
; CHECK-NEXT:    blr
  %a4 = extractelement <8 x i16> %0, i64 3
  %a5 = zext i16 %a4 to i32
  %a6 = insertelement <4 x i32> poison, i32 %a5, i64 0
  %a7 = bitcast <4 x i32> %a6 to <16 x i8>
  %a8 = shufflevector <16 x i8> %a7, <16 x i8> undef, <16 x i32> <i32 2, i32 3, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
  %a9 = and <16 x i8> %a8, <i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128, i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128>
  %a10 = icmp eq <16 x i8> %a9, <i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128, i8 1, i8 2, i8 4, i8 8, i8 16, i8 32, i8 64, i8 -128>
  %a11 = sext <16 x i1> %a10 to <16 x i8>
  ret <16 x i8> %a11
}