Home | History | Annotate | Download | only in instructions
      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