[Hexagon] Enabling ASM parsing on Hexagon backend and adding instruction parsing...
[oota-llvm.git] / test / MC / Hexagon / instructions / xtype_pred.s
1 # RUN: llvm-mc -triple=hexagon -filetype=obj -o - %s | llvm-objdump -d - | FileCheck %s
2 # Hexagon Programmer's Reference Manual 11.10.7 XTYPE/PRED
3
4 # Bounds check
5 # CHECK: 83 f4 10 d2
6 p3 = boundscheck(r17:16, r21:20):raw:lo
7 # CHECK: a3 f4 10 d2
8 p3 = boundscheck(r17:16, r21:20):raw:hi
9
10 # Compare byte
11 # CHECK: 43 d5 d1 c7
12 p3 = cmpb.gt(r17, r21)
13 # CHECK: c3 d5 d1 c7
14 p3 = cmpb.eq(r17, r21)
15 # CHECK: e3 d5 d1 c7
16 p3 = cmpb.gtu(r17, r21)
17 # CHECK: a3 c2 11 dd
18 p3 = cmpb.eq(r17, #21)
19 # CHECK: a3 c2 31 dd
20 p3 = cmpb.gt(r17, #21)
21 # CHECK: a3 c2 51 dd
22 p3 = cmpb.gtu(r17, #21)
23
24 # Compare half
25 # CHECK: 63 d5 d1 c7
26 p3 = cmph.eq(r17, r21)
27 # CHECK: 83 d5 d1 c7
28 p3 = cmph.gt(r17, r21)
29 # CHECK: a3 d5 d1 c7
30 p3 = cmph.gtu(r17, r21)
31 # CHECK: ab c2 11 dd
32 p3 = cmph.eq(r17, #21)
33 # CHECK: ab c2 31 dd
34 p3 = cmph.gt(r17, #21)
35 # CHECK: ab c2 51 dd
36 p3 = cmph.gtu(r17, #21)
37
38 # Compare doublewords
39 # CHECK: 03 de 94 d2
40 p3 = cmp.eq(r21:20, r31:30)
41 # CHECK: 43 de 94 d2
42 p3 = cmp.gt(r21:20, r31:30)
43 # CHECK: 83 de 94 d2
44 p3 = cmp.gtu(r21:20, r31:30)
45
46 # Compare bitmask
47 # CHECK: 03 d5 91 85
48 p3 = bitsclr(r17, #21)
49 # CHECK: 03 d5 b1 85
50 p3 = !bitsclr(r17, #21)
51 # CHECK: 03 d5 51 c7
52 p3 = bitsset(r17, r21)
53 # CHECK: 03 d5 71 c7
54 p3 = !bitsset(r17, r21)
55 # CHECK: 03 d5 91 c7
56 p3 = bitsclr(r17, r21)
57 # CHECK: 03 d5 b1 c7
58 p3 = !bitsclr(r17, r21)
59
60 # mask generate from predicate
61 # CHECK: 10 c3 00 86
62 r17:16 = mask(p3)
63
64 # Check for TLB match
65 # CHECK: 63 f5 10 d2
66 p3 = tlbmatch(r17:16, r21)
67
68 # Predicate Transfer
69 # CHECK: 03 c0 45 85
70 p3 = r5
71 # CHECK: 05 c0 43 89
72 r5 = p3
73
74 # Test bit
75 # CHECK: 03 d5 11 85
76 p3 = tstbit(r17, #21)
77 # CHECK: 03 d5 31 85
78 p3 = !tstbit(r17, #21)
79 # CHECK: 03 d5 11 c7
80 p3 = tstbit(r17, r21)
81 # CHECK: 03 d5 31 c7
82 p3 = !tstbit(r17, r21)
83
84 # Vector compare halfwords
85 # CHECK: 63 de 14 d2
86 p3 = vcmph.eq(r21:20, r31:30)
87 # CHECK: 83 de 14 d2
88 p3 = vcmph.gt(r21:20, r31:30)
89 # CHECK: a3 de 14 d2
90 p3 = vcmph.gtu(r21:20, r31:30)
91 # CHECK: eb c3 14 dc
92 p3 = vcmph.eq(r21:20, #31)
93 # CHECK: eb c3 34 dc
94 p3 = vcmph.gt(r21:20, #31)
95 # CHECK: eb c3 54 dc
96 p3 = vcmph.gtu(r21:20, #31)
97
98 # Vector compare bytes for any match
99 # CHECK: 03 fe 14 d2
100 p3 = any8(vcmpb.eq(r21:20, r31:30))
101
102 # Vector compare bytes
103 # CHECK: 63 de 14 d2
104 p3 = vcmph.eq(r21:20, r31:30)
105 # CHECK: 83 de 14 d2
106 p3 = vcmph.gt(r21:20, r31:30)
107 # CHECK: a3 de 14 d2
108 p3 = vcmph.gtu(r21:20, r31:30)
109 # CHECK: eb c3 14 dc
110 p3 = vcmph.eq(r21:20, #31)
111 # CHECK: eb c3 34 dc
112 p3 = vcmph.gt(r21:20, #31)
113 # CHECK: eb c3 54 dc
114 p3 = vcmph.gtu(r21:20, #31)
115
116 # Vector compare words
117 # CHECK: 03 de 14 d2
118 p3 = vcmpw.eq(r21:20, r31:30)
119 # CHECK: 23 de 14 d2
120 p3 = vcmpw.gt(r21:20, r31:30)
121 # CHECK: 43 de 14 d2
122 p3 = vcmpw.gtu(r21:20, r31:30)
123 # CHECK: f3 c3 14 dc
124 p3 = vcmpw.eq(r21:20, #31)
125 # CHECK: f3 c3 34 dc
126 p3 = vcmpw.gt(r21:20, #31)
127 # CHECK: f3 c3 54 dc
128 p3 = vcmpw.gtu(r21:20, #31)
129
130 # Viterbi pack even and odd predicate bits
131 # CHECK: 11 c2 03 89
132 r17 = vitpack(p3, p2)
133
134 # Vector mux
135 # CHECK: 70 de 14 d1
136 r17:16 = vmux(p3, r21:20, r31:30)