# RUN: llvm-mc -triple=hexagon -filetype=obj -o - %s | llvm-objdump -d - | FileCheck %s # Hexagon Programmer's Reference Manual 11.10.7 XTYPE/PRED # Bounds check # CHECK: 83 f4 10 d2 p3 = boundscheck(r17:16, r21:20):raw:lo # CHECK: a3 f4 10 d2 p3 = boundscheck(r17:16, r21:20):raw:hi # Compare byte # CHECK: 43 d5 d1 c7 p3 = cmpb.gt(r17, r21) # CHECK: c3 d5 d1 c7 p3 = cmpb.eq(r17, r21) # CHECK: e3 d5 d1 c7 p3 = cmpb.gtu(r17, r21) # CHECK: a3 c2 11 dd p3 = cmpb.eq(r17, #21) # CHECK: a3 c2 31 dd p3 = cmpb.gt(r17, #21) # CHECK: a3 c2 51 dd p3 = cmpb.gtu(r17, #21) # Compare half # CHECK: 63 d5 d1 c7 p3 = cmph.eq(r17, r21) # CHECK: 83 d5 d1 c7 p3 = cmph.gt(r17, r21) # CHECK: a3 d5 d1 c7 p3 = cmph.gtu(r17, r21) # CHECK: ab c2 11 dd p3 = cmph.eq(r17, #21) # CHECK: ab c2 31 dd p3 = cmph.gt(r17, #21) # CHECK: ab c2 51 dd p3 = cmph.gtu(r17, #21) # Compare doublewords # CHECK: 03 de 94 d2 p3 = cmp.eq(r21:20, r31:30) # CHECK: 43 de 94 d2 p3 = cmp.gt(r21:20, r31:30) # CHECK: 83 de 94 d2 p3 = cmp.gtu(r21:20, r31:30) # Compare bitmask # CHECK: 03 d5 91 85 p3 = bitsclr(r17, #21) # CHECK: 03 d5 b1 85 p3 = !bitsclr(r17, #21) # CHECK: 03 d5 51 c7 p3 = bitsset(r17, r21) # CHECK: 03 d5 71 c7 p3 = !bitsset(r17, r21) # CHECK: 03 d5 91 c7 p3 = bitsclr(r17, r21) # CHECK: 03 d5 b1 c7 p3 = !bitsclr(r17, r21) # mask generate from predicate # CHECK: 10 c3 00 86 r17:16 = mask(p3) # Check for TLB match # CHECK: 63 f5 10 d2 p3 = tlbmatch(r17:16, r21) # Predicate Transfer # CHECK: 03 c0 45 85 p3 = r5 # CHECK: 05 c0 43 89 r5 = p3 # Test bit # CHECK: 03 d5 11 85 p3 = tstbit(r17, #21) # CHECK: 03 d5 31 85 p3 = !tstbit(r17, #21) # CHECK: 03 d5 11 c7 p3 = tstbit(r17, r21) # CHECK: 03 d5 31 c7 p3 = !tstbit(r17, r21) # Vector compare halfwords # CHECK: 63 de 14 d2 p3 = vcmph.eq(r21:20, r31:30) # CHECK: 83 de 14 d2 p3 = vcmph.gt(r21:20, r31:30) # CHECK: a3 de 14 d2 p3 = vcmph.gtu(r21:20, r31:30) # CHECK: eb c3 14 dc p3 = vcmph.eq(r21:20, #31) # CHECK: eb c3 34 dc p3 = vcmph.gt(r21:20, #31) # CHECK: eb c3 54 dc p3 = vcmph.gtu(r21:20, #31) # Vector compare bytes for any match # CHECK: 03 fe 14 d2 p3 = any8(vcmpb.eq(r21:20, r31:30)) # Vector compare bytes # CHECK: 63 de 14 d2 p3 = vcmph.eq(r21:20, r31:30) # CHECK: 83 de 14 d2 p3 = vcmph.gt(r21:20, r31:30) # CHECK: a3 de 14 d2 p3 = vcmph.gtu(r21:20, r31:30) # CHECK: eb c3 14 dc p3 = vcmph.eq(r21:20, #31) # CHECK: eb c3 34 dc p3 = vcmph.gt(r21:20, #31) # CHECK: eb c3 54 dc p3 = vcmph.gtu(r21:20, #31) # Vector compare words # CHECK: 03 de 14 d2 p3 = vcmpw.eq(r21:20, r31:30) # CHECK: 23 de 14 d2 p3 = vcmpw.gt(r21:20, r31:30) # CHECK: 43 de 14 d2 p3 = vcmpw.gtu(r21:20, r31:30) # CHECK: f3 c3 14 dc p3 = vcmpw.eq(r21:20, #31) # CHECK: f3 c3 34 dc p3 = vcmpw.gt(r21:20, #31) # CHECK: f3 c3 54 dc p3 = vcmpw.gtu(r21:20, #31) # Viterbi pack even and odd predicate bits # CHECK: 11 c2 03 89 r17 = vitpack(p3, p2) # Vector mux # CHECK: 70 de 14 d1 r17:16 = vmux(p3, r21:20, r31:30)