1 # RUN: llvm-mc -triple hexagon -filetype=obj -o - %s | llvm-objdump -d - | FileCheck %s
2 # Hexagon Programmer's Reference Manual 11.1.3 ALU32/PRED
6 if
(p3
) r17 = add(r21, #31)
8 # CHECK-NEXT: f1 e3 75 74
10 if
(p3.new
) r17 = add(r21, #31) }
12 if
(!p3
) r17 = add(r21, #31)
14 # CHECK-NEXT: f1 e3 f5 74
16 if
(!p3.new
) r17 = add(r21, #31) }
18 if
(p3
) r17 = add(r21, r31)
20 # CHECK-NEXT: 71 ff 15 fb
22 if
(p3.new
) r17 = add(r21, r31) }
24 if
(!p3
) r17 = add(r21, r31)
26 # CHECK-NEXT: f1 ff 15 fb
28 if
(!p3.new
) r17 = add(r21, r31) }
30 # Conditional shift halfword
32 if
(p3
) r17 = aslh
(r21)
34 # CHECK-NEXT: 11 e7 15 70
36 if
(p3.new
) r17 = aslh
(r21) }
38 if
(!p3
) r17 = aslh
(r21)
40 # CHECK-NEXT: 11 ef 15 70
42 if
(!p3.new
) r17 = aslh
(r21) }
44 if
(p3
) r17 = asrh
(r21)
46 # CHECK-NEXT: 11 e7 35 70
48 if
(p3.new
) r17 = asrh
(r21) }
50 if
(!p3
) r17 = asrh
(r21)
52 # CHECK-NEXT: 11 ef 35 70
54 if
(!p3.new
) r17 = asrh
(r21) }
58 if
(p3
) r17:16 = combine
(r21, r31)
60 if
(!p3
) r17:16 = combine
(r21, r31)
62 # CHECK-NEXT: 70 ff 15 fd
64 if
(p3.new
) r17:16 = combine
(r21, r31) }
66 # CHECK-NEXT: f0 ff 15 fd
68 if
(!p3.new
) r17:16 = combine
(r21, r31) }
70 # Conditional logical operations
72 if
(p3
) r17 = and(r21, r31)
74 if
(!p3
) r17 = and(r21, r31)
76 # CHECK-NEXT: 71 ff 15 f9
78 if
(p3.new
) r17 = and(r21, r31) }
80 # CHECK-NEXT: f1 ff 15 f9
82 if
(!p3.new
) r17 = and(r21, r31) }
84 if
(p3
) r17 = or(r21, r31)
86 if
(!p3
) r17 = or(r21, r31)
88 # CHECK-NEXT: 71 ff 35 f9
90 if
(p3.new
) r17 = or(r21, r31) }
92 # CHECK-NEXT: f1 ff 35 f9
94 if
(!p3.new
) r17 = or(r21, r31) }
96 if
(p3
) r17 = xor(r21, r31)
98 if
(!p3
) r17 = xor(r21, r31)
100 # CHECK-NEXT: 71 ff 75 f9
102 if
(p3.new
) r17 = xor(r21, r31) }
104 # CHECK-NEXT: f1 ff 75 f9
106 if
(!p3.new
) r17 = xor(r21, r31) }
108 # Conditional subtract
110 if
(p3
) r17 = sub(r31, r21)
112 if
(!p3
) r17 = sub(r31, r21)
114 # CHECK-NEXT: 71 ff 35 fb
116 if
(p3.new
) r17 = sub(r31, r21) }
118 # CHECK-NEXT: f1 ff 35 fb
120 if
(!p3.new
) r17 = sub(r31, r21) }
122 # Conditional sign extend
124 if
(p3
) r17 = sxtb
(r21)
126 if
(!p3
) r17 = sxtb
(r21)
128 # CHECK-NEXT: 11 e7 b5 70
130 if
(p3.new
) r17 = sxtb
(r21) }
132 # CHECK-NEXT: 11 ef b5 70
134 if
(!p3.new
) r17 = sxtb
(r21) }
136 if
(p3
) r17 = sxth
(r21)
138 if
(!p3
) r17 = sxth
(r21)
140 # CHECK-NEXT: 11 e7 f5 70
142 if
(p3.new
) r17 = sxth
(r21) }
144 # CHECK-NEXT: 11 ef f5 70
146 if
(!p3.new
) r17 = sxth
(r21) }
148 # Conditional transfer
154 # CHECK-NEXT: b1 e2 60 7e
156 if
(p3.new
) r17 = #21 }
158 # CHECK-NEXT: b1 e2 e0 7e
160 if
(!p3.new
) r17 = #21 }
162 # Conditional zero extend
164 if
(p3
) r17 = zxtb
(r21)
166 if
(!p3
) r17 = zxtb
(r21)
168 # CHECK-NEXT: 11 e7 95 70
170 if
(p3.new
) r17 = zxtb
(r21) }
172 # CHECK-NEXT: 11 ef 95 70
174 if
(!p3.new
) r17 = zxtb
(r21) }
176 if
(p3
) r17 = zxth
(r21)
178 if
(!p3
) r17 = zxth
(r21)
180 # CHECK-NEXT: 11 e7 d5 70
182 if
(p3.new
) r17 = zxth
(r21) }
184 # CHECK-NEXT: 11 ef d5 70
186 if
(!p3.new
) r17 = zxth
(r21) }
190 p3
= cmp.eq
(r21, #31)
192 p3
= !cmp.eq
(r21, #31)
194 p3
= cmp.gt
(r21, #31)
196 p3
= !cmp.gt
(r21, #31)
198 p3
= cmp.gtu
(r21, #31)
200 p3
= !cmp.gtu
(r21, #31)
202 p3
= cmp.eq
(r21, r31)
204 p3
= !cmp.eq
(r21, r31)
206 p3
= cmp.gt
(r21, r31)
208 p3
= !cmp.gt
(r21, r31)
210 p3
= cmp.gtu
(r21, r31)
212 p3
= !cmp.gtu
(r21, r31)
214 # Compare to general register
216 r17 = cmp.eq
(r21, #31)
218 r17 = !cmp.eq
(r21, #31)
220 r17 = cmp.eq
(r21, r31)
222 r17 = !cmp.eq
(r21, r31)