1 # RUN: llvm-mc --triple hexagon -filetype=obj -o - %s | llvm-objdump -d - | FileCheck %s 2 # Hexagon Programmer's Reference Manual 11.2 CR 3 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) 9 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) 15 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) 25 26 # Add to PC 27 # CHECK: 91 ca 49 6a 28 r17 = add(pc, #21) 29 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) 43 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)) 73 74 # User control register transfer 75 # CHECK: 0d c0 35 62 76 cs1 = r21 77 # CHECK: 11 c0 0d 6a 78 r17 = cs1 79