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