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 3 4# Complex add/sub halfwords 5# CHECK: 90 de 54 c1 6r17:16 = vxaddsubh(r21:20, r31:30):sat 7# CHECK: d0 de 54 c1 8r17:16 = vxsubaddh(r21:20, r31:30):sat 9# CHECK: 10 de d4 c1 10r17:16 = vxaddsubh(r21:20, r31:30):rnd:>>1:sat 11# CHECK: 50 de d4 c1 12r17:16 = vxsubaddh(r21:20, r31:30):rnd:>>1:sat 13 14# Complex add/sub words 15# CHECK: 10 de 54 c1 16r17:16 = vxaddsubw(r21:20, r31:30):sat 17# CHECK: 50 de 54 c1 18r17:16 = vxsubaddw(r21:20, r31:30):sat 19 20# Complex multiply 21# CHECK: d0 df 15 e5 22r17:16 = cmpy(r21, r31):sat 23# CHECK: d0 df 95 e5 24r17:16 = cmpy(r21, r31):<<1:sat 25# CHECK: d0 df 55 e5 26r17:16 = cmpy(r21, r31*):sat 27# CHECK: d0 df d5 e5 28r17:16 = cmpy(r21, r31*):<<1:sat 29# CHECK: d0 df 15 e7 30r17:16 += cmpy(r21, r31):sat 31# CHECK: d0 df 95 e7 32r17:16 += cmpy(r21, r31):<<1:sat 33# CHECK: f0 df 15 e7 34r17:16 -= cmpy(r21, r31):sat 35# CHECK: f0 df 95 e7 36r17:16 -= cmpy(r21, r31):<<1:sat 37# CHECK: d0 df 55 e7 38r17:16 += cmpy(r21, r31*):sat 39# CHECK: d0 df d5 e7 40r17:16 += cmpy(r21, r31*):<<1:sat 41# CHECK: f0 df 55 e7 42r17:16 -= cmpy(r21, r31*):sat 43# CHECK: f0 df d5 e7 44r17:16 -= cmpy(r21, r31*):<<1:sat 45 46# Complex multiply real or imaginary 47# CHECK: 30 df 15 e5 48r17:16 = cmpyi(r21, r31) 49# CHECK: 50 df 15 e5 50r17:16 = cmpyr(r21, r31) 51# CHECK: 30 df 15 e7 52r17:16 += cmpyi(r21, r31) 53# CHECK: 50 df 15 e7 54r17:16 += cmpyr(r21, r31) 55 56# Complex multiply with round and pack 57# CHECK: d1 df 35 ed 58r17 = cmpy(r21, r31):rnd:sat 59# CHECK: d1 df b5 ed 60r17 = cmpy(r21, r31):<<1:rnd:sat 61# CHECK: d1 df 75 ed 62r17 = cmpy(r21, r31*):rnd:sat 63# CHECK: d1 df f5 ed 64r17 = cmpy(r21, r31*):<<1:rnd:sat 65 66# Complex multiply 32x16 67# CHECK: 91 df 14 c5 68r17 = cmpyiwh(r21:20, r31):<<1:rnd:sat 69# CHECK: b1 df 14 c5 70r17 = cmpyiwh(r21:20, r31*):<<1:rnd:sat 71# CHECK: d1 df 14 c5 72r17 = cmpyrwh(r21:20, r31):<<1:rnd:sat 73# CHECK: f1 df 14 c5 74r17 = cmpyrwh(r21:20, r31*):<<1:rnd:sat 75 76# Vector complex multiply real or imaginary 77# CHECK: d0 de 34 e8 78r17:16 = vcmpyr(r21:20, r31:30):sat 79# CHECK: d0 de b4 e8 80r17:16 = vcmpyr(r21:20, r31:30):<<1:sat 81# CHECK: d0 de 54 e8 82r17:16 = vcmpyi(r21:20, r31:30):sat 83# CHECK: d0 de d4 e8 84r17:16 = vcmpyi(r21:20, r31:30):<<1:sat 85# CHECK: 90 de 34 ea 86r17:16 += vcmpyr(r21:20, r31:30):sat 87# CHECK: 90 de 54 ea 88r17:16 += vcmpyi(r21:20, r31:30):sat 89 90# Vector complex conjugate 91# CHECK: f0 c0 94 80 92r17:16 = vconj(r21:20):sat 93 94# Vector complex rotate 95# CHECK: 10 df d4 c3 96r17:16 = vcrotate(r21:20, r31) 97 98# Vector reduce complex multiply real or imaginary 99# CHECK: 10 de 14 e8 100r17:16 = vrcmpyi(r21:20, r31:30) 101# CHECK: 30 de 14 e8 102r17:16 = vrcmpyr(r21:20, r31:30) 103# CHECK: 10 de 54 e8 104r17:16 = vrcmpyi(r21:20, r31:30*) 105# CHECK: 30 de 74 e8 106r17:16 = vrcmpyr(r21:20, r31:30*) 107 108# Vector reduce complex multiply by scalar 109# CHECK: 90 de b4 e8 110r17:16 = vrcmpys(r21:20, r31:30):<<1:sat:raw:hi 111# CHECK: 90 de f4 e8 112r17:16 = vrcmpys(r21:20, r31:30):<<1:sat:raw:lo 113# CHECK: 90 de b4 ea 114r17:16 += vrcmpys(r21:20, r31:30):<<1:sat:raw:hi 115# CHECK: 90 de f4 ea 116r17:16 += vrcmpys(r21:20, r31:30):<<1:sat:raw:lo 117 118# Vector reduce complex multiply by scalar with round and pack 119# CHECK: d1 de b4 e9 120r17 = vrcmpys(r21:20, r31:30):<<1:rnd:sat:raw:hi 121# CHECK: f1 de b4 e9 122r17 = vrcmpys(r21:20, r31:30):<<1:rnd:sat:raw:lo 123 124# Vector reduce complex rotate 125# CHECK: f0 ff d4 c3 126r17:16 = vrcrotate(r21:20, r31, #3) 127# CHECK: 30 ff b4 cb 128r17:16 += vrcrotate(r21:20, r31, #3) 129