File: non-power-2-num-elems-reused.ll

package info (click to toggle)
llvm-toolchain-20 1%3A20.1.6-1~exp1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 2,111,304 kB
  • sloc: cpp: 7,438,677; ansic: 1,393,822; asm: 1,012,926; python: 241,650; f90: 86,635; objc: 75,479; lisp: 42,144; pascal: 17,286; sh: 10,027; ml: 5,082; perl: 4,730; awk: 3,523; makefile: 3,349; javascript: 2,251; xml: 892; fortran: 672
file content (57 lines) | stat: -rw-r--r-- 2,765 bytes parent folder | download | duplicates (3)
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
; 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 -slp-threshold=-10 < %s | FileCheck %s

define i64 @test() {
; CHECK-LABEL: define i64 @test() {
; CHECK-NEXT:  [[ENTRY:.*:]]
; CHECK-NEXT:    [[OR54_I_I_6:%.*]] = or i32 0, 0
; CHECK-NEXT:    [[TMP0:%.*]] = insertelement <16 x i32> poison, i32 [[OR54_I_I_6]], i32 8
; CHECK-NEXT:    [[TMP1:%.*]] = call <16 x i32> @llvm.vector.insert.v16i32.v8i32(<16 x i32> [[TMP0]], <8 x i32> zeroinitializer, i64 0)
; CHECK-NEXT:    [[TMP2:%.*]] = shufflevector <16 x i32> [[TMP1]], <16 x i32> poison, <16 x i32> <i32 0, i32 0, i32 1, i32 1, i32 2, i32 2, i32 3, i32 3, i32 4, i32 4, i32 5, i32 5, i32 6, i32 7, i32 7, i32 8>
; CHECK-NEXT:    [[TMP3:%.*]] = zext <16 x i32> [[TMP2]] to <16 x i64>
; CHECK-NEXT:    [[TMP4:%.*]] = call i64 @llvm.vector.reduce.or.v16i64(<16 x i64> [[TMP3]])
; CHECK-NEXT:    ret i64 [[TMP4]]
;
entry:
  %xor148.2.i = xor i32 0, 0
  %conv193.i = zext i32 %xor148.2.i to i64
  %conv193.1.i = zext i32 %xor148.2.i to i64
  %or194.1.i = or i64 %conv193.i, %conv193.1.i
  %xor148.2.i.1 = xor i32 0, 0
  %conv193.i.1 = zext i32 %xor148.2.i.1 to i64
  %or194.i.1 = or i64 %or194.1.i, %conv193.i.1
  %conv193.1.i.1 = zext i32 %xor148.2.i.1 to i64
  %or194.1.i.1 = or i64 %or194.i.1, %conv193.1.i.1
  %xor148.2.i.2 = xor i32 0, 0
  %conv193.i.2 = zext i32 %xor148.2.i.2 to i64
  %or194.i.2 = or i64 %or194.1.i.1, %conv193.i.2
  %conv193.1.i.2 = zext i32 %xor148.2.i.2 to i64
  %or194.1.i.2 = or i64 %or194.i.2, %conv193.1.i.2
  %xor148.2.i.3 = xor i32 0, 0
  %conv193.i.3 = zext i32 %xor148.2.i.3 to i64
  %or194.i.3 = or i64 %or194.1.i.2, %conv193.i.3
  %conv193.1.i.3 = zext i32 %xor148.2.i.3 to i64
  %or194.1.i.3 = or i64 %or194.i.3, %conv193.1.i.3
  %xor148.2.i.4 = xor i32 0, 0
  %conv193.i.4 = zext i32 %xor148.2.i.4 to i64
  %or194.i.4 = or i64 %or194.1.i.3, %conv193.i.4
  %conv193.1.i.4 = zext i32 %xor148.2.i.4 to i64
  %or194.1.i.4 = or i64 %or194.i.4, %conv193.1.i.4
  %xor148.2.i.5 = xor i32 0, 0
  %conv193.i.5 = zext i32 %xor148.2.i.5 to i64
  %or194.i.5 = or i64 %or194.1.i.4, %conv193.i.5
  %conv193.1.i.5 = zext i32 %xor148.2.i.5 to i64
  %or194.1.i.5 = or i64 %or194.i.5, %conv193.1.i.5
  %xor148.2.i.6 = xor i32 0, 0
  %conv193.i.6 = zext i32 %xor148.2.i.6 to i64
  %or194.i.6 = or i64 %or194.1.i.5, %conv193.i.6
  %or54.i.i.6 = or i32 %xor148.2.i.6, 0
  %conv193.1.i.6 = zext i32 %or54.i.i.6 to i64
  %xor148.2.i.7 = xor i32 0, 0
  %conv193.i.7 = zext i32 %xor148.2.i.7 to i64
  %0 = or i64 %or194.i.6, %conv193.i.7
  %conv193.1.i.7 = zext i32 %xor148.2.i.7 to i64
  %1 = or i64 %0, %conv193.1.i.7
  %or194.1.i.7 = or i64 %1, %conv193.1.i.6
  ret i64 %or194.1.i.7
}