[ARM] Better OR's for MVE compares
[llvm-core.git] / test / MC / Hexagon / instructions / cr.s
blob4cc21551865bf52525b7be57c1d6b4616a7d1a8e
1 # RUN: llvm-mc --triple hexagon -filetype=obj -o - %s | llvm-objdump -d - | FileCheck %s
2 # Hexagon Programmer's Reference Manual 11.2 CR
4 # Corner detection acceleration
5 # CHECK: 93 e1 12 6b
6 p3 = !fastcorner9(p2, p1)
7 # CHECK: 91 e3 02 6b
8 p1 = fastcorner9(p2, p3)
10 # Logical reductions on predicates
11 # CHECK: 01 c0 82 6b
12 p1 = any8(p2)
13 # CHECK: 01 c0 a2 6b
14 p1 = all8(p2)
16 # Looping instructions
17 # CHECK: 00 c0 15 60
18 loop0(0, r21)
19 # CHECK: 00 c0 35 60
20 loop1(0, r21)
21 # CHECK: 60 c0 00 69
22 loop0(0, #12)
23 # CHECK: 60 c0 20 69
24 loop1(0, #12)
26 # Add to PC
27 # CHECK: 91 ca 49 6a
28 r17 = add(pc, #21)
30 # Pipelined loop instructions
31 # CHECK: 00 c0 b5 60
32 p3 = sp1loop0(0, r21)
33 # CHECK: 00 c0 d5 60
34 p3 = sp2loop0(0, r21)
35 # CHECK: 00 c0 f5 60
36 p3 = sp3loop0(0, r21)
37 # CHECK: a1 c0 a0 69
38 p3 = sp1loop0(0, #21)
39 # CHECK: a1 c0 c0 69
40 p3 = sp2loop0(0, #21)
41 # CHECK: a1 c0 e0 69
42 p3 = sp3loop0(0, #21)
44 # Logical operations on predicates
45 # CHECK: 01 c3 02 6b
46 p1 = and(p3, p2)
47 # CHECK: c1 c3 12 6b
48 p1 = and(p2, and(p3, p3))
49 # CHECK: 01 c3 22 6b
50 p1 = or(p3, p2)
51 # CHECK: c1 c3 32 6b
52 p1 = and(p2, or(p3, p3))
53 # CHECK: 01 c3 42 6b
54 p1 = xor(p2, p3)
55 # CHECK: c1 c3 52 6b
56 p1 = or(p2, and(p3, p3))
57 # CHECK: 01 c2 63 6b
58 p1 = and(p2, !p3)
59 # CHECK: c1 c3 72 6b
60 p1 = or(p2, or(p3, p3))
61 # CHECK: c1 c3 92 6b
62 p1 = and(p2, and(p3, !p3))
63 # CHECK: c1 c3 b2 6b
64 p1 = and(p2, or(p3, !p3))
65 # CHECK: 01 c0 c2 6b
66 p1 = not(p2)
67 # CHECK: c1 c3 d2 6b
68 p1 = or(p2, and(p3, !p3))
69 # CHECK: 01 c2 e3 6b
70 p1 = or(p2, !p3)
71 # CHECK: c1 c3 f2 6b
72 p1 = or(p2, or(p3, !p3))
74 # User control register transfer
75 # CHECK: 0d c0 35 62
76 cs1 = r21
77 # CHECK: 11 c0 0d 6a
78 r17 = cs1