1 # RUN: llvm-mc -triple hexagon -disassemble < %s | FileCheck %s 2 # Hexagon Programmer's Reference Manual 11.1.2 ALU32/PERM 3 4 # Combine words in to doublewords 5 0x11 0xdf 0x95 0xf3 6 # CHECK: r17 = combine(r31.h, r21.h) 7 0x11 0xdf 0xb5 0xf3 8 # CHECK: r17 = combine(r31.h, r21.l) 9 0x11 0xdf 0xd5 0xf3 10 # CHECK: r17 = combine(r31.l, r21.h) 11 0x11 0xdf 0xf5 0xf3 12 # CHECK: r17 = combine(r31.l, r21.l) 13 0xb0 0xe2 0x0f 0x7c 14 # CHECK: r17:16 = combine(#21, #31) 15 0xb0 0xe2 0x3f 0x73 16 # CHECK: r17:16 = combine(#21, r31) 17 0xf0 0xe3 0x15 0x73 18 # CHECK: r17:16 = combine(r21, #31) 19 0x10 0xdf 0x15 0xf5 20 # CHECK: r17:16 = combine(r21, r31) 21 22 # Mux 23 0xf1 0xc3 0x75 0x73 24 # CHECK: r17 = mux(p3, r21, #31) 25 0xb1 0xc2 0xff 0x73 26 # CHECK: r17 = mux(p3, #21, r31) 27 0xb1 0xe2 0x8f 0x7b 28 # CHECK: r17 = mux(p3, #21, #31) 29 0x71 0xdf 0x15 0xf4 30 # CHECK: r17 = mux(p3, r21, r31) 31 32 # Shift word by 16 33 0x11 0xc0 0x15 0x70 34 # CHECK: r17 = aslh(r21) 35 0x11 0xc0 0x35 0x70 36 # CHECK: r17 = asrh(r21) 37 38 # Pack high and low halfwords 39 0x10 0xdf 0x95 0xf5 40 # CHECK: r17:16 = packhl(r21, r31) 41