blob: 6cf2b5fda39994b1f0eab734b74f1d82f26f4c28 [file] [log] [blame]
Colin LeMahieuf5b4d652014-12-08 23:07:59 +00001# RUN: llvm-mc --triple hexagon -disassemble < %s | FileCheck %s
Colin LeMahieu3c740a32015-01-29 21:47:15 +00002# Hexagon Programmer's Reference Manual 11.2 CR
Colin LeMahieuf5b4d652014-12-08 23:07:59 +00003
Colin LeMahieu3c740a32015-01-29 21:47:15 +00004# Corner detection acceleration
Colin LeMahieu777abcb2015-01-07 20:07:28 +000050x93 0xe1 0x12 0x6b
6# CHECK: p3 = !fastcorner9(p2, p1)
70x91 0xe3 0x02 0x6b
8# CHECK: p1 = fastcorner9(p2, p3)
Colin LeMahieu3c740a32015-01-29 21:47:15 +00009
10# Logical reductions on predicates
Colin LeMahieuf5b4d652014-12-08 23:07:59 +0000110x01 0xc0 0x82 0x6b
12# CHECK: p1 = any8(p2)
130x01 0xc0 0xa2 0x6b
14# CHECK: p1 = all8(p2)
Colin LeMahieu3c740a32015-01-29 21:47:15 +000015
16# Looping instructions
Colin LeMahieu5ccbb122014-12-19 00:06:53 +0000170x08 0xc4 0x15 0x60
18# CHECK: loop0
190x08 0xc4 0x35 0x60
20# CHECK: loop1
210x68 0xc4 0x00 0x69
22# CHECK: loop0
230x68 0xc4 0x20 0x69
24# CHECK: loop1
Colin LeMahieu3c740a32015-01-29 21:47:15 +000025
26# Add to PC
270x91 0xca 0x49 0x6a
28# CHECK: r17 = add(pc, #21)
29
30# Pipelined loop instructions
Colin LeMahieu5ccbb122014-12-19 00:06:53 +0000310x08 0xc4 0xb5 0x60
32# CHECK: p3 = sp1loop0
330x08 0xc4 0xd5 0x60
34# CHECK: p3 = sp2loop0
350x08 0xc4 0xf5 0x60
36# CHECK: p3 = sp3loop0
370xa9 0xc4 0xa0 0x69
38# CHECK: p3 = sp1loop0
390xa9 0xc4 0xc0 0x69
40# CHECK: p3 = sp2loop0
410xa9 0xc4 0xe0 0x69
42# CHECK: p3 = sp3loop0
Colin LeMahieu3c740a32015-01-29 21:47:15 +000043
44# Logical operations on predicates
Colin LeMahieuf5b4d652014-12-08 23:07:59 +0000450x01 0xc3 0x02 0x6b
46# CHECK: p1 = and(p3, p2)
Colin LeMahieu8971e052014-12-30 23:22:39 +0000470xc1 0xc3 0x12 0x6b
48# CHECK: p1 = and(p2, and(p3, p3))
Colin LeMahieuf5b4d652014-12-08 23:07:59 +0000490x01 0xc3 0x22 0x6b
50# CHECK: p1 = or(p3, p2)
Colin LeMahieu8971e052014-12-30 23:22:39 +0000510xc1 0xc3 0x32 0x6b
52# CHECK: p1 = and(p2, or(p3, p3))
Colin LeMahieu3c740a32015-01-29 21:47:15 +0000530x01 0xc3 0x42 0x6b
54# CHECK: p1 = xor(p2, p3)
Colin LeMahieu8971e052014-12-30 23:22:39 +0000550xc1 0xc3 0x52 0x6b
56# CHECK: p1 = or(p2, and(p3, p3))
Colin LeMahieu3c740a32015-01-29 21:47:15 +0000570x01 0xc2 0x63 0x6b
Colin LeMahieu8971e052014-12-30 23:22:39 +000058# CHECK: p1 = and(p2, !p3)
590xc1 0xc3 0x72 0x6b
60# CHECK: p1 = or(p2, or(p3, p3))
610xc1 0xc3 0x92 0x6b
62# CHECK: p1 = and(p2, and(p3, !p3))
630xc1 0xc3 0xb2 0x6b
64# CHECK: p1 = and(p2, or(p3, !p3))
650x01 0xc0 0xc2 0x6b
66# CHECK: p1 = not(p2)
670xc1 0xc3 0xd2 0x6b
68# CHECK: p1 = or(p2, and(p3, !p3))
690x01 0xc2 0xe3 0x6b
70# CHECK: p1 = or(p2, !p3)
710xc1 0xc3 0xf2 0x6b
72# CHECK: p1 = or(p2, or(p3, !p3))
Colin LeMahieu3c740a32015-01-29 21:47:15 +000073
74# User control register transfer
Colin LeMahieuf3db8842014-12-19 19:06:32 +0000750x0d 0xc0 0x35 0x62
76# CHECK: cs1 = r21
770x11 0xc0 0x0d 0x6a
78# CHECK: r17 = cs1