Home | History | Annotate | Download | only in X86
      1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
      2 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64 -mattr=+xop | FileCheck %s --check-prefix=GENERIC
      3 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver1 | FileCheck %s --check-prefix=BDVER --check-prefix=BDVER1
      4 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver2 | FileCheck %s --check-prefix=BDVER --check-prefix=BDVER2
      5 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver3 | FileCheck %s --check-prefix=BDVER --check-prefix=BDVER3
      6 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver4 | FileCheck %s --check-prefix=BDVER --check-prefix=BDVER4
      7 
      8 define void @test_vfrczpd(<2 x double> %a0, <4 x double> %a1, <2 x double> *%a2, <4 x double> *%a3) {
      9 ; GENERIC-LABEL: test_vfrczpd:
     10 ; GENERIC:       # %bb.0:
     11 ; GENERIC-NEXT:    #APP
     12 ; GENERIC-NEXT:    vfrczpd %xmm0, %xmm0 # sched: [3:1.00]
     13 ; GENERIC-NEXT:    vfrczpd %ymm1, %ymm1 # sched: [3:1.00]
     14 ; GENERIC-NEXT:    vfrczpd (%rdi), %xmm0 # sched: [9:1.00]
     15 ; GENERIC-NEXT:    vfrczpd (%rsi), %ymm1 # sched: [10:1.00]
     16 ; GENERIC-NEXT:    #NO_APP
     17 ; GENERIC-NEXT:    vzeroupper # sched: [100:0.33]
     18 ; GENERIC-NEXT:    retq # sched: [1:1.00]
     19 ;
     20 ; BDVER-LABEL: test_vfrczpd:
     21 ; BDVER:       # %bb.0:
     22 ; BDVER-NEXT:    #APP
     23 ; BDVER-NEXT:    vfrczpd %xmm0, %xmm0
     24 ; BDVER-NEXT:    vfrczpd %ymm1, %ymm1
     25 ; BDVER-NEXT:    vfrczpd (%rdi), %xmm0
     26 ; BDVER-NEXT:    vfrczpd (%rsi), %ymm1
     27 ; BDVER-NEXT:    #NO_APP
     28 ; BDVER-NEXT:    vzeroupper
     29 ; BDVER-NEXT:    retq
     30   call void asm sideeffect "vfrczpd $0, $0 \0a\09 vfrczpd $1, $1 \0a\09 vfrczpd $2, $0 \0a\09 vfrczpd $3, $1", "x,x,*m,*m"(<2 x double> %a0, <4 x double> %a1, <2 x double> *%a2, <4 x double> *%a3)
     31   ret void
     32 }
     33 
     34 define void @test_vfrczps(<4 x float> %a0, <4 x double> %a1, <4 x float> *%a2, <4 x double> *%a3) {
     35 ; GENERIC-LABEL: test_vfrczps:
     36 ; GENERIC:       # %bb.0:
     37 ; GENERIC-NEXT:    #APP
     38 ; GENERIC-NEXT:    vfrczps %xmm0, %xmm0 # sched: [3:1.00]
     39 ; GENERIC-NEXT:    vfrczps %ymm1, %ymm1 # sched: [3:1.00]
     40 ; GENERIC-NEXT:    vfrczps (%rdi), %xmm0 # sched: [9:1.00]
     41 ; GENERIC-NEXT:    vfrczps (%rsi), %ymm1 # sched: [10:1.00]
     42 ; GENERIC-NEXT:    #NO_APP
     43 ; GENERIC-NEXT:    vzeroupper # sched: [100:0.33]
     44 ; GENERIC-NEXT:    retq # sched: [1:1.00]
     45 ;
     46 ; BDVER-LABEL: test_vfrczps:
     47 ; BDVER:       # %bb.0:
     48 ; BDVER-NEXT:    #APP
     49 ; BDVER-NEXT:    vfrczps %xmm0, %xmm0
     50 ; BDVER-NEXT:    vfrczps %ymm1, %ymm1
     51 ; BDVER-NEXT:    vfrczps (%rdi), %xmm0
     52 ; BDVER-NEXT:    vfrczps (%rsi), %ymm1
     53 ; BDVER-NEXT:    #NO_APP
     54 ; BDVER-NEXT:    vzeroupper
     55 ; BDVER-NEXT:    retq
     56   call void asm sideeffect "vfrczps $0, $0 \0a\09 vfrczps $1, $1 \0a\09 vfrczps $2, $0 \0a\09 vfrczps $3, $1", "x,x,*m,*m"(<4 x float> %a0, <4 x double> %a1, <4 x float> *%a2, <4 x double> *%a3)
     57   ret void
     58 }
     59 
     60 define void @test_vfrczsd(<2 x double> %a0, <2 x double> *%a1) {
     61 ; GENERIC-LABEL: test_vfrczsd:
     62 ; GENERIC:       # %bb.0:
     63 ; GENERIC-NEXT:    #APP
     64 ; GENERIC-NEXT:    vfrczsd %xmm0, %xmm0 # sched: [3:1.00]
     65 ; GENERIC-NEXT:    vfrczsd (%rdi), %xmm0 # sched: [9:1.00]
     66 ; GENERIC-NEXT:    #NO_APP
     67 ; GENERIC-NEXT:    retq # sched: [1:1.00]
     68 ;
     69 ; BDVER-LABEL: test_vfrczsd:
     70 ; BDVER:       # %bb.0:
     71 ; BDVER-NEXT:    #APP
     72 ; BDVER-NEXT:    vfrczsd %xmm0, %xmm0
     73 ; BDVER-NEXT:    vfrczsd (%rdi), %xmm0
     74 ; BDVER-NEXT:    #NO_APP
     75 ; BDVER-NEXT:    retq
     76   call void asm sideeffect "vfrczsd $0, $0 \0a\09 vfrczsd $1, $0", "x,*m"(<2 x double> %a0, <2 x double> *%a1)
     77   ret void
     78 }
     79 
     80 define void @test_vfrczss(<4 x float> %a0, <4 x double> *%a1) {
     81 ; GENERIC-LABEL: test_vfrczss:
     82 ; GENERIC:       # %bb.0:
     83 ; GENERIC-NEXT:    #APP
     84 ; GENERIC-NEXT:    vfrczss %xmm0, %xmm0 # sched: [3:1.00]
     85 ; GENERIC-NEXT:    vfrczss (%rdi), %xmm0 # sched: [9:1.00]
     86 ; GENERIC-NEXT:    #NO_APP
     87 ; GENERIC-NEXT:    retq # sched: [1:1.00]
     88 ;
     89 ; BDVER-LABEL: test_vfrczss:
     90 ; BDVER:       # %bb.0:
     91 ; BDVER-NEXT:    #APP
     92 ; BDVER-NEXT:    vfrczss %xmm0, %xmm0
     93 ; BDVER-NEXT:    vfrczss (%rdi), %xmm0
     94 ; BDVER-NEXT:    #NO_APP
     95 ; BDVER-NEXT:    retq
     96   call void asm sideeffect "vfrczss $0, $0 \0a\09 vfrczss $1, $0", "x,*m"(<4 x float> %a0, <4 x double> *%a1)
     97   ret void
     98 }
     99 
    100 define void @test_vpcmov_128(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) {
    101 ; GENERIC-LABEL: test_vpcmov_128:
    102 ; GENERIC:       # %bb.0:
    103 ; GENERIC-NEXT:    #APP
    104 ; GENERIC-NEXT:    vpcmov %xmm2, %xmm1, %xmm0, %xmm0 # sched: [1:0.50]
    105 ; GENERIC-NEXT:    vpcmov (%rdi), %xmm1, %xmm0, %xmm0 # sched: [7:0.50]
    106 ; GENERIC-NEXT:    vpcmov %xmm2, (%rdi), %xmm0, %xmm0 # sched: [7:0.50]
    107 ; GENERIC-NEXT:    #NO_APP
    108 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    109 ;
    110 ; BDVER-LABEL: test_vpcmov_128:
    111 ; BDVER:       # %bb.0:
    112 ; BDVER-NEXT:    #APP
    113 ; BDVER-NEXT:    vpcmov %xmm2, %xmm1, %xmm0, %xmm0
    114 ; BDVER-NEXT:    vpcmov (%rdi), %xmm1, %xmm0, %xmm0
    115 ; BDVER-NEXT:    vpcmov %xmm2, (%rdi), %xmm0, %xmm0
    116 ; BDVER-NEXT:    #NO_APP
    117 ; BDVER-NEXT:    retq
    118   call void asm sideeffect "vpcmov $2, $1, $0, $0 \0a\09 vpcmov $3, $1, $0, $0 \0a\09 vpcmov $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3)
    119   ret void
    120 }
    121 
    122 define void @test_vpcmov_256(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2, <4 x i64> *%a3) {
    123 ; GENERIC-LABEL: test_vpcmov_256:
    124 ; GENERIC:       # %bb.0:
    125 ; GENERIC-NEXT:    #APP
    126 ; GENERIC-NEXT:    vpcmov %ymm2, %ymm1, %ymm0, %ymm0 # sched: [1:1.00]
    127 ; GENERIC-NEXT:    vpcmov (%rdi), %ymm1, %ymm0, %ymm0 # sched: [8:1.00]
    128 ; GENERIC-NEXT:    vpcmov %ymm2, (%rdi), %ymm0, %ymm0 # sched: [8:1.00]
    129 ; GENERIC-NEXT:    #NO_APP
    130 ; GENERIC-NEXT:    vzeroupper # sched: [100:0.33]
    131 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    132 ;
    133 ; BDVER-LABEL: test_vpcmov_256:
    134 ; BDVER:       # %bb.0:
    135 ; BDVER-NEXT:    #APP
    136 ; BDVER-NEXT:    vpcmov %ymm2, %ymm1, %ymm0, %ymm0
    137 ; BDVER-NEXT:    vpcmov (%rdi), %ymm1, %ymm0, %ymm0
    138 ; BDVER-NEXT:    vpcmov %ymm2, (%rdi), %ymm0, %ymm0
    139 ; BDVER-NEXT:    #NO_APP
    140 ; BDVER-NEXT:    vzeroupper
    141 ; BDVER-NEXT:    retq
    142   call void asm sideeffect "vpcmov $2, $1, $0, $0 \0a\09 vpcmov $3, $1, $0, $0 \0a\09 vpcmov $2, $3, $0, $0", "x,x,x,*m"(<4 x i64> %a0, <4 x i64> %a1, <4 x i64> %a2, <4 x i64> *%a3)
    143   ret void
    144 }
    145 
    146 define void @test_vpcom(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2) {
    147 ; GENERIC-LABEL: test_vpcom:
    148 ; GENERIC:       # %bb.0:
    149 ; GENERIC-NEXT:    #APP
    150 ; GENERIC-NEXT:    vpcomb $3, %xmm1, %xmm0, %xmm0 # sched: [1:0.50]
    151 ; GENERIC-NEXT:    vpcomd $3, %xmm1, %xmm0, %xmm0 # sched: [1:0.50]
    152 ; GENERIC-NEXT:    vpcomq $3, %xmm1, %xmm0, %xmm0 # sched: [1:0.50]
    153 ; GENERIC-NEXT:    vpcomw $3, %xmm1, %xmm0, %xmm0 # sched: [1:0.50]
    154 ; GENERIC-NEXT:    vpcomb $3, (%rdi), %xmm0, %xmm0 # sched: [7:0.50]
    155 ; GENERIC-NEXT:    vpcomd $3, (%rdi), %xmm0, %xmm0 # sched: [7:0.50]
    156 ; GENERIC-NEXT:    vpcomq $3, (%rdi), %xmm0, %xmm0 # sched: [7:0.50]
    157 ; GENERIC-NEXT:    vpcomw $3, (%rdi), %xmm0, %xmm0 # sched: [7:0.50]
    158 ; GENERIC-NEXT:    #NO_APP
    159 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    160 ;
    161 ; BDVER-LABEL: test_vpcom:
    162 ; BDVER:       # %bb.0:
    163 ; BDVER-NEXT:    #APP
    164 ; BDVER-NEXT:    vpcomb $3, %xmm1, %xmm0, %xmm0
    165 ; BDVER-NEXT:    vpcomd $3, %xmm1, %xmm0, %xmm0
    166 ; BDVER-NEXT:    vpcomq $3, %xmm1, %xmm0, %xmm0
    167 ; BDVER-NEXT:    vpcomw $3, %xmm1, %xmm0, %xmm0
    168 ; BDVER-NEXT:    vpcomb $3, (%rdi), %xmm0, %xmm0
    169 ; BDVER-NEXT:    vpcomd $3, (%rdi), %xmm0, %xmm0
    170 ; BDVER-NEXT:    vpcomq $3, (%rdi), %xmm0, %xmm0
    171 ; BDVER-NEXT:    vpcomw $3, (%rdi), %xmm0, %xmm0
    172 ; BDVER-NEXT:    #NO_APP
    173 ; BDVER-NEXT:    retq
    174   call void asm sideeffect "vpcomb $3, $1, $0, $0 \0a\09 vpcomd $3, $1, $0, $0 \0a\09 vpcomq $3, $1, $0, $0 \0a\09 vpcomw $3, $1, $0, $0 \0a\09 vpcomb $3, $2, $0, $0 \0a\09 vpcomd $3, $2, $0, $0 \0a\09 vpcomq $3, $2, $0, $0 \0a\09 vpcomw $3, $2, $0, $0", "x,x,*m,i"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2, i8 3)
    175   ret void
    176 }
    177 
    178 define void @test_vpcomu(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2) {
    179 ; GENERIC-LABEL: test_vpcomu:
    180 ; GENERIC:       # %bb.0:
    181 ; GENERIC-NEXT:    #APP
    182 ; GENERIC-NEXT:    vpcomub $3, %xmm1, %xmm0, %xmm0 # sched: [1:0.50]
    183 ; GENERIC-NEXT:    vpcomud $3, %xmm1, %xmm0, %xmm0 # sched: [1:0.50]
    184 ; GENERIC-NEXT:    vpcomuq $3, %xmm1, %xmm0, %xmm0 # sched: [1:0.50]
    185 ; GENERIC-NEXT:    vpcomuw $3, %xmm1, %xmm0, %xmm0 # sched: [1:0.50]
    186 ; GENERIC-NEXT:    vpcomub $3, (%rdi), %xmm0, %xmm0 # sched: [7:0.50]
    187 ; GENERIC-NEXT:    vpcomud $3, (%rdi), %xmm0, %xmm0 # sched: [7:0.50]
    188 ; GENERIC-NEXT:    vpcomuq $3, (%rdi), %xmm0, %xmm0 # sched: [7:0.50]
    189 ; GENERIC-NEXT:    vpcomuw $3, (%rdi), %xmm0, %xmm0 # sched: [7:0.50]
    190 ; GENERIC-NEXT:    #NO_APP
    191 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    192 ;
    193 ; BDVER-LABEL: test_vpcomu:
    194 ; BDVER:       # %bb.0:
    195 ; BDVER-NEXT:    #APP
    196 ; BDVER-NEXT:    vpcomub $3, %xmm1, %xmm0, %xmm0
    197 ; BDVER-NEXT:    vpcomud $3, %xmm1, %xmm0, %xmm0
    198 ; BDVER-NEXT:    vpcomuq $3, %xmm1, %xmm0, %xmm0
    199 ; BDVER-NEXT:    vpcomuw $3, %xmm1, %xmm0, %xmm0
    200 ; BDVER-NEXT:    vpcomub $3, (%rdi), %xmm0, %xmm0
    201 ; BDVER-NEXT:    vpcomud $3, (%rdi), %xmm0, %xmm0
    202 ; BDVER-NEXT:    vpcomuq $3, (%rdi), %xmm0, %xmm0
    203 ; BDVER-NEXT:    vpcomuw $3, (%rdi), %xmm0, %xmm0
    204 ; BDVER-NEXT:    #NO_APP
    205 ; BDVER-NEXT:    retq
    206   call void asm sideeffect "vpcomub $3, $1, $0, $0 \0a\09 vpcomud $3, $1, $0, $0 \0a\09 vpcomuq $3, $1, $0, $0 \0a\09 vpcomuw $3, $1, $0, $0 \0a\09 vpcomub $3, $2, $0, $0 \0a\09 vpcomud $3, $2, $0, $0 \0a\09 vpcomuq $3, $2, $0, $0 \0a\09 vpcomuw $3, $2, $0, $0", "x,x,*m,i"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2, i8 3)
    207   ret void
    208 }
    209 
    210 define void @test_vpermil2pd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) {
    211 ; GENERIC-LABEL: test_vpermil2pd_128:
    212 ; GENERIC:       # %bb.0:
    213 ; GENERIC-NEXT:    #APP
    214 ; GENERIC-NEXT:    vpermil2pd $3, %xmm2, %xmm1, %xmm0, %xmm0 # sched: [1:1.00]
    215 ; GENERIC-NEXT:    vpermil2pd $3, %xmm2, (%rdi), %xmm0, %xmm0 # sched: [7:1.00]
    216 ; GENERIC-NEXT:    vpermil2pd $3, (%rdi), %xmm1, %xmm0, %xmm0 # sched: [7:1.00]
    217 ; GENERIC-NEXT:    #NO_APP
    218 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    219 ;
    220 ; BDVER-LABEL: test_vpermil2pd_128:
    221 ; BDVER:       # %bb.0:
    222 ; BDVER-NEXT:    #APP
    223 ; BDVER-NEXT:    vpermil2pd $3, %xmm2, %xmm1, %xmm0, %xmm0
    224 ; BDVER-NEXT:    vpermil2pd $3, %xmm2, (%rdi), %xmm0, %xmm0
    225 ; BDVER-NEXT:    vpermil2pd $3, (%rdi), %xmm1, %xmm0, %xmm0
    226 ; BDVER-NEXT:    #NO_APP
    227 ; BDVER-NEXT:    retq
    228   call void asm sideeffect "vpermil2pd $4, $2, $1, $0, $0 \0a\09 vpermil2pd $4, $2, $3, $0, $0 \0a\09 vpermil2pd $4, $3, $1, $0, $0", "x,x,x,*m,i"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3, i8 3)
    229   ret void
    230 }
    231 
    232 define void @test_vpermil2pd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) {
    233 ; GENERIC-LABEL: test_vpermil2pd_256:
    234 ; GENERIC:       # %bb.0:
    235 ; GENERIC-NEXT:    #APP
    236 ; GENERIC-NEXT:    vpermil2pd $3, %ymm2, %ymm1, %ymm0, %ymm0 # sched: [1:1.00]
    237 ; GENERIC-NEXT:    vpermil2pd $3, %ymm2, (%rdi), %ymm0, %ymm0 # sched: [8:1.00]
    238 ; GENERIC-NEXT:    vpermil2pd $3, (%rdi), %ymm1, %ymm0, %ymm0 # sched: [8:1.00]
    239 ; GENERIC-NEXT:    #NO_APP
    240 ; GENERIC-NEXT:    vzeroupper # sched: [100:0.33]
    241 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    242 ;
    243 ; BDVER-LABEL: test_vpermil2pd_256:
    244 ; BDVER:       # %bb.0:
    245 ; BDVER-NEXT:    #APP
    246 ; BDVER-NEXT:    vpermil2pd $3, %ymm2, %ymm1, %ymm0, %ymm0
    247 ; BDVER-NEXT:    vpermil2pd $3, %ymm2, (%rdi), %ymm0, %ymm0
    248 ; BDVER-NEXT:    vpermil2pd $3, (%rdi), %ymm1, %ymm0, %ymm0
    249 ; BDVER-NEXT:    #NO_APP
    250 ; BDVER-NEXT:    vzeroupper
    251 ; BDVER-NEXT:    retq
    252   call void asm sideeffect "vpermil2pd $4, $2, $1, $0, $0 \0a\09 vpermil2pd $4, $2, $3, $0, $0 \0a\09 vpermil2pd $4, $3, $1, $0, $0", "x,x,x,*m,i"(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3, i8 3)
    253   ret void
    254 }
    255 
    256 define void @test_vpermil2ps_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) {
    257 ; GENERIC-LABEL: test_vpermil2ps_128:
    258 ; GENERIC:       # %bb.0:
    259 ; GENERIC-NEXT:    #APP
    260 ; GENERIC-NEXT:    vpermil2ps $3, %xmm2, %xmm1, %xmm0, %xmm0 # sched: [1:1.00]
    261 ; GENERIC-NEXT:    vpermil2ps $3, %xmm2, (%rdi), %xmm0, %xmm0 # sched: [7:1.00]
    262 ; GENERIC-NEXT:    vpermil2ps $3, (%rdi), %xmm1, %xmm0, %xmm0 # sched: [7:1.00]
    263 ; GENERIC-NEXT:    #NO_APP
    264 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    265 ;
    266 ; BDVER-LABEL: test_vpermil2ps_128:
    267 ; BDVER:       # %bb.0:
    268 ; BDVER-NEXT:    #APP
    269 ; BDVER-NEXT:    vpermil2ps $3, %xmm2, %xmm1, %xmm0, %xmm0
    270 ; BDVER-NEXT:    vpermil2ps $3, %xmm2, (%rdi), %xmm0, %xmm0
    271 ; BDVER-NEXT:    vpermil2ps $3, (%rdi), %xmm1, %xmm0, %xmm0
    272 ; BDVER-NEXT:    #NO_APP
    273 ; BDVER-NEXT:    retq
    274   call void asm sideeffect "vpermil2ps $4, $2, $1, $0, $0 \0a\09 vpermil2ps $4, $2, $3, $0, $0 \0a\09 vpermil2ps $4, $3, $1, $0, $0", "x,x,x,*m,i"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3, i8 3)
    275   ret void
    276 }
    277 
    278 define void @test_vpermil2ps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) {
    279 ; GENERIC-LABEL: test_vpermil2ps_256:
    280 ; GENERIC:       # %bb.0:
    281 ; GENERIC-NEXT:    #APP
    282 ; GENERIC-NEXT:    vpermil2ps $3, %ymm2, %ymm1, %ymm0, %ymm0 # sched: [1:1.00]
    283 ; GENERIC-NEXT:    vpermil2ps $3, %ymm2, (%rdi), %ymm0, %ymm0 # sched: [8:1.00]
    284 ; GENERIC-NEXT:    vpermil2ps $3, (%rdi), %ymm1, %ymm0, %ymm0 # sched: [8:1.00]
    285 ; GENERIC-NEXT:    #NO_APP
    286 ; GENERIC-NEXT:    vzeroupper # sched: [100:0.33]
    287 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    288 ;
    289 ; BDVER-LABEL: test_vpermil2ps_256:
    290 ; BDVER:       # %bb.0:
    291 ; BDVER-NEXT:    #APP
    292 ; BDVER-NEXT:    vpermil2ps $3, %ymm2, %ymm1, %ymm0, %ymm0
    293 ; BDVER-NEXT:    vpermil2ps $3, %ymm2, (%rdi), %ymm0, %ymm0
    294 ; BDVER-NEXT:    vpermil2ps $3, (%rdi), %ymm1, %ymm0, %ymm0
    295 ; BDVER-NEXT:    #NO_APP
    296 ; BDVER-NEXT:    vzeroupper
    297 ; BDVER-NEXT:    retq
    298   call void asm sideeffect "vpermil2ps $4, $2, $1, $0, $0 \0a\09 vpermil2ps $4, $2, $3, $0, $0 \0a\09 vpermil2ps $4, $3, $1, $0, $0", "x,x,x,*m,i"(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3, i8 3)
    299   ret void
    300 }
    301 
    302 define void @test_vphaddbd(<2 x i64> %a0, <2 x i64> *%a1) {
    303 ; GENERIC-LABEL: test_vphaddbd:
    304 ; GENERIC:       # %bb.0:
    305 ; GENERIC-NEXT:    #APP
    306 ; GENERIC-NEXT:    vphaddbd %xmm0, %xmm0 # sched: [3:1.50]
    307 ; GENERIC-NEXT:    vphaddbd (%rdi), %xmm0 # sched: [9:1.50]
    308 ; GENERIC-NEXT:    #NO_APP
    309 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    310 ;
    311 ; BDVER-LABEL: test_vphaddbd:
    312 ; BDVER:       # %bb.0:
    313 ; BDVER-NEXT:    #APP
    314 ; BDVER-NEXT:    vphaddbd %xmm0, %xmm0
    315 ; BDVER-NEXT:    vphaddbd (%rdi), %xmm0
    316 ; BDVER-NEXT:    #NO_APP
    317 ; BDVER-NEXT:    retq
    318   call void asm sideeffect "vphaddbd $0, $0 \0a\09 vphaddbd $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1)
    319   ret void
    320 }
    321 
    322 define void @test_vphaddbq(<2 x i64> %a0, <2 x i64> *%a1) {
    323 ; GENERIC-LABEL: test_vphaddbq:
    324 ; GENERIC:       # %bb.0:
    325 ; GENERIC-NEXT:    #APP
    326 ; GENERIC-NEXT:    vphaddbq %xmm0, %xmm0 # sched: [3:1.50]
    327 ; GENERIC-NEXT:    vphaddbq (%rdi), %xmm0 # sched: [9:1.50]
    328 ; GENERIC-NEXT:    #NO_APP
    329 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    330 ;
    331 ; BDVER-LABEL: test_vphaddbq:
    332 ; BDVER:       # %bb.0:
    333 ; BDVER-NEXT:    #APP
    334 ; BDVER-NEXT:    vphaddbq %xmm0, %xmm0
    335 ; BDVER-NEXT:    vphaddbq (%rdi), %xmm0
    336 ; BDVER-NEXT:    #NO_APP
    337 ; BDVER-NEXT:    retq
    338   call void asm sideeffect "vphaddbq $0, $0 \0a\09 vphaddbq $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1)
    339   ret void
    340 }
    341 
    342 define void @test_vphaddbw(<2 x i64> %a0, <2 x i64> *%a1) {
    343 ; GENERIC-LABEL: test_vphaddbw:
    344 ; GENERIC:       # %bb.0:
    345 ; GENERIC-NEXT:    #APP
    346 ; GENERIC-NEXT:    vphaddbw %xmm0, %xmm0 # sched: [3:1.50]
    347 ; GENERIC-NEXT:    vphaddbw (%rdi), %xmm0 # sched: [9:1.50]
    348 ; GENERIC-NEXT:    #NO_APP
    349 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    350 ;
    351 ; BDVER-LABEL: test_vphaddbw:
    352 ; BDVER:       # %bb.0:
    353 ; BDVER-NEXT:    #APP
    354 ; BDVER-NEXT:    vphaddbw %xmm0, %xmm0
    355 ; BDVER-NEXT:    vphaddbw (%rdi), %xmm0
    356 ; BDVER-NEXT:    #NO_APP
    357 ; BDVER-NEXT:    retq
    358   call void asm sideeffect "vphaddbw $0, $0 \0a\09 vphaddbw $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1)
    359   ret void
    360 }
    361 
    362 define void @test_vphadddq(<2 x i64> %a0, <2 x i64> *%a1) {
    363 ; GENERIC-LABEL: test_vphadddq:
    364 ; GENERIC:       # %bb.0:
    365 ; GENERIC-NEXT:    #APP
    366 ; GENERIC-NEXT:    vphadddq %xmm0, %xmm0 # sched: [3:1.50]
    367 ; GENERIC-NEXT:    vphadddq (%rdi), %xmm0 # sched: [9:1.50]
    368 ; GENERIC-NEXT:    #NO_APP
    369 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    370 ;
    371 ; BDVER-LABEL: test_vphadddq:
    372 ; BDVER:       # %bb.0:
    373 ; BDVER-NEXT:    #APP
    374 ; BDVER-NEXT:    vphadddq %xmm0, %xmm0
    375 ; BDVER-NEXT:    vphadddq (%rdi), %xmm0
    376 ; BDVER-NEXT:    #NO_APP
    377 ; BDVER-NEXT:    retq
    378   call void asm sideeffect "vphadddq $0, $0 \0a\09 vphadddq $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1)
    379   ret void
    380 }
    381 
    382 define void @test_vphaddubd(<2 x i64> %a0, <2 x i64> *%a1) {
    383 ; GENERIC-LABEL: test_vphaddubd:
    384 ; GENERIC:       # %bb.0:
    385 ; GENERIC-NEXT:    #APP
    386 ; GENERIC-NEXT:    vphaddubd %xmm0, %xmm0 # sched: [3:1.50]
    387 ; GENERIC-NEXT:    vphaddubd (%rdi), %xmm0 # sched: [9:1.50]
    388 ; GENERIC-NEXT:    #NO_APP
    389 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    390 ;
    391 ; BDVER-LABEL: test_vphaddubd:
    392 ; BDVER:       # %bb.0:
    393 ; BDVER-NEXT:    #APP
    394 ; BDVER-NEXT:    vphaddubd %xmm0, %xmm0
    395 ; BDVER-NEXT:    vphaddubd (%rdi), %xmm0
    396 ; BDVER-NEXT:    #NO_APP
    397 ; BDVER-NEXT:    retq
    398   call void asm sideeffect "vphaddubd $0, $0 \0a\09 vphaddubd $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1)
    399   ret void
    400 }
    401 
    402 define void @test_vphaddubq(<2 x i64> %a0, <2 x i64> *%a1) {
    403 ; GENERIC-LABEL: test_vphaddubq:
    404 ; GENERIC:       # %bb.0:
    405 ; GENERIC-NEXT:    #APP
    406 ; GENERIC-NEXT:    vphaddubq %xmm0, %xmm0 # sched: [3:1.50]
    407 ; GENERIC-NEXT:    vphaddubq (%rdi), %xmm0 # sched: [9:1.50]
    408 ; GENERIC-NEXT:    #NO_APP
    409 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    410 ;
    411 ; BDVER-LABEL: test_vphaddubq:
    412 ; BDVER:       # %bb.0:
    413 ; BDVER-NEXT:    #APP
    414 ; BDVER-NEXT:    vphaddubq %xmm0, %xmm0
    415 ; BDVER-NEXT:    vphaddubq (%rdi), %xmm0
    416 ; BDVER-NEXT:    #NO_APP
    417 ; BDVER-NEXT:    retq
    418   call void asm sideeffect "vphaddubq $0, $0 \0a\09 vphaddubq $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1)
    419   ret void
    420 }
    421 
    422 define void @test_vphaddubw(<2 x i64> %a0, <2 x i64> *%a1) {
    423 ; GENERIC-LABEL: test_vphaddubw:
    424 ; GENERIC:       # %bb.0:
    425 ; GENERIC-NEXT:    #APP
    426 ; GENERIC-NEXT:    vphaddubw %xmm0, %xmm0 # sched: [3:1.50]
    427 ; GENERIC-NEXT:    vphaddubw (%rdi), %xmm0 # sched: [9:1.50]
    428 ; GENERIC-NEXT:    #NO_APP
    429 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    430 ;
    431 ; BDVER-LABEL: test_vphaddubw:
    432 ; BDVER:       # %bb.0:
    433 ; BDVER-NEXT:    #APP
    434 ; BDVER-NEXT:    vphaddubw %xmm0, %xmm0
    435 ; BDVER-NEXT:    vphaddubw (%rdi), %xmm0
    436 ; BDVER-NEXT:    #NO_APP
    437 ; BDVER-NEXT:    retq
    438   call void asm sideeffect "vphaddubw $0, $0 \0a\09 vphaddubw $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1)
    439   ret void
    440 }
    441 
    442 define void @test_vphaddudq(<2 x i64> %a0, <2 x i64> *%a1) {
    443 ; GENERIC-LABEL: test_vphaddudq:
    444 ; GENERIC:       # %bb.0:
    445 ; GENERIC-NEXT:    #APP
    446 ; GENERIC-NEXT:    vphaddudq %xmm0, %xmm0 # sched: [3:1.50]
    447 ; GENERIC-NEXT:    vphaddudq (%rdi), %xmm0 # sched: [9:1.50]
    448 ; GENERIC-NEXT:    #NO_APP
    449 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    450 ;
    451 ; BDVER-LABEL: test_vphaddudq:
    452 ; BDVER:       # %bb.0:
    453 ; BDVER-NEXT:    #APP
    454 ; BDVER-NEXT:    vphaddudq %xmm0, %xmm0
    455 ; BDVER-NEXT:    vphaddudq (%rdi), %xmm0
    456 ; BDVER-NEXT:    #NO_APP
    457 ; BDVER-NEXT:    retq
    458   call void asm sideeffect "vphaddudq $0, $0 \0a\09 vphaddudq $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1)
    459   ret void
    460 }
    461 
    462 define void @test_vphadduwd(<2 x i64> %a0, <2 x i64> *%a1) {
    463 ; GENERIC-LABEL: test_vphadduwd:
    464 ; GENERIC:       # %bb.0:
    465 ; GENERIC-NEXT:    #APP
    466 ; GENERIC-NEXT:    vphadduwd %xmm0, %xmm0 # sched: [3:1.50]
    467 ; GENERIC-NEXT:    vphadduwd (%rdi), %xmm0 # sched: [9:1.50]
    468 ; GENERIC-NEXT:    #NO_APP
    469 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    470 ;
    471 ; BDVER-LABEL: test_vphadduwd:
    472 ; BDVER:       # %bb.0:
    473 ; BDVER-NEXT:    #APP
    474 ; BDVER-NEXT:    vphadduwd %xmm0, %xmm0
    475 ; BDVER-NEXT:    vphadduwd (%rdi), %xmm0
    476 ; BDVER-NEXT:    #NO_APP
    477 ; BDVER-NEXT:    retq
    478   call void asm sideeffect "vphadduwd $0, $0 \0a\09 vphadduwd $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1)
    479   ret void
    480 }
    481 
    482 define void @test_vphadduwq(<2 x i64> %a0, <2 x i64> *%a1) {
    483 ; GENERIC-LABEL: test_vphadduwq:
    484 ; GENERIC:       # %bb.0:
    485 ; GENERIC-NEXT:    #APP
    486 ; GENERIC-NEXT:    vphadduwq %xmm0, %xmm0 # sched: [3:1.50]
    487 ; GENERIC-NEXT:    vphadduwq (%rdi), %xmm0 # sched: [9:1.50]
    488 ; GENERIC-NEXT:    #NO_APP
    489 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    490 ;
    491 ; BDVER-LABEL: test_vphadduwq:
    492 ; BDVER:       # %bb.0:
    493 ; BDVER-NEXT:    #APP
    494 ; BDVER-NEXT:    vphadduwq %xmm0, %xmm0
    495 ; BDVER-NEXT:    vphadduwq (%rdi), %xmm0
    496 ; BDVER-NEXT:    #NO_APP
    497 ; BDVER-NEXT:    retq
    498   call void asm sideeffect "vphadduwq $0, $0 \0a\09 vphadduwq $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1)
    499   ret void
    500 }
    501 
    502 define void @test_vphaddwd(<2 x i64> %a0, <2 x i64> *%a1) {
    503 ; GENERIC-LABEL: test_vphaddwd:
    504 ; GENERIC:       # %bb.0:
    505 ; GENERIC-NEXT:    #APP
    506 ; GENERIC-NEXT:    vphaddwd %xmm0, %xmm0 # sched: [3:1.50]
    507 ; GENERIC-NEXT:    vphaddwd (%rdi), %xmm0 # sched: [9:1.50]
    508 ; GENERIC-NEXT:    #NO_APP
    509 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    510 ;
    511 ; BDVER-LABEL: test_vphaddwd:
    512 ; BDVER:       # %bb.0:
    513 ; BDVER-NEXT:    #APP
    514 ; BDVER-NEXT:    vphaddwd %xmm0, %xmm0
    515 ; BDVER-NEXT:    vphaddwd (%rdi), %xmm0
    516 ; BDVER-NEXT:    #NO_APP
    517 ; BDVER-NEXT:    retq
    518   call void asm sideeffect "vphaddwd $0, $0 \0a\09 vphaddwd $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1)
    519   ret void
    520 }
    521 
    522 define void @test_vphaddwq(<2 x i64> %a0, <2 x i64> *%a1) {
    523 ; GENERIC-LABEL: test_vphaddwq:
    524 ; GENERIC:       # %bb.0:
    525 ; GENERIC-NEXT:    #APP
    526 ; GENERIC-NEXT:    vphaddwq %xmm0, %xmm0 # sched: [3:1.50]
    527 ; GENERIC-NEXT:    vphaddwq (%rdi), %xmm0 # sched: [9:1.50]
    528 ; GENERIC-NEXT:    #NO_APP
    529 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    530 ;
    531 ; BDVER-LABEL: test_vphaddwq:
    532 ; BDVER:       # %bb.0:
    533 ; BDVER-NEXT:    #APP
    534 ; BDVER-NEXT:    vphaddwq %xmm0, %xmm0
    535 ; BDVER-NEXT:    vphaddwq (%rdi), %xmm0
    536 ; BDVER-NEXT:    #NO_APP
    537 ; BDVER-NEXT:    retq
    538   call void asm sideeffect "vphaddwq $0, $0 \0a\09 vphaddwq $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1)
    539   ret void
    540 }
    541 
    542 define void @test_vphsubbw(<2 x i64> %a0, <2 x i64> *%a1) {
    543 ; GENERIC-LABEL: test_vphsubbw:
    544 ; GENERIC:       # %bb.0:
    545 ; GENERIC-NEXT:    #APP
    546 ; GENERIC-NEXT:    vphsubbw %xmm0, %xmm0 # sched: [3:1.50]
    547 ; GENERIC-NEXT:    vphsubbw (%rdi), %xmm0 # sched: [9:1.50]
    548 ; GENERIC-NEXT:    #NO_APP
    549 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    550 ;
    551 ; BDVER-LABEL: test_vphsubbw:
    552 ; BDVER:       # %bb.0:
    553 ; BDVER-NEXT:    #APP
    554 ; BDVER-NEXT:    vphsubbw %xmm0, %xmm0
    555 ; BDVER-NEXT:    vphsubbw (%rdi), %xmm0
    556 ; BDVER-NEXT:    #NO_APP
    557 ; BDVER-NEXT:    retq
    558   call void asm sideeffect "vphsubbw $0, $0 \0a\09 vphsubbw $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1)
    559   ret void
    560 }
    561 
    562 define void @test_vphsubdq(<2 x i64> %a0, <2 x i64> *%a1) {
    563 ; GENERIC-LABEL: test_vphsubdq:
    564 ; GENERIC:       # %bb.0:
    565 ; GENERIC-NEXT:    #APP
    566 ; GENERIC-NEXT:    vphsubdq %xmm0, %xmm0 # sched: [3:1.50]
    567 ; GENERIC-NEXT:    vphsubdq (%rdi), %xmm0 # sched: [9:1.50]
    568 ; GENERIC-NEXT:    #NO_APP
    569 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    570 ;
    571 ; BDVER-LABEL: test_vphsubdq:
    572 ; BDVER:       # %bb.0:
    573 ; BDVER-NEXT:    #APP
    574 ; BDVER-NEXT:    vphsubdq %xmm0, %xmm0
    575 ; BDVER-NEXT:    vphsubdq (%rdi), %xmm0
    576 ; BDVER-NEXT:    #NO_APP
    577 ; BDVER-NEXT:    retq
    578   call void asm sideeffect "vphsubdq $0, $0 \0a\09 vphsubdq $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1)
    579   ret void
    580 }
    581 
    582 define void @test_vphsubwd(<2 x i64> %a0, <2 x i64> *%a1) {
    583 ; GENERIC-LABEL: test_vphsubwd:
    584 ; GENERIC:       # %bb.0:
    585 ; GENERIC-NEXT:    #APP
    586 ; GENERIC-NEXT:    vphsubwd %xmm0, %xmm0 # sched: [3:1.50]
    587 ; GENERIC-NEXT:    vphsubwd (%rdi), %xmm0 # sched: [9:1.50]
    588 ; GENERIC-NEXT:    #NO_APP
    589 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    590 ;
    591 ; BDVER-LABEL: test_vphsubwd:
    592 ; BDVER:       # %bb.0:
    593 ; BDVER-NEXT:    #APP
    594 ; BDVER-NEXT:    vphsubwd %xmm0, %xmm0
    595 ; BDVER-NEXT:    vphsubwd (%rdi), %xmm0
    596 ; BDVER-NEXT:    #NO_APP
    597 ; BDVER-NEXT:    retq
    598   call void asm sideeffect "vphsubwd $0, $0 \0a\09 vphsubwd $1, $0", "x,*m"(<2 x i64> %a0, <2 x i64> *%a1)
    599   ret void
    600 }
    601 
    602 define void @test_vpmacsdd(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) {
    603 ; GENERIC-LABEL: test_vpmacsdd:
    604 ; GENERIC:       # %bb.0:
    605 ; GENERIC-NEXT:    #APP
    606 ; GENERIC-NEXT:    vpmacsdd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00]
    607 ; GENERIC-NEXT:    vpmacsdd %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00]
    608 ; GENERIC-NEXT:    #NO_APP
    609 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    610 ;
    611 ; BDVER-LABEL: test_vpmacsdd:
    612 ; BDVER:       # %bb.0:
    613 ; BDVER-NEXT:    #APP
    614 ; BDVER-NEXT:    vpmacsdd %xmm2, %xmm1, %xmm0, %xmm0
    615 ; BDVER-NEXT:    vpmacsdd %xmm2, (%rdi), %xmm0, %xmm0
    616 ; BDVER-NEXT:    #NO_APP
    617 ; BDVER-NEXT:    retq
    618   call void asm sideeffect "vpmacsdd $2, $1, $0, $0 \0a\09 vpmacsdd $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3)
    619   ret void
    620 }
    621 
    622 define void @test_vpmacsdqh(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) {
    623 ; GENERIC-LABEL: test_vpmacsdqh:
    624 ; GENERIC:       # %bb.0:
    625 ; GENERIC-NEXT:    #APP
    626 ; GENERIC-NEXT:    vpmacsdqh %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00]
    627 ; GENERIC-NEXT:    vpmacsdqh %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00]
    628 ; GENERIC-NEXT:    #NO_APP
    629 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    630 ;
    631 ; BDVER-LABEL: test_vpmacsdqh:
    632 ; BDVER:       # %bb.0:
    633 ; BDVER-NEXT:    #APP
    634 ; BDVER-NEXT:    vpmacsdqh %xmm2, %xmm1, %xmm0, %xmm0
    635 ; BDVER-NEXT:    vpmacsdqh %xmm2, (%rdi), %xmm0, %xmm0
    636 ; BDVER-NEXT:    #NO_APP
    637 ; BDVER-NEXT:    retq
    638   call void asm sideeffect "vpmacsdqh $2, $1, $0, $0 \0a\09 vpmacsdqh $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3)
    639   ret void
    640 }
    641 
    642 define void @test_vpmacsdql(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) {
    643 ; GENERIC-LABEL: test_vpmacsdql:
    644 ; GENERIC:       # %bb.0:
    645 ; GENERIC-NEXT:    #APP
    646 ; GENERIC-NEXT:    vpmacsdql %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00]
    647 ; GENERIC-NEXT:    vpmacsdql %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00]
    648 ; GENERIC-NEXT:    #NO_APP
    649 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    650 ;
    651 ; BDVER-LABEL: test_vpmacsdql:
    652 ; BDVER:       # %bb.0:
    653 ; BDVER-NEXT:    #APP
    654 ; BDVER-NEXT:    vpmacsdql %xmm2, %xmm1, %xmm0, %xmm0
    655 ; BDVER-NEXT:    vpmacsdql %xmm2, (%rdi), %xmm0, %xmm0
    656 ; BDVER-NEXT:    #NO_APP
    657 ; BDVER-NEXT:    retq
    658   call void asm sideeffect "vpmacsdql $2, $1, $0, $0 \0a\09 vpmacsdql $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3)
    659   ret void
    660 }
    661 
    662 define void @test_vpmacssdd(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) {
    663 ; GENERIC-LABEL: test_vpmacssdd:
    664 ; GENERIC:       # %bb.0:
    665 ; GENERIC-NEXT:    #APP
    666 ; GENERIC-NEXT:    vpmacssdd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00]
    667 ; GENERIC-NEXT:    vpmacssdd %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00]
    668 ; GENERIC-NEXT:    #NO_APP
    669 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    670 ;
    671 ; BDVER-LABEL: test_vpmacssdd:
    672 ; BDVER:       # %bb.0:
    673 ; BDVER-NEXT:    #APP
    674 ; BDVER-NEXT:    vpmacssdd %xmm2, %xmm1, %xmm0, %xmm0
    675 ; BDVER-NEXT:    vpmacssdd %xmm2, (%rdi), %xmm0, %xmm0
    676 ; BDVER-NEXT:    #NO_APP
    677 ; BDVER-NEXT:    retq
    678   call void asm sideeffect "vpmacssdd $2, $1, $0, $0 \0a\09 vpmacssdd $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3)
    679   ret void
    680 }
    681 
    682 define void @test_vpmacssdqh(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) {
    683 ; GENERIC-LABEL: test_vpmacssdqh:
    684 ; GENERIC:       # %bb.0:
    685 ; GENERIC-NEXT:    #APP
    686 ; GENERIC-NEXT:    vpmacssdqh %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00]
    687 ; GENERIC-NEXT:    vpmacssdqh %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00]
    688 ; GENERIC-NEXT:    #NO_APP
    689 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    690 ;
    691 ; BDVER-LABEL: test_vpmacssdqh:
    692 ; BDVER:       # %bb.0:
    693 ; BDVER-NEXT:    #APP
    694 ; BDVER-NEXT:    vpmacssdqh %xmm2, %xmm1, %xmm0, %xmm0
    695 ; BDVER-NEXT:    vpmacssdqh %xmm2, (%rdi), %xmm0, %xmm0
    696 ; BDVER-NEXT:    #NO_APP
    697 ; BDVER-NEXT:    retq
    698   call void asm sideeffect "vpmacssdqh $2, $1, $0, $0 \0a\09 vpmacssdqh $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3)
    699   ret void
    700 }
    701 
    702 define void @test_vpmacssdql(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) {
    703 ; GENERIC-LABEL: test_vpmacssdql:
    704 ; GENERIC:       # %bb.0:
    705 ; GENERIC-NEXT:    #APP
    706 ; GENERIC-NEXT:    vpmacssdql %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00]
    707 ; GENERIC-NEXT:    vpmacssdql %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00]
    708 ; GENERIC-NEXT:    #NO_APP
    709 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    710 ;
    711 ; BDVER-LABEL: test_vpmacssdql:
    712 ; BDVER:       # %bb.0:
    713 ; BDVER-NEXT:    #APP
    714 ; BDVER-NEXT:    vpmacssdql %xmm2, %xmm1, %xmm0, %xmm0
    715 ; BDVER-NEXT:    vpmacssdql %xmm2, (%rdi), %xmm0, %xmm0
    716 ; BDVER-NEXT:    #NO_APP
    717 ; BDVER-NEXT:    retq
    718   call void asm sideeffect "vpmacssdql $2, $1, $0, $0 \0a\09 vpmacssdql $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3)
    719   ret void
    720 }
    721 
    722 define void @test_vpmacsswd(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) {
    723 ; GENERIC-LABEL: test_vpmacsswd:
    724 ; GENERIC:       # %bb.0:
    725 ; GENERIC-NEXT:    #APP
    726 ; GENERIC-NEXT:    vpmacsswd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00]
    727 ; GENERIC-NEXT:    vpmacsswd %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00]
    728 ; GENERIC-NEXT:    #NO_APP
    729 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    730 ;
    731 ; BDVER-LABEL: test_vpmacsswd:
    732 ; BDVER:       # %bb.0:
    733 ; BDVER-NEXT:    #APP
    734 ; BDVER-NEXT:    vpmacsswd %xmm2, %xmm1, %xmm0, %xmm0
    735 ; BDVER-NEXT:    vpmacsswd %xmm2, (%rdi), %xmm0, %xmm0
    736 ; BDVER-NEXT:    #NO_APP
    737 ; BDVER-NEXT:    retq
    738   call void asm sideeffect "vpmacsswd $2, $1, $0, $0 \0a\09 vpmacsswd $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3)
    739   ret void
    740 }
    741 
    742 define void @test_vpmacssww(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) {
    743 ; GENERIC-LABEL: test_vpmacssww:
    744 ; GENERIC:       # %bb.0:
    745 ; GENERIC-NEXT:    #APP
    746 ; GENERIC-NEXT:    vpmacssww %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00]
    747 ; GENERIC-NEXT:    vpmacssww %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00]
    748 ; GENERIC-NEXT:    #NO_APP
    749 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    750 ;
    751 ; BDVER-LABEL: test_vpmacssww:
    752 ; BDVER:       # %bb.0:
    753 ; BDVER-NEXT:    #APP
    754 ; BDVER-NEXT:    vpmacssww %xmm2, %xmm1, %xmm0, %xmm0
    755 ; BDVER-NEXT:    vpmacssww %xmm2, (%rdi), %xmm0, %xmm0
    756 ; BDVER-NEXT:    #NO_APP
    757 ; BDVER-NEXT:    retq
    758   call void asm sideeffect "vpmacssww $2, $1, $0, $0 \0a\09 vpmacssww $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3)
    759   ret void
    760 }
    761 
    762 define void @test_vpmacswd(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) {
    763 ; GENERIC-LABEL: test_vpmacswd:
    764 ; GENERIC:       # %bb.0:
    765 ; GENERIC-NEXT:    #APP
    766 ; GENERIC-NEXT:    vpmacswd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00]
    767 ; GENERIC-NEXT:    vpmacswd %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00]
    768 ; GENERIC-NEXT:    #NO_APP
    769 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    770 ;
    771 ; BDVER-LABEL: test_vpmacswd:
    772 ; BDVER:       # %bb.0:
    773 ; BDVER-NEXT:    #APP
    774 ; BDVER-NEXT:    vpmacswd %xmm2, %xmm1, %xmm0, %xmm0
    775 ; BDVER-NEXT:    vpmacswd %xmm2, (%rdi), %xmm0, %xmm0
    776 ; BDVER-NEXT:    #NO_APP
    777 ; BDVER-NEXT:    retq
    778   call void asm sideeffect "vpmacswd $2, $1, $0, $0 \0a\09 vpmacswd $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3)
    779   ret void
    780 }
    781 
    782 define void @test_vpmacsww(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) {
    783 ; GENERIC-LABEL: test_vpmacsww:
    784 ; GENERIC:       # %bb.0:
    785 ; GENERIC-NEXT:    #APP
    786 ; GENERIC-NEXT:    vpmacsww %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00]
    787 ; GENERIC-NEXT:    vpmacsww %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00]
    788 ; GENERIC-NEXT:    #NO_APP
    789 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    790 ;
    791 ; BDVER-LABEL: test_vpmacsww:
    792 ; BDVER:       # %bb.0:
    793 ; BDVER-NEXT:    #APP
    794 ; BDVER-NEXT:    vpmacsww %xmm2, %xmm1, %xmm0, %xmm0
    795 ; BDVER-NEXT:    vpmacsww %xmm2, (%rdi), %xmm0, %xmm0
    796 ; BDVER-NEXT:    #NO_APP
    797 ; BDVER-NEXT:    retq
    798   call void asm sideeffect "vpmacsww $2, $1, $0, $0 \0a\09 vpmacsww $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3)
    799   ret void
    800 }
    801 
    802 define void @test_vpmadcsswd(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) {
    803 ; GENERIC-LABEL: test_vpmadcsswd:
    804 ; GENERIC:       # %bb.0:
    805 ; GENERIC-NEXT:    #APP
    806 ; GENERIC-NEXT:    vpmadcsswd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00]
    807 ; GENERIC-NEXT:    vpmadcsswd %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00]
    808 ; GENERIC-NEXT:    #NO_APP
    809 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    810 ;
    811 ; BDVER-LABEL: test_vpmadcsswd:
    812 ; BDVER:       # %bb.0:
    813 ; BDVER-NEXT:    #APP
    814 ; BDVER-NEXT:    vpmadcsswd %xmm2, %xmm1, %xmm0, %xmm0
    815 ; BDVER-NEXT:    vpmadcsswd %xmm2, (%rdi), %xmm0, %xmm0
    816 ; BDVER-NEXT:    #NO_APP
    817 ; BDVER-NEXT:    retq
    818   call void asm sideeffect "vpmadcsswd $2, $1, $0, $0 \0a\09 vpmadcsswd $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3)
    819   ret void
    820 }
    821 
    822 define void @test_vpmadcswd(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) {
    823 ; GENERIC-LABEL: test_vpmadcswd:
    824 ; GENERIC:       # %bb.0:
    825 ; GENERIC-NEXT:    #APP
    826 ; GENERIC-NEXT:    vpmadcswd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:1.00]
    827 ; GENERIC-NEXT:    vpmadcswd %xmm2, (%rdi), %xmm0, %xmm0 # sched: [11:1.00]
    828 ; GENERIC-NEXT:    #NO_APP
    829 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    830 ;
    831 ; BDVER-LABEL: test_vpmadcswd:
    832 ; BDVER:       # %bb.0:
    833 ; BDVER-NEXT:    #APP
    834 ; BDVER-NEXT:    vpmadcswd %xmm2, %xmm1, %xmm0, %xmm0
    835 ; BDVER-NEXT:    vpmadcswd %xmm2, (%rdi), %xmm0, %xmm0
    836 ; BDVER-NEXT:    #NO_APP
    837 ; BDVER-NEXT:    retq
    838   call void asm sideeffect "vpmadcswd $2, $1, $0, $0 \0a\09 vpmadcswd $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3)
    839   ret void
    840 }
    841 
    842 define void @test_vpperm(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3) {
    843 ; GENERIC-LABEL: test_vpperm:
    844 ; GENERIC:       # %bb.0:
    845 ; GENERIC-NEXT:    #APP
    846 ; GENERIC-NEXT:    vpperm %xmm2, %xmm1, %xmm0, %xmm0 # sched: [1:0.50]
    847 ; GENERIC-NEXT:    vpperm (%rdi), %xmm1, %xmm0, %xmm0 # sched: [7:0.50]
    848 ; GENERIC-NEXT:    vpperm %xmm2, (%rdi), %xmm0, %xmm0 # sched: [7:0.50]
    849 ; GENERIC-NEXT:    #NO_APP
    850 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    851 ;
    852 ; BDVER-LABEL: test_vpperm:
    853 ; BDVER:       # %bb.0:
    854 ; BDVER-NEXT:    #APP
    855 ; BDVER-NEXT:    vpperm %xmm2, %xmm1, %xmm0, %xmm0
    856 ; BDVER-NEXT:    vpperm (%rdi), %xmm1, %xmm0, %xmm0
    857 ; BDVER-NEXT:    vpperm %xmm2, (%rdi), %xmm0, %xmm0
    858 ; BDVER-NEXT:    #NO_APP
    859 ; BDVER-NEXT:    retq
    860   call void asm sideeffect "vpperm $2, $1, $0, $0 \0A\09 vpperm $3, $1, $0, $0 \0A\09 vpperm $2, $3, $0, $0", "x,x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> %a2, <2 x i64> *%a3)
    861   ret void
    862 }
    863 
    864 define void @test_vprot(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2) {
    865 ; GENERIC-LABEL: test_vprot:
    866 ; GENERIC:       # %bb.0:
    867 ; GENERIC-NEXT:    #APP
    868 ; GENERIC-NEXT:    vprotb %xmm1, %xmm0, %xmm0 # sched: [1:1.00]
    869 ; GENERIC-NEXT:    vprotd %xmm1, %xmm0, %xmm0 # sched: [1:1.00]
    870 ; GENERIC-NEXT:    vprotq %xmm1, %xmm0, %xmm0 # sched: [1:1.00]
    871 ; GENERIC-NEXT:    vprotw %xmm1, %xmm0, %xmm0 # sched: [1:1.00]
    872 ; GENERIC-NEXT:    vprotb (%rdi), %xmm0, %xmm0 # sched: [7:1.00]
    873 ; GENERIC-NEXT:    vprotd (%rdi), %xmm0, %xmm0 # sched: [7:1.00]
    874 ; GENERIC-NEXT:    vprotq (%rdi), %xmm0, %xmm0 # sched: [7:1.00]
    875 ; GENERIC-NEXT:    vprotw (%rdi), %xmm0, %xmm0 # sched: [7:1.00]
    876 ; GENERIC-NEXT:    vprotb %xmm0, (%rdi), %xmm0 # sched: [7:1.00]
    877 ; GENERIC-NEXT:    vprotd %xmm0, (%rdi), %xmm0 # sched: [7:1.00]
    878 ; GENERIC-NEXT:    vprotq %xmm0, (%rdi), %xmm0 # sched: [7:1.00]
    879 ; GENERIC-NEXT:    vprotw %xmm0, (%rdi), %xmm0 # sched: [7:1.00]
    880 ; GENERIC-NEXT:    vprotb $7, %xmm0, %xmm0 # sched: [1:1.00]
    881 ; GENERIC-NEXT:    vprotd $7, %xmm0, %xmm0 # sched: [1:1.00]
    882 ; GENERIC-NEXT:    vprotq $7, %xmm0, %xmm0 # sched: [1:1.00]
    883 ; GENERIC-NEXT:    vprotw $7, %xmm0, %xmm0 # sched: [1:1.00]
    884 ; GENERIC-NEXT:    vprotb $7, (%rdi), %xmm0 # sched: [7:1.00]
    885 ; GENERIC-NEXT:    vprotd $7, (%rdi), %xmm0 # sched: [7:1.00]
    886 ; GENERIC-NEXT:    vprotq $7, (%rdi), %xmm0 # sched: [7:1.00]
    887 ; GENERIC-NEXT:    vprotw $7, (%rdi), %xmm0 # sched: [7:1.00]
    888 ; GENERIC-NEXT:    #NO_APP
    889 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    890 ;
    891 ; BDVER-LABEL: test_vprot:
    892 ; BDVER:       # %bb.0:
    893 ; BDVER-NEXT:    #APP
    894 ; BDVER-NEXT:    vprotb %xmm1, %xmm0, %xmm0
    895 ; BDVER-NEXT:    vprotd %xmm1, %xmm0, %xmm0
    896 ; BDVER-NEXT:    vprotq %xmm1, %xmm0, %xmm0
    897 ; BDVER-NEXT:    vprotw %xmm1, %xmm0, %xmm0
    898 ; BDVER-NEXT:    vprotb (%rdi), %xmm0, %xmm0
    899 ; BDVER-NEXT:    vprotd (%rdi), %xmm0, %xmm0
    900 ; BDVER-NEXT:    vprotq (%rdi), %xmm0, %xmm0
    901 ; BDVER-NEXT:    vprotw (%rdi), %xmm0, %xmm0
    902 ; BDVER-NEXT:    vprotb %xmm0, (%rdi), %xmm0
    903 ; BDVER-NEXT:    vprotd %xmm0, (%rdi), %xmm0
    904 ; BDVER-NEXT:    vprotq %xmm0, (%rdi), %xmm0
    905 ; BDVER-NEXT:    vprotw %xmm0, (%rdi), %xmm0
    906 ; BDVER-NEXT:    vprotb $7, %xmm0, %xmm0
    907 ; BDVER-NEXT:    vprotd $7, %xmm0, %xmm0
    908 ; BDVER-NEXT:    vprotq $7, %xmm0, %xmm0
    909 ; BDVER-NEXT:    vprotw $7, %xmm0, %xmm0
    910 ; BDVER-NEXT:    vprotb $7, (%rdi), %xmm0
    911 ; BDVER-NEXT:    vprotd $7, (%rdi), %xmm0
    912 ; BDVER-NEXT:    vprotq $7, (%rdi), %xmm0
    913 ; BDVER-NEXT:    vprotw $7, (%rdi), %xmm0
    914 ; BDVER-NEXT:    #NO_APP
    915 ; BDVER-NEXT:    retq
    916   call void asm sideeffect "vprotb $1, $0, $0 \0A\09 vprotd $1, $0, $0 \0A\09 vprotq $1, $0, $0 \0A\09 vprotw $1, $0, $0 \0A\09 vprotb $2, $0, $0 \0A\09 vprotd $2, $0, $0 \0A\09 vprotq $2, $0, $0 \0A\09 vprotw $2, $0, $0 \0A\09 vprotb $0, $2, $0 \0A\09 vprotd $0, $2, $0 \0A\09 vprotq $0, $2, $0 \0A\09 vprotw $0, $2, $0 \0A\09 vprotb $3, $0, $0 \0A\09 vprotd $3, $0, $0 \0A\09 vprotq $3, $0, $0 \0A\09 vprotw $3, $0, $0 \0A\09 vprotb $3, $2, $0 \0A\09 vprotd $3, $2, $0 \0A\09 vprotq $3, $2, $0 \0A\09 vprotw $3, $2, $0", "x,x,*m,i"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2, i8 7)
    917   ret void
    918 }
    919 
    920 define void @test_vpsha(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2) {
    921 ; GENERIC-LABEL: test_vpsha:
    922 ; GENERIC:       # %bb.0:
    923 ; GENERIC-NEXT:    #APP
    924 ; GENERIC-NEXT:    vpshab %xmm1, %xmm0, %xmm0 # sched: [1:1.00]
    925 ; GENERIC-NEXT:    vpshad %xmm1, %xmm0, %xmm0 # sched: [1:1.00]
    926 ; GENERIC-NEXT:    vpshaq %xmm1, %xmm0, %xmm0 # sched: [1:1.00]
    927 ; GENERIC-NEXT:    vpshaw %xmm1, %xmm0, %xmm0 # sched: [1:1.00]
    928 ; GENERIC-NEXT:    vpshab (%rdi), %xmm0, %xmm0 # sched: [7:1.00]
    929 ; GENERIC-NEXT:    vpshad (%rdi), %xmm0, %xmm0 # sched: [7:1.00]
    930 ; GENERIC-NEXT:    vpshaq (%rdi), %xmm0, %xmm0 # sched: [7:1.00]
    931 ; GENERIC-NEXT:    vpshaw (%rdi), %xmm0, %xmm0 # sched: [7:1.00]
    932 ; GENERIC-NEXT:    vpshab %xmm0, (%rdi), %xmm0 # sched: [7:1.00]
    933 ; GENERIC-NEXT:    vpshad %xmm0, (%rdi), %xmm0 # sched: [7:1.00]
    934 ; GENERIC-NEXT:    vpshaq %xmm0, (%rdi), %xmm0 # sched: [7:1.00]
    935 ; GENERIC-NEXT:    vpshaw %xmm0, (%rdi), %xmm0 # sched: [7:1.00]
    936 ; GENERIC-NEXT:    #NO_APP
    937 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    938 ;
    939 ; BDVER-LABEL: test_vpsha:
    940 ; BDVER:       # %bb.0:
    941 ; BDVER-NEXT:    #APP
    942 ; BDVER-NEXT:    vpshab %xmm1, %xmm0, %xmm0
    943 ; BDVER-NEXT:    vpshad %xmm1, %xmm0, %xmm0
    944 ; BDVER-NEXT:    vpshaq %xmm1, %xmm0, %xmm0
    945 ; BDVER-NEXT:    vpshaw %xmm1, %xmm0, %xmm0
    946 ; BDVER-NEXT:    vpshab (%rdi), %xmm0, %xmm0
    947 ; BDVER-NEXT:    vpshad (%rdi), %xmm0, %xmm0
    948 ; BDVER-NEXT:    vpshaq (%rdi), %xmm0, %xmm0
    949 ; BDVER-NEXT:    vpshaw (%rdi), %xmm0, %xmm0
    950 ; BDVER-NEXT:    vpshab %xmm0, (%rdi), %xmm0
    951 ; BDVER-NEXT:    vpshad %xmm0, (%rdi), %xmm0
    952 ; BDVER-NEXT:    vpshaq %xmm0, (%rdi), %xmm0
    953 ; BDVER-NEXT:    vpshaw %xmm0, (%rdi), %xmm0
    954 ; BDVER-NEXT:    #NO_APP
    955 ; BDVER-NEXT:    retq
    956   call void asm sideeffect "vpshab $1, $0, $0 \0A\09 vpshad $1, $0, $0 \0A\09 vpshaq $1, $0, $0 \0A\09 vpshaw $1, $0, $0 \0A\09 vpshab $2, $0, $0 \0A\09 vpshad $2, $0, $0 \0A\09 vpshaq $2, $0, $0 \0A\09 vpshaw $2, $0, $0 \0A\09 vpshab $0, $2, $0 \0A\09 vpshad $0, $2, $0 \0A\09 vpshaq $0, $2, $0 \0A\09 vpshaw $0, $2, $0", "x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2)
    957   ret void
    958 }
    959 
    960 define void @test_vpshl(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2) {
    961 ; GENERIC-LABEL: test_vpshl:
    962 ; GENERIC:       # %bb.0:
    963 ; GENERIC-NEXT:    #APP
    964 ; GENERIC-NEXT:    vpshlb %xmm1, %xmm0, %xmm0 # sched: [1:1.00]
    965 ; GENERIC-NEXT:    vpshld %xmm1, %xmm0, %xmm0 # sched: [1:1.00]
    966 ; GENERIC-NEXT:    vpshlq %xmm1, %xmm0, %xmm0 # sched: [1:1.00]
    967 ; GENERIC-NEXT:    vpshlw %xmm1, %xmm0, %xmm0 # sched: [1:1.00]
    968 ; GENERIC-NEXT:    vpshlb (%rdi), %xmm0, %xmm0 # sched: [7:1.00]
    969 ; GENERIC-NEXT:    vpshld (%rdi), %xmm0, %xmm0 # sched: [7:1.00]
    970 ; GENERIC-NEXT:    vpshlq (%rdi), %xmm0, %xmm0 # sched: [7:1.00]
    971 ; GENERIC-NEXT:    vpshlw (%rdi), %xmm0, %xmm0 # sched: [7:1.00]
    972 ; GENERIC-NEXT:    vpshlb %xmm0, (%rdi), %xmm0 # sched: [7:1.00]
    973 ; GENERIC-NEXT:    vpshld %xmm0, (%rdi), %xmm0 # sched: [7:1.00]
    974 ; GENERIC-NEXT:    vpshlq %xmm0, (%rdi), %xmm0 # sched: [7:1.00]
    975 ; GENERIC-NEXT:    vpshlw %xmm0, (%rdi), %xmm0 # sched: [7:1.00]
    976 ; GENERIC-NEXT:    #NO_APP
    977 ; GENERIC-NEXT:    retq # sched: [1:1.00]
    978 ;
    979 ; BDVER-LABEL: test_vpshl:
    980 ; BDVER:       # %bb.0:
    981 ; BDVER-NEXT:    #APP
    982 ; BDVER-NEXT:    vpshlb %xmm1, %xmm0, %xmm0
    983 ; BDVER-NEXT:    vpshld %xmm1, %xmm0, %xmm0
    984 ; BDVER-NEXT:    vpshlq %xmm1, %xmm0, %xmm0
    985 ; BDVER-NEXT:    vpshlw %xmm1, %xmm0, %xmm0
    986 ; BDVER-NEXT:    vpshlb (%rdi), %xmm0, %xmm0
    987 ; BDVER-NEXT:    vpshld (%rdi), %xmm0, %xmm0
    988 ; BDVER-NEXT:    vpshlq (%rdi), %xmm0, %xmm0
    989 ; BDVER-NEXT:    vpshlw (%rdi), %xmm0, %xmm0
    990 ; BDVER-NEXT:    vpshlb %xmm0, (%rdi), %xmm0
    991 ; BDVER-NEXT:    vpshld %xmm0, (%rdi), %xmm0
    992 ; BDVER-NEXT:    vpshlq %xmm0, (%rdi), %xmm0
    993 ; BDVER-NEXT:    vpshlw %xmm0, (%rdi), %xmm0
    994 ; BDVER-NEXT:    #NO_APP
    995 ; BDVER-NEXT:    retq
    996   call void asm sideeffect "vpshlb $1, $0, $0 \0A\09 vpshld $1, $0, $0 \0A\09 vpshlq $1, $0, $0 \0A\09 vpshlw $1, $0, $0 \0A\09 vpshlb $2, $0, $0 \0A\09 vpshld $2, $0, $0 \0A\09 vpshlq $2, $0, $0 \0A\09 vpshlw $2, $0, $0 \0A\09 vpshlb $0, $2, $0 \0A\09 vpshld $0, $2, $0 \0A\09 vpshlq $0, $2, $0 \0A\09 vpshlw $0, $2, $0", "x,x,*m"(<2 x i64> %a0, <2 x i64> %a1, <2 x i64> *%a2)
    997   ret void
    998 }
    999