Taints the non-acquire RMW's store address with the load part
[oota-llvm.git] / test / MC / Hexagon / instructions / j.s
1 # RUN: llvm-mc -triple hexagon -filetype=obj -o - %s | llvm-objdump -d - | FileCheck %s
2 # Hexagon Programmer's Reference Manual 11.4 J
3
4 # Call subroutine
5 # CHECK: 00 c0 00 5a
6 call 0
7 # CHECK: 00 c3 00 5d
8 if (p3) call 0
9 # CHECK: 00 c3 20 5d
10 if (!p3) call 0
11
12 # Compare and jump
13 # CHECK: 00 c0 89 11
14 { p0 = cmp.eq(r17,#-1); if (p0.new) jump:nt 0 }
15 # CHECK: 00 c1 89 11
16 { p0 = cmp.gt(r17,#-1); if (p0.new) jump:nt 0 }
17 # CHECK: 00 c3 89 11
18 { p0 = tstbit(r17, #0); if (p0.new) jump:nt 0 }
19 # CHECK: 00 e0 89 11
20 { p0 = cmp.eq(r17,#-1); if (p0.new) jump:t 0 }
21 # CHECK: 00 e1 89 11
22 { p0 = cmp.gt(r17,#-1); if (p0.new) jump:t 0 }
23 # CHECK: 00 e3 89 11
24 { p0 = tstbit(r17, #0); if (p0.new) jump:t 0 }
25 # CHECK: 00 c0 c9 11
26 { p0 = cmp.eq(r17,#-1); if (!p0.new) jump:nt 0 }
27 # CHECK: 00 c1 c9 11
28 { p0 = cmp.gt(r17,#-1); if (!p0.new) jump:nt 0 }
29 # CHECK: 00 c3 c9 11
30 { p0 = tstbit(r17, #0); if (!p0.new) jump:nt 0 }
31 # CHECK: 00 e0 c9 11
32 { p0 = cmp.eq(r17,#-1); if (!p0.new) jump:t 0 }
33 # CHECK: 00 e1 c9 11
34 { p0 = cmp.gt(r17,#-1); if (!p0.new) jump:t 0 }
35 # CHECK: 00 e3 c9 11
36 { p0 = tstbit(r17, #0); if (!p0.new) jump:t 0 }
37 # CHECK: 00 d5 09 10
38 { p0 = cmp.eq(r17, #21); if (p0.new) jump:nt 0 }
39 # CHECK: 00 f5 09 10
40 { p0 = cmp.eq(r17, #21); if (p0.new) jump:t 0 }
41 # CHECK: 00 d5 49 10
42 { p0 = cmp.eq(r17, #21); if (!p0.new) jump:nt 0 }
43 # CHECK: 00 f5 49 10
44 { p0 = cmp.eq(r17, #21); if (!p0.new) jump:t 0 }
45 # CHECK: 00 d5 89 10
46 { p0 = cmp.gt(r17, #21); if (p0.new) jump:nt 0 }
47 # CHECK: 00 f5 89 10
48 { p0 = cmp.gt(r17, #21); if (p0.new) jump:t 0 }
49 # CHECK: 00 d5 c9 10
50 { p0 = cmp.gt(r17, #21); if (!p0.new) jump:nt 0 }
51 # CHECK: 00 f5 c9 10
52 { p0 = cmp.gt(r17, #21); if (!p0.new) jump:t 0 }
53 # CHECK: 00 d5 09 11
54 { p0 = cmp.gtu(r17, #21); if (p0.new) jump:nt 0 }
55 # CHECK: 00 f5 09 11
56 { p0 = cmp.gtu(r17, #21); if (p0.new) jump:t 0 }
57 # CHECK: 00 d5 49 11
58 { p0 = cmp.gtu(r17, #21); if (!p0.new) jump:nt 0 }
59 # CHECK: 00 f5 49 11
60 { p0 = cmp.gtu(r17, #21); if (!p0.new) jump:t 0 }
61 # CHECK: 00 c0 89 13
62 { p1 = cmp.eq(r17,#-1); if (p1.new) jump:nt 0 }
63 # CHECK: 00 c1 89 13
64 { p1 = cmp.gt(r17,#-1); if (p1.new) jump:nt 0 }
65 # CHECK: 00 c3 89 13
66 { p1 = tstbit(r17, #0); if (p1.new) jump:nt 0 }
67 # CHECK: 00 e0 89 13
68 { p1 = cmp.eq(r17,#-1); if (p1.new) jump:t 0 }
69 # CHECK: 00 e1 89 13
70 { p1 = cmp.gt(r17,#-1); if (p1.new) jump:t 0 }
71 # CHECK: 00 e3 89 13
72 { p1 = tstbit(r17, #0); if (p1.new) jump:t 0 }
73 # CHECK: 00 c0 c9 13
74 { p1 = cmp.eq(r17,#-1); if (!p1.new) jump:nt 0 }
75 # CHECK: 00 c1 c9 13
76 { p1 = cmp.gt(r17,#-1); if (!p1.new) jump:nt 0 }
77 # CHECK: 00 c3 c9 13
78 { p1 = tstbit(r17, #0); if (!p1.new) jump:nt 0 }
79 # CHECK: 00 e0 c9 13
80 { p1 = cmp.eq(r17,#-1); if (!p1.new) jump:t 0 }
81 # CHECK: 00 e1 c9 13
82 { p1 = cmp.gt(r17,#-1); if (!p1.new) jump:t 0 }
83 # CHECK: 00 e3 c9 13
84 { p1 = tstbit(r17, #0); if (!p1.new) jump:t 0 }
85 # CHECK: 00 d5 09 12
86 { p1 = cmp.eq(r17, #21); if (p1.new) jump:nt 0 }
87 # CHECK: 00 f5 09 12
88 { p1 = cmp.eq(r17, #21); if (p1.new) jump:t 0 }
89 # CHECK: 00 d5 49 12
90 { p1 = cmp.eq(r17, #21); if (!p1.new) jump:nt 0 }
91 # CHECK: 00 f5 49 12
92 { p1 = cmp.eq(r17, #21); if (!p1.new) jump:t 0 }
93 # CHECK: 00 d5 89 12
94 { p1 = cmp.gt(r17, #21); if (p1.new) jump:nt 0 }
95 # CHECK: 00 f5 89 12
96 { p1 = cmp.gt(r17, #21); if (p1.new) jump:t 0 }
97 # CHECK: 00 d5 c9 12
98 { p1 = cmp.gt(r17, #21); if (!p1.new) jump:nt 0 }
99 # CHECK: 00 f5 c9 12
100 { p1 = cmp.gt(r17, #21); if (!p1.new) jump:t 0 }
101 # CHECK: 00 d5 09 13
102 { p1 = cmp.gtu(r17, #21); if (p1.new) jump:nt 0 }
103 # CHECK: 00 f5 09 13
104 { p1 = cmp.gtu(r17, #21); if (p1.new) jump:t 0 }
105 # CHECK: 00 d5 49 13
106 { p1 = cmp.gtu(r17, #21); if (!p1.new) jump:nt 0 }
107 # CHECK: 00 f5 49 13
108 { p1 = cmp.gtu(r17, #21); if (!p1.new) jump:t 0 }
109 # CHECK: 00 cd 09 14
110 { p0 = cmp.eq(r17, r21); if (p0.new) jump:nt 0 }
111 # CHECK: 00 dd 09 14
112 { p1 = cmp.eq(r17, r21); if (p1.new) jump:nt 0 }
113 # CHECK: 00 ed 09 14
114 { p0 = cmp.eq(r17, r21); if (p0.new) jump:t 0 }
115 # CHECK: 00 fd 09 14
116 { p1 = cmp.eq(r17, r21); if (p1.new) jump:t 0 }
117 # CHECK: 00 cd 49 14
118 { p0 = cmp.eq(r17, r21); if (!p0.new) jump:nt 0 }
119 # CHECK: 00 dd 49 14
120 { p1 = cmp.eq(r17, r21); if (!p1.new) jump:nt 0 }
121 # CHECK: 00 ed 49 14
122 { p0 = cmp.eq(r17, r21); if (!p0.new) jump:t 0 }
123 # CHECK: 00 fd 49 14
124 { p1 = cmp.eq(r17, r21); if (!p1.new) jump:t 0 }
125 # CHECK: 00 cd 89 14
126 { p0 = cmp.gt(r17, r21); if (p0.new) jump:nt 0 }
127 # CHECK: 00 dd 89 14
128 { p1 = cmp.gt(r17, r21); if (p1.new) jump:nt 0 }
129 # CHECK: 00 ed 89 14
130 { p0 = cmp.gt(r17, r21); if (p0.new) jump:t 0 }
131 # CHECK: 00 fd 89 14
132 { p1 = cmp.gt(r17, r21); if (p1.new) jump:t 0 }
133 # CHECK: 00 cd c9 14
134 { p0 = cmp.gt(r17, r21); if (!p0.new) jump:nt 0 }
135 # CHECK: 00 dd c9 14
136 { p1 = cmp.gt(r17, r21); if (!p1.new) jump:nt 0 }
137 # CHECK: 00 ed c9 14
138 { p0 = cmp.gt(r17, r21); if (!p0.new) jump:t 0 }
139 # CHECK: 00 fd c9 14
140 { p1 = cmp.gt(r17, r21); if (!p1.new) jump:t 0 }
141 # CHECK: 00 cd 09 15
142 { p0 = cmp.gtu(r17, r21); if (p0.new) jump:nt 0 }
143 # CHECK: 00 dd 09 15
144 { p1 = cmp.gtu(r17, r21); if (p1.new) jump:nt 0 }
145 # CHECK: 00 ed 09 15
146 { p0 = cmp.gtu(r17, r21); if (p0.new) jump:t 0 }
147 # CHECK: 00 fd 09 15
148 { p1 = cmp.gtu(r17, r21); if (p1.new) jump:t 0 }
149 # CHECK: 00 cd 49 15
150 { p0 = cmp.gtu(r17, r21); if (!p0.new) jump:nt 0 }
151 # CHECK: 00 dd 49 15
152 { p1 = cmp.gtu(r17, r21); if (!p1.new) jump:nt 0 }
153 # CHECK: 00 ed 49 15
154 { p0 = cmp.gtu(r17, r21); if (!p0.new) jump:t 0 }
155 # CHECK: 00 fd 49 15
156 { p1 = cmp.gtu(r17, r21); if (!p1.new) jump:t 0 }
157
158 # Jump to address
159 # CHECK: 00 c0 00 58
160 jump 0
161 # CHECK: 00 c3 00 5c
162 if (p3) jump 0
163 # CHECK: 00 c3 20 5c
164 if (!p3) jump 0
165
166 # Jump to address conditioned on new predicate
167 # CHECK: 03 40 45 85
168 # CHECK-NEXT: 00 cb 00 5c
169 { p3 = r5
170   if (p3.new) jump:nt 0 }
171 # CHECK: 03 40 45 85
172 # CHECK-NEXT: 00 db 00 5c
173 { p3 = r5
174   if (p3.new) jump:t 0 }
175 # CHECK: 03 40 45 85
176 # CHECK-NEXT: 00 cb 20 5c
177 { p3 = r5
178   if (!p3.new) jump:nt 0 }
179 # CHECK: 03 40 45 85
180 # CHECK-NEXT: 00 db 20 5c
181 { p3 = r5
182   if (!p3.new) jump:t 0 }
183
184 # Jump to address conditioned on register value
185 # CHECK: 00 c0 11 61
186 if (r17!=#0) jump:nt 0
187 # CHECK: 00 d0 11 61
188 if (r17!=#0) jump:t 0
189 # CHECK: 00 c0 51 61
190 if (r17>=#0) jump:nt 0
191 # CHECK: 00 d0 51 61
192 if (r17>=#0) jump:t 0
193 # CHECK: 00 c0 91 61
194 if (r17==#0) jump:nt 0
195 # CHECK: 00 d0 91 61
196 if (r17==#0) jump:t 0
197 # CHECK: 00 c0 d1 61
198 if (r17<=#0) jump:nt 0
199 # CHECK: 00 d0 d1 61
200 if (r17<=#0) jump:t 0
201
202 # Transfer and jump
203 # CHECK: 00 d5 09 16
204 { r17 = #21 ; jump 0} 
205 # CHECK: 00 c9 0d 17
206 { r17 = r21 ; jump 0 }