1 # RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s
2 # Hexagon Programmer's Reference Manual 11.10.3 XTYPE/COMPLEX
4 # Complex add/sub halfwords
6 # CHECK: r17:16 = vxaddsubh(r21:20, r31:30):sat
8 # CHECK: r17:16 = vxsubaddh(r21:20, r31:30):sat
10 # CHECK: r17:16 = vxaddsubh(r21:20, r31:30):rnd:>>1:sat
12 # CHECK: r17:16 = vxsubaddh(r21:20, r31:30):rnd:>>1:sat
14 # Complex add/sub words
16 # CHECK: r17:16 = vxaddsubw(r21:20, r31:30):sat
18 # CHECK: r17:16 = vxsubaddw(r21:20, r31:30):sat
22 # CHECK: r17:16 = cmpy(r21, r31):sat
24 # CHECK: r17:16 = cmpy(r21, r31):<<1:sat
26 # CHECK: r17:16 = cmpy(r21, r31*):sat
28 # CHECK: r17:16 = cmpy(r21, r31*):<<1:sat
30 # CHECK: r17:16 += cmpy(r21, r31):sat
32 # CHECK: r17:16 += cmpy(r21, r31):<<1:sat
34 # CHECK: r17:16 -= cmpy(r21, r31):sat
36 # CHECK: r17:16 -= cmpy(r21, r31):<<1:sat
38 # CHECK: r17:16 += cmpy(r21, r31*):sat
40 # CHECK: r17:16 += cmpy(r21, r31*):<<1:sat
42 # CHECK: r17:16 -= cmpy(r21, r31*):sat
44 # CHECK: r17:16 -= cmpy(r21, r31*):<<1:sat
46 # Complex multiply real or imaginary
48 # CHECK: r17:16 = cmpyi(r21, r31)
50 # CHECK: r17:16 = cmpyr(r21, r31)
52 # CHECK: r17:16 += cmpyi(r21, r31)
54 # CHECK: r17:16 += cmpyr(r21, r31)
56 # Complex multiply with round and pack
58 # CHECK: r17 = cmpy(r21, r31):rnd:sat
60 # CHECK: r17 = cmpy(r21, r31):<<1:rnd:sat
62 # CHECK: r17 = cmpy(r21, r31*):rnd:sat
64 # CHECK: r17 = cmpy(r21, r31*):<<1:rnd:sat
66 # Complex multiply 32x16
68 # CHECK: r17 = cmpyiwh(r21:20, r31):<<1:rnd:sat
70 # CHECK: r17 = cmpyiwh(r21:20, r31*):<<1:rnd:sat
72 # CHECK: r17 = cmpyrwh(r21:20, r31):<<1:rnd:sat
74 # CHECK: r17 = cmpyrwh(r21:20, r31*):<<1:rnd:sat
76 # Vector complex multiply real or imaginary
78 # CHECK: r17:16 = vcmpyr(r21:20, r31:30):sat
80 # CHECK: r17:16 = vcmpyr(r21:20, r31:30):<<1:sat
82 # CHECK: r17:16 = vcmpyi(r21:20, r31:30):sat
84 # CHECK: r17:16 = vcmpyi(r21:20, r31:30):<<1:sat
86 # CHECK: r17:16 += vcmpyr(r21:20, r31:30):sat
88 # CHECK: r17:16 += vcmpyi(r21:20, r31:30):sat
90 # Vector complex conjugate
92 # CHECK: r17:16 = vconj(r21:20):sat
94 # Vector complex rotate
96 # CHECK: r17:16 = vcrotate(r21:20, r31)
98 # Vector reduce complex multiply real or imaginary
100 # CHECK: r17:16 = vrcmpyi(r21:20, r31:30)
102 # CHECK: r17:16 = vrcmpyr(r21:20, r31:30)
104 # CHECK: r17:16 = vrcmpyi(r21:20, r31:30*)
106 # CHECK: r17:16 = vrcmpyr(r21:20, r31:30*)
108 # Vector reduce complex multiply by scalar
110 # CHECK: r17:16 = vrcmpys(r21:20, r31:30):<<1:sat:raw:hi
112 # CHECK: r17:16 = vrcmpys(r21:20, r31:30):<<1:sat:raw:lo
114 # CHECK: r17:16 += vrcmpys(r21:20, r31:30):<<1:sat:raw:hi
116 # CHECK: r17:16 += vrcmpys(r21:20, r31:30):<<1:sat:raw:lo
118 # Vector reduce complex multiply by scalar with round and pack
120 # CHECK: r17 = vrcmpys(r21:20, r31:30):<<1:rnd:sat:raw:hi
122 # CHECK: r17 = vrcmpys(r21:20, r31:30):<<1:rnd:sat:raw:lo
124 # Vector reduce complex rotate
126 # CHECK: r17:16 = vrcrotate(r21:20, r31, #3)
128 # CHECK: r17:16 += vrcrotate(r21:20, r31, #3)