• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
8define 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
34define 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
60define 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
80define 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
100define 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
122define 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
146define 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
178define 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
210define 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
232define 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
256define 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
278define 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
302define 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
322define 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
342define 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
362define 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
382define 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
402define 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
422define 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
442define 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
462define 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
482define 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
502define 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
522define 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
542define 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
562define 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
582define 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
602define 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
622define 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
642define 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
662define 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
682define 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
702define 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
722define 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
742define 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
762define 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
782define 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
802define 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
822define 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
842define 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
864define 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
920define 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
960define 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