File: packetize-impdef-1.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 (157 lines) | stat: -rw-r--r-- 4,680 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
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
; RUN: llc -march=hexagon -hexagon-initial-cfg-cleanup=0 -hexagon-instsimplify=0 < %s | FileCheck %s
; REQUIRES: asserts

; Test that the compiler doesn't assert because IMPLICIT_DEF instructions are
; are added to the same packet as a use. This test case asserts if the
; IMPLICIT_DEFs are not handled properly.
;
; r0 = IMPLICIT_DEF
; r1 = IMPLICIT_DEF
; S2_storerd_io r29, 0, d0

; CHECK: memd(r29+#0) = r{{[0-9]+}}:{{[0-9]+}}
; CHECK: memd(r29+#0) = r{{[0-9]+}}:{{[0-9]+}}

define ptr @f0(ptr %a0) local_unnamed_addr {
b0:
  %v0 = tail call ptr @f1(i32 0)
  %v1 = tail call ptr @f1(i32 8)
  %v3 = load i32, ptr undef, align 4
  %v4 = tail call ptr @f4(ptr %a0, i32 0, i32 %v3)
  %v5 = sub nsw i32 %v3, 0
  br label %b1

b1:                                               ; preds = %b0
  switch i8 undef, label %b3 [
    i8 0, label %b4
    i8 92, label %b2
    i8 44, label %b4
  ]

b2:                                               ; preds = %b1
  unreachable

b3:                                               ; preds = %b1
  unreachable

b4:                                               ; preds = %b1, %b1
  br label %b5

b5:                                               ; preds = %b4
  br i1 undef, label %b27, label %b6

b6:                                               ; preds = %b5
  %v6 = ptrtoint ptr %v4 to i32
  %v7 = sub i32 0, %v6
  %v8 = call ptr @f4(ptr nonnull %v4, i32 0, i32 %v7)
  %v9 = call ptr @f4(ptr nonnull %v4, i32 undef, i32 %v5)
  br label %b7

b7:                                               ; preds = %b6
  br i1 undef, label %b8, label %b9

b8:                                               ; preds = %b7
  br label %b9

b9:                                               ; preds = %b8, %b7
  %v10 = phi i32 [ 2, %b8 ], [ 0, %b7 ]
  %v11 = load i8, ptr %v9, align 1
  switch i8 %v11, label %b12 [
    i8 43, label %b10
    i8 45, label %b10
  ]

b10:                                              ; preds = %b9, %b9
  br i1 undef, label %b11, label %b12

b11:                                              ; preds = %b10
  %v12 = call i64 @f6(ptr nonnull %v9, ptr nonnull undef, i32 10)
  %v13 = load ptr, ptr undef, align 4
  %v14 = ptrtoint ptr %v13 to i32
  br label %b15

b12:                                              ; preds = %b10, %b9
  switch i8 undef, label %b14 [
    i8 0, label %b13
    i8 46, label %b13
  ]

b13:                                              ; preds = %b12, %b12
  br label %b15

b14:                                              ; preds = %b12
  unreachable

b15:                                              ; preds = %b13, %b11
  %v15 = phi i32 [ undef, %b13 ], [ %v14, %b11 ]
  %v16 = phi i32 [ 2, %b13 ], [ 1, %b11 ]
  %v17 = phi i64 [ undef, %b13 ], [ %v12, %b11 ]
  %v18 = call ptr @f5()
  br label %b16

b16:                                              ; preds = %b15
  %v19 = icmp ne i32 %v10, %v16
  %v20 = or i1 undef, %v19
  br i1 %v20, label %b17, label %b18

b17:                                              ; preds = %b16
  call void @f2(ptr %v8)
  br label %b27

b18:                                              ; preds = %b16
  br i1 undef, label %b19, label %b20

b19:                                              ; preds = %b18
  br label %b24

b20:                                              ; preds = %b18
  %v21 = add i32 %v5, -2
  %v22 = sub i32 %v21, %v7
  %v23 = add i32 %v22, %v15
  %v24 = sub i32 %v23, 0
  br label %b21

b21:                                              ; preds = %b20
  %v25 = icmp ne i32 %v24, 2
  %v26 = and i1 %v25, undef
  br i1 %v26, label %b22, label %b23

b22:                                              ; preds = %b21
  unreachable

b23:                                              ; preds = %b21
  br label %b24

b24:                                              ; preds = %b23, %b19
  %v27 = phi i64 [ 0, %b19 ], [ %v17, %b23 ]
  br label %b25

b25:                                              ; preds = %b24
  %v28 = icmp sgt i64 0, %v27
  br i1 %v28, label %b28, label %b26

b26:                                              ; preds = %b25
  unreachable

b27:                                              ; preds = %b17, %b5
  call void @f2(ptr %v4)
  call void @f2(ptr %v0)
  %v29 = call ptr @f3(ptr undef, ptr nonnull %a0)
  ret ptr %v1

b28:                                              ; preds = %b25
  call void @f2(ptr %v9)
  unreachable
}

declare ptr @f1(i32) local_unnamed_addr

declare void @f2(ptr nocapture) local_unnamed_addr

declare ptr @f3(ptr, ptr nocapture readonly) local_unnamed_addr

declare ptr @f4(ptr, i32, i32) local_unnamed_addr

declare ptr @f5() local_unnamed_addr

declare i64 @f6(ptr, ptr, i32) local_unnamed_addr