| # RUN: llvm-mc --triple hexagon -disassemble < %s | FileCheck %s |
| # Hexagon Programmer's Reference Manual 11.2 CR |
| |
| # Corner detection acceleration |
| 0x93 0xe1 0x12 0x6b |
| # CHECK: p3 = !fastcorner9(p2,p1) |
| 0x91 0xe3 0x02 0x6b |
| # CHECK: p1 = fastcorner9(p2,p3) |
| |
| # Logical reductions on predicates |
| 0x01 0xc0 0x82 0x6b |
| # CHECK: p1 = any8(p2) |
| 0x01 0xc0 0xa2 0x6b |
| # CHECK: p1 = all8(p2) |
| |
| # Looping instructions |
| 0x08 0xc4 0x15 0x60 |
| # CHECK: loop0 |
| 0x08 0xc4 0x35 0x60 |
| # CHECK: loop1 |
| 0x68 0xc4 0x00 0x69 |
| # CHECK: loop0 |
| 0x68 0xc4 0x20 0x69 |
| # CHECK: loop1 |
| |
| # Add to PC |
| 0x91 0xca 0x49 0x6a |
| # CHECK: r17 = add(pc,#21) |
| |
| # Pipelined loop instructions |
| 0x08 0xc4 0xb5 0x60 |
| # CHECK: p3 = sp1loop0 |
| 0x08 0xc4 0xd5 0x60 |
| # CHECK: p3 = sp2loop0 |
| 0x08 0xc4 0xf5 0x60 |
| # CHECK: p3 = sp3loop0 |
| 0xa9 0xc4 0xa0 0x69 |
| # CHECK: p3 = sp1loop0 |
| 0xa9 0xc4 0xc0 0x69 |
| # CHECK: p3 = sp2loop0 |
| 0xa9 0xc4 0xe0 0x69 |
| # CHECK: p3 = sp3loop0 |
| |
| # Logical operations on predicates |
| 0x01 0xc3 0x02 0x6b |
| # CHECK: p1 = and(p3,p2) |
| 0xc1 0xc3 0x12 0x6b |
| # CHECK: p1 = and(p2,and(p3,p3)) |
| 0x01 0xc3 0x22 0x6b |
| # CHECK: p1 = or(p3,p2) |
| 0xc1 0xc3 0x32 0x6b |
| # CHECK: p1 = and(p2,or(p3,p3)) |
| 0x01 0xc3 0x42 0x6b |
| # CHECK: p1 = xor(p2,p3) |
| 0xc1 0xc3 0x52 0x6b |
| # CHECK: p1 = or(p2,and(p3,p3)) |
| 0x01 0xc2 0x63 0x6b |
| # CHECK: p1 = and(p2,!p3) |
| 0xc1 0xc3 0x72 0x6b |
| # CHECK: p1 = or(p2,or(p3,p3)) |
| 0xc1 0xc3 0x92 0x6b |
| # CHECK: p1 = and(p2,and(p3,!p3)) |
| 0xc1 0xc3 0xb2 0x6b |
| # CHECK: p1 = and(p2,or(p3,!p3)) |
| 0x01 0xc0 0xc2 0x6b |
| # CHECK: p1 = not(p2) |
| 0xc1 0xc3 0xd2 0x6b |
| # CHECK: p1 = or(p2,and(p3,!p3)) |
| 0x01 0xc2 0xe3 0x6b |
| # CHECK: p1 = or(p2,!p3) |
| 0xc1 0xc3 0xf2 0x6b |
| # CHECK: p1 = or(p2,or(p3,!p3)) |
| |
| # User control register transfer |
| 0x0d 0xc0 0x35 0x62 |
| # CHECK: cs1 = r21 |
| 0x11 0xc0 0x0d 0x6a |
| # CHECK: r17 = cs1 |