1 # RUN: llvm-mc -triple=hexagon -filetype=obj -o - %s | llvm-objdump -d - | FileCheck %s 2 # Hexagon Programmer's Reference Manual 11.10.6 XTYPE/PERM 3 4 # CABAC decode bin 5 # CHECK: d0 de d4 c1 6 r17:16 = decbin(r21:20, r31:30) 7 8 # Saturate 9 # CHECK: 11 c0 d4 88 10 r17 = sat(r21:20) 11 # CHECK: 91 c0 d5 8c 12 r17 = sath(r21) 13 # CHECK: b1 c0 d5 8c 14 r17 = satuh(r21) 15 # CHECK: d1 c0 d5 8c 16 r17 = satub(r21) 17 # CHECK: f1 c0 d5 8c 18 r17 = satb(r21) 19 20 # Swizzle bytes 21 # CHECK: f1 c0 95 8c 22 r17 = swiz(r21) 23 24 # Vector align 25 # CHECK: 70 d4 1e c2 26 r17:16 = valignb(r21:20, r31:30, p3) 27 # CHECK: 70 de 94 c2 28 r17:16 = vspliceb(r21:20, r31:30, p3) 29 30 # Vector round and pack 31 # CHECK: 91 c0 94 88 32 r17 = vrndwh(r21:20) 33 # CHECK: d1 c0 94 88 34 r17 = vrndwh(r21:20):sat 35 36 # Vector saturate and pack 37 # CHECK: 11 c0 14 88 38 r17 = vsathub(r21:20) 39 # CHECK: 51 c0 14 88 40 r17 = vsatwh(r21:20) 41 # CHECK: 91 c0 14 88 42 r17 = vsatwuh(r21:20) 43 # CHECK: d1 c0 14 88 44 r17 = vsathb(r21:20) 45 # CHECK: 11 c0 95 8c 46 r17 = vsathb(r21) 47 # CHECK: 51 c0 95 8c 48 r17 = vsathub(r21) 49 50 # Vector saturate without pack 51 # CHECK: 90 c0 14 80 52 r17:16 = vsathub(r21:20) 53 # CHECK: b0 c0 14 80 54 r17:16 = vsatwuh(r21:20) 55 # CHECK: d0 c0 14 80 56 r17:16 = vsatwh(r21:20) 57 # CHECK: f0 c0 14 80 58 r17:16 = vsathb(r21:20) 59 60 # Vector shuffle 61 # CHECK: 50 de 14 c1 62 r17:16 = shuffeb(r21:20, r31:30) 63 # CHECK: 90 d4 1e c1 64 r17:16 = shuffob(r21:20, r31:30) 65 # CHECK: d0 de 14 c1 66 r17:16 = shuffeh(r21:20, r31:30) 67 # CHECK: 10 d4 9e c1 68 r17:16 = shuffoh(r21:20, r31:30) 69 70 # Vector splat bytes 71 # CHECK: f1 c0 55 8c 72 r17 = vsplatb(r21) 73 74 # Vector splat halfwords 75 # CHECK: 50 c0 55 84 76 r17:16 = vsplath(r21) 77 78 # Vector splice 79 # CHECK: 70 de 94 c0 80 r17:16 = vspliceb(r21:20, r31:30, #3) 81 # CHECK: 70 de 94 c2 82 r17:16 = vspliceb(r21:20, r31:30, p3) 83 84 # Vector sign extend 85 # CHECK: 10 c0 15 84 86 r17:16 = vsxtbh(r21) 87 # CHECK: 90 c0 15 84 88 r17:16 = vsxthw(r21) 89 90 # Vector truncate 91 # CHECK: 11 c0 94 88 92 r17 = vtrunohb(r21:20) 93 # CHECK: 51 c0 94 88 94 r17 = vtrunehb(r21:20) 95 # CHECK: 50 de 94 c1 96 r17:16 = vtrunewh(r21:20, r31:30) 97 # CHECK: 90 de 94 c1 98 r17:16 = vtrunowh(r21:20, r31:30) 99 100 # Vector zero extend 101 # CHECK: 50 c0 15 84 102 r17:16 = vzxtbh(r21) 103 # CHECK: d0 c0 15 84 104 r17:16 = vzxthw(r21) 105