1 # RUN: llvm-mc --triple hexagon -disassemble < %s | FileCheck %s 2 # Hexagon Programmer's Reference Manual 11.2 CR 3 4 # Corner detection acceleration 5 0x93 0xe1 0x12 0x6b 6 # CHECK: p3 = !fastcorner9(p2, p1) 7 0x91 0xe3 0x02 0x6b 8 # CHECK: p1 = fastcorner9(p2, p3) 9 10 # Logical reductions on predicates 11 0x01 0xc0 0x82 0x6b 12 # CHECK: p1 = any8(p2) 13 0x01 0xc0 0xa2 0x6b 14 # CHECK: p1 = all8(p2) 15 16 # Looping instructions 17 0x08 0xc4 0x15 0x60 18 # CHECK: loop0 19 0x08 0xc4 0x35 0x60 20 # CHECK: loop1 21 0x68 0xc4 0x00 0x69 22 # CHECK: loop0 23 0x68 0xc4 0x20 0x69 24 # CHECK: loop1 25 26 # Add to PC 27 0x91 0xca 0x49 0x6a 28 # CHECK: r17 = add(pc, #21) 29 30 # Pipelined loop instructions 31 0x08 0xc4 0xb5 0x60 32 # CHECK: p3 = sp1loop0 33 0x08 0xc4 0xd5 0x60 34 # CHECK: p3 = sp2loop0 35 0x08 0xc4 0xf5 0x60 36 # CHECK: p3 = sp3loop0 37 0xa9 0xc4 0xa0 0x69 38 # CHECK: p3 = sp1loop0 39 0xa9 0xc4 0xc0 0x69 40 # CHECK: p3 = sp2loop0 41 0xa9 0xc4 0xe0 0x69 42 # CHECK: p3 = sp3loop0 43 44 # Logical operations on predicates 45 0x01 0xc3 0x02 0x6b 46 # CHECK: p1 = and(p3, p2) 47 0xc1 0xc3 0x12 0x6b 48 # CHECK: p1 = and(p2, and(p3, p3)) 49 0x01 0xc3 0x22 0x6b 50 # CHECK: p1 = or(p3, p2) 51 0xc1 0xc3 0x32 0x6b 52 # CHECK: p1 = and(p2, or(p3, p3)) 53 0x01 0xc3 0x42 0x6b 54 # CHECK: p1 = xor(p2, p3) 55 0xc1 0xc3 0x52 0x6b 56 # CHECK: p1 = or(p2, and(p3, p3)) 57 0x01 0xc2 0x63 0x6b 58 # CHECK: p1 = and(p2, !p3) 59 0xc1 0xc3 0x72 0x6b 60 # CHECK: p1 = or(p2, or(p3, p3)) 61 0xc1 0xc3 0x92 0x6b 62 # CHECK: p1 = and(p2, and(p3, !p3)) 63 0xc1 0xc3 0xb2 0x6b 64 # CHECK: p1 = and(p2, or(p3, !p3)) 65 0x01 0xc0 0xc2 0x6b 66 # CHECK: p1 = not(p2) 67 0xc1 0xc3 0xd2 0x6b 68 # CHECK: p1 = or(p2, and(p3, !p3)) 69 0x01 0xc2 0xe3 0x6b 70 # CHECK: p1 = or(p2, !p3) 71 0xc1 0xc3 0xf2 0x6b 72 # CHECK: p1 = or(p2, or(p3, !p3)) 73 74 # User control register transfer 75 0x0d 0xc0 0x35 0x62 76 # CHECK: cs1 = r21 77 0x11 0xc0 0x0d 0x6a 78 # CHECK: r17 = cs1 79