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)