reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107
  108
  109
  110
  111
  112
  113
  114
  115
  116
  117
  118
  119
  120
  121
  122
  123
  124
  125
  126
  127
  128
  129
  130
  131
  132
  133
  134
  135
  136
# RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s
# Hexagon Programmer's Reference Manual 11.10.7 XTYPE/PRED

# Bounds check
0x83 0xf4 0x10 0xd2
# CHECK: p3 = boundscheck(r17:16,r21:20):raw:lo
0xa3 0xf4 0x10 0xd2
# CHECK: p3 = boundscheck(r17:16,r21:20):raw:hi

# Compare byte
0x43 0xd5 0xd1 0xc7
# CHECK: p3 = cmpb.gt(r17,r21)
0xc3 0xd5 0xd1 0xc7
# CHECK: p3 = cmpb.eq(r17,r21)
0xe3 0xd5 0xd1 0xc7
# CHECK: p3 = cmpb.gtu(r17,r21)
0xa3 0xc2 0x11 0xdd
# CHECK: p3 = cmpb.eq(r17,#21)
0xa3 0xc2 0x31 0xdd
# CHECK: p3 = cmpb.gt(r17,#21)
0xa3 0xc2 0x51 0xdd
# CHECK: p3 = cmpb.gtu(r17,#21)

# Compare half
0x63 0xd5 0xd1 0xc7
# CHECK: p3 = cmph.eq(r17,r21)
0x83 0xd5 0xd1 0xc7
# CHECK: p3 = cmph.gt(r17,r21)
0xa3 0xd5 0xd1 0xc7
# CHECK: p3 = cmph.gtu(r17,r21)
0xab 0xc2 0x11 0xdd
# CHECK: p3 = cmph.eq(r17,#21)
0xab 0xc2 0x31 0xdd
# CHECK: p3 = cmph.gt(r17,#21)
0xab 0xc2 0x51 0xdd
# CHECK: p3 = cmph.gtu(r17,#21)

# Compare doublewords
0x03 0xde 0x94 0xd2
# CHECK: p3 = cmp.eq(r21:20,r31:30)
0x43 0xde 0x94 0xd2
# CHECK: p3 = cmp.gt(r21:20,r31:30)
0x83 0xde 0x94 0xd2
# CHECK: p3 = cmp.gtu(r21:20,r31:30)

# Compare bitmask
0x03 0xd5 0x91 0x85
# CHECK: p3 = bitsclr(r17,#21)
0x03 0xd5 0xb1 0x85
# CHECK: p3 = !bitsclr(r17,#21)
0x03 0xd5 0x51 0xc7
# CHECK: p3 = bitsset(r17,r21)
0x03 0xd5 0x71 0xc7
# CHECK: p3 = !bitsset(r17,r21)
0x03 0xd5 0x91 0xc7
# CHECK: p3 = bitsclr(r17,r21)
0x03 0xd5 0xb1 0xc7
# CHECK: p3 = !bitsclr(r17,r21)

# mask generate from predicate
0x10 0xc3 0x00 0x86
# CHECK: r17:16 = mask(p3)

# Check for TLB match
0x63 0xf5 0x10 0xd2
# CHECK: p3 = tlbmatch(r17:16,r21)

# Predicate Transfer
0x03 0xc0 0x45 0x85
# CHECK: p3 = r5
0x05 0xc0 0x43 0x89
# CHECK: r5 = p3

# Test bit
0x03 0xd5 0x11 0x85
# CHECK: p3 = tstbit(r17,#21)
0x03 0xd5 0x31 0x85
# CHECK: p3 = !tstbit(r17,#21)
0x03 0xd5 0x11 0xc7
# CHECK: p3 = tstbit(r17,r21)
0x03 0xd5 0x31 0xc7
# CHECK: p3 = !tstbit(r17,r21)

# Vector compare halfwords
0x63 0xde 0x14 0xd2
# CHECK: p3 = vcmph.eq(r21:20,r31:30)
0x83 0xde 0x14 0xd2
# CHECK: p3 = vcmph.gt(r21:20,r31:30)
0xa3 0xde 0x14 0xd2
# CHECK: p3 = vcmph.gtu(r21:20,r31:30)
0xeb 0xc3 0x14 0xdc
# CHECK: p3 = vcmph.eq(r21:20,#31)
0xeb 0xc3 0x34 0xdc
# CHECK: p3 = vcmph.gt(r21:20,#31)
0xeb 0xc3 0x54 0xdc
# CHECK: p3 = vcmph.gtu(r21:20,#31)

# Vector compare bytes for any match
0x03 0xfe 0x14 0xd2
# CHECK: p3 = any8(vcmpb.eq(r21:20,r31:30))

# Vector compare bytes
0x63 0xde 0x14 0xd2
# CHECK: p3 = vcmph.eq(r21:20,r31:30)
0x83 0xde 0x14 0xd2
# CHECK: p3 = vcmph.gt(r21:20,r31:30)
0xa3 0xde 0x14 0xd2
# CHECK: p3 = vcmph.gtu(r21:20,r31:30)
0xeb 0xc3 0x14 0xdc
# CHECK: p3 = vcmph.eq(r21:20,#31)
0xeb 0xc3 0x34 0xdc
# CHECK: p3 = vcmph.gt(r21:20,#31)
0xeb 0xc3 0x54 0xdc
# CHECK: p3 = vcmph.gtu(r21:20,#31)

# Vector compare words
0x03 0xde 0x14 0xd2
# CHECK: p3 = vcmpw.eq(r21:20,r31:30)
0x23 0xde 0x14 0xd2
# CHECK: p3 = vcmpw.gt(r21:20,r31:30)
0x43 0xde 0x14 0xd2
# CHECK: p3 = vcmpw.gtu(r21:20,r31:30)
0xf3 0xc3 0x14 0xdc
# CHECK: p3 = vcmpw.eq(r21:20,#31)
0xf3 0xc3 0x34 0xdc
# CHECK: p3 = vcmpw.gt(r21:20,#31)
0xf3 0xc3 0x54 0xdc
# CHECK: p3 = vcmpw.gtu(r21:20,#31)

# Viterbi pack even and odd predicate bits
0x11 0xc2 0x03 0x89
# CHECK: r17 = vitpack(p3,p2)

# Vector mux
0x70 0xde 0x14 0xd1
# CHECK: r17:16 = vmux(p3,r21:20,r31:30)