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