| Colin LeMahieu | f5b4d65 | 2014-12-08 23:07:59 +0000 | [diff] [blame] | 1 | # RUN: llvm-mc --triple hexagon -disassemble < %s | FileCheck %s |
| Colin LeMahieu | 3c740a3 | 2015-01-29 21:47:15 +0000 | [diff] [blame] | 2 | # Hexagon Programmer's Reference Manual 11.2 CR |
| Colin LeMahieu | f5b4d65 | 2014-12-08 23:07:59 +0000 | [diff] [blame] | 3 | |
| Colin LeMahieu | 3c740a3 | 2015-01-29 21:47:15 +0000 | [diff] [blame] | 4 | # Corner detection acceleration |
| Colin LeMahieu | 777abcb | 2015-01-07 20:07:28 +0000 | [diff] [blame] | 5 | 0x93 0xe1 0x12 0x6b |
| 6 | # CHECK: p3 = !fastcorner9(p2, p1) |
| 7 | 0x91 0xe3 0x02 0x6b |
| 8 | # CHECK: p1 = fastcorner9(p2, p3) |
| Colin LeMahieu | 3c740a3 | 2015-01-29 21:47:15 +0000 | [diff] [blame] | 9 | |
| 10 | # Logical reductions on predicates |
| Colin LeMahieu | f5b4d65 | 2014-12-08 23:07:59 +0000 | [diff] [blame] | 11 | 0x01 0xc0 0x82 0x6b |
| 12 | # CHECK: p1 = any8(p2) |
| 13 | 0x01 0xc0 0xa2 0x6b |
| 14 | # CHECK: p1 = all8(p2) |
| Colin LeMahieu | 3c740a3 | 2015-01-29 21:47:15 +0000 | [diff] [blame] | 15 | |
| 16 | # Looping instructions |
| Colin LeMahieu | 5ccbb12 | 2014-12-19 00:06:53 +0000 | [diff] [blame] | 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 |
| Colin LeMahieu | 3c740a3 | 2015-01-29 21:47:15 +0000 | [diff] [blame] | 25 | |
| 26 | # Add to PC |
| 27 | 0x91 0xca 0x49 0x6a |
| 28 | # CHECK: r17 = add(pc, #21) |
| 29 | |
| 30 | # Pipelined loop instructions |
| Colin LeMahieu | 5ccbb12 | 2014-12-19 00:06:53 +0000 | [diff] [blame] | 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 |
| Colin LeMahieu | 3c740a3 | 2015-01-29 21:47:15 +0000 | [diff] [blame] | 43 | |
| 44 | # Logical operations on predicates |
| Colin LeMahieu | f5b4d65 | 2014-12-08 23:07:59 +0000 | [diff] [blame] | 45 | 0x01 0xc3 0x02 0x6b |
| 46 | # CHECK: p1 = and(p3, p2) |
| Colin LeMahieu | 8971e05 | 2014-12-30 23:22:39 +0000 | [diff] [blame] | 47 | 0xc1 0xc3 0x12 0x6b |
| 48 | # CHECK: p1 = and(p2, and(p3, p3)) |
| Colin LeMahieu | f5b4d65 | 2014-12-08 23:07:59 +0000 | [diff] [blame] | 49 | 0x01 0xc3 0x22 0x6b |
| 50 | # CHECK: p1 = or(p3, p2) |
| Colin LeMahieu | 8971e05 | 2014-12-30 23:22:39 +0000 | [diff] [blame] | 51 | 0xc1 0xc3 0x32 0x6b |
| 52 | # CHECK: p1 = and(p2, or(p3, p3)) |
| Colin LeMahieu | 3c740a3 | 2015-01-29 21:47:15 +0000 | [diff] [blame] | 53 | 0x01 0xc3 0x42 0x6b |
| 54 | # CHECK: p1 = xor(p2, p3) |
| Colin LeMahieu | 8971e05 | 2014-12-30 23:22:39 +0000 | [diff] [blame] | 55 | 0xc1 0xc3 0x52 0x6b |
| 56 | # CHECK: p1 = or(p2, and(p3, p3)) |
| Colin LeMahieu | 3c740a3 | 2015-01-29 21:47:15 +0000 | [diff] [blame] | 57 | 0x01 0xc2 0x63 0x6b |
| Colin LeMahieu | 8971e05 | 2014-12-30 23:22:39 +0000 | [diff] [blame] | 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)) |
| Colin LeMahieu | 3c740a3 | 2015-01-29 21:47:15 +0000 | [diff] [blame] | 73 | |
| 74 | # User control register transfer |
| Colin LeMahieu | f3db884 | 2014-12-19 19:06:32 +0000 | [diff] [blame] | 75 | 0x0d 0xc0 0x35 0x62 |
| 76 | # CHECK: cs1 = r21 |
| 77 | 0x11 0xc0 0x0d 0x6a |
| 78 | # CHECK: r17 = cs1 |