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
| # RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s
# Hexagon Programmer's Reference Manual 11.10.7 XTYPE/PRED
# Bounds check
0x83 0xf4 0x10 0xd2
# CHECK: p3 = boundscheck(r17:16,r21:20):raw:lo
0xa3 0xf4 0x10 0xd2
# CHECK: p3 = boundscheck(r17:16,r21:20):raw:hi
# Compare byte
0x43 0xd5 0xd1 0xc7
# CHECK: p3 = cmpb.gt(r17,r21)
0xc3 0xd5 0xd1 0xc7
# CHECK: p3 = cmpb.eq(r17,r21)
0xe3 0xd5 0xd1 0xc7
# CHECK: p3 = cmpb.gtu(r17,r21)
0xa3 0xc2 0x11 0xdd
# CHECK: p3 = cmpb.eq(r17,#21)
0xa3 0xc2 0x31 0xdd
# CHECK: p3 = cmpb.gt(r17,#21)
0xa3 0xc2 0x51 0xdd
# CHECK: p3 = cmpb.gtu(r17,#21)
# Compare half
0x63 0xd5 0xd1 0xc7
# CHECK: p3 = cmph.eq(r17,r21)
0x83 0xd5 0xd1 0xc7
# CHECK: p3 = cmph.gt(r17,r21)
0xa3 0xd5 0xd1 0xc7
# CHECK: p3 = cmph.gtu(r17,r21)
0xab 0xc2 0x11 0xdd
# CHECK: p3 = cmph.eq(r17,#21)
0xab 0xc2 0x31 0xdd
# CHECK: p3 = cmph.gt(r17,#21)
0xab 0xc2 0x51 0xdd
# CHECK: p3 = cmph.gtu(r17,#21)
# Compare doublewords
0x03 0xde 0x94 0xd2
# CHECK: p3 = cmp.eq(r21:20,r31:30)
0x43 0xde 0x94 0xd2
# CHECK: p3 = cmp.gt(r21:20,r31:30)
0x83 0xde 0x94 0xd2
# CHECK: p3 = cmp.gtu(r21:20,r31:30)
# Compare bitmask
0x03 0xd5 0x91 0x85
# CHECK: p3 = bitsclr(r17,#21)
0x03 0xd5 0xb1 0x85
# CHECK: p3 = !bitsclr(r17,#21)
0x03 0xd5 0x51 0xc7
# CHECK: p3 = bitsset(r17,r21)
0x03 0xd5 0x71 0xc7
# CHECK: p3 = !bitsset(r17,r21)
0x03 0xd5 0x91 0xc7
# CHECK: p3 = bitsclr(r17,r21)
0x03 0xd5 0xb1 0xc7
# CHECK: p3 = !bitsclr(r17,r21)
# mask generate from predicate
0x10 0xc3 0x00 0x86
# CHECK: r17:16 = mask(p3)
# Check for TLB match
0x63 0xf5 0x10 0xd2
# CHECK: p3 = tlbmatch(r17:16,r21)
# Predicate Transfer
0x03 0xc0 0x45 0x85
# CHECK: p3 = r5
0x05 0xc0 0x43 0x89
# CHECK: r5 = p3
# Test bit
0x03 0xd5 0x11 0x85
# CHECK: p3 = tstbit(r17,#21)
0x03 0xd5 0x31 0x85
# CHECK: p3 = !tstbit(r17,#21)
0x03 0xd5 0x11 0xc7
# CHECK: p3 = tstbit(r17,r21)
0x03 0xd5 0x31 0xc7
# CHECK: p3 = !tstbit(r17,r21)
# Vector compare halfwords
0x63 0xde 0x14 0xd2
# CHECK: p3 = vcmph.eq(r21:20,r31:30)
0x83 0xde 0x14 0xd2
# CHECK: p3 = vcmph.gt(r21:20,r31:30)
0xa3 0xde 0x14 0xd2
# CHECK: p3 = vcmph.gtu(r21:20,r31:30)
0xeb 0xc3 0x14 0xdc
# CHECK: p3 = vcmph.eq(r21:20,#31)
0xeb 0xc3 0x34 0xdc
# CHECK: p3 = vcmph.gt(r21:20,#31)
0xeb 0xc3 0x54 0xdc
# CHECK: p3 = vcmph.gtu(r21:20,#31)
# Vector compare bytes for any match
0x03 0xfe 0x14 0xd2
# CHECK: p3 = any8(vcmpb.eq(r21:20,r31:30))
# Vector compare bytes
0x63 0xde 0x14 0xd2
# CHECK: p3 = vcmph.eq(r21:20,r31:30)
0x83 0xde 0x14 0xd2
# CHECK: p3 = vcmph.gt(r21:20,r31:30)
0xa3 0xde 0x14 0xd2
# CHECK: p3 = vcmph.gtu(r21:20,r31:30)
0xeb 0xc3 0x14 0xdc
# CHECK: p3 = vcmph.eq(r21:20,#31)
0xeb 0xc3 0x34 0xdc
# CHECK: p3 = vcmph.gt(r21:20,#31)
0xeb 0xc3 0x54 0xdc
# CHECK: p3 = vcmph.gtu(r21:20,#31)
# Vector compare words
0x03 0xde 0x14 0xd2
# CHECK: p3 = vcmpw.eq(r21:20,r31:30)
0x23 0xde 0x14 0xd2
# CHECK: p3 = vcmpw.gt(r21:20,r31:30)
0x43 0xde 0x14 0xd2
# CHECK: p3 = vcmpw.gtu(r21:20,r31:30)
0xf3 0xc3 0x14 0xdc
# CHECK: p3 = vcmpw.eq(r21:20,#31)
0xf3 0xc3 0x34 0xdc
# CHECK: p3 = vcmpw.gt(r21:20,#31)
0xf3 0xc3 0x54 0xdc
# CHECK: p3 = vcmpw.gtu(r21:20,#31)
# Viterbi pack even and odd predicate bits
0x11 0xc2 0x03 0x89
# CHECK: r17 = vitpack(p3,p2)
# Vector mux
0x70 0xde 0x14 0xd1
# CHECK: r17:16 = vmux(p3,r21:20,r31:30)
|