1; RUN: not llc %s -verify-machineinstrs=0 -mtriple i386-unknown-linux-gnu -mattr +avx -o /dev/null 2>&1 | FileCheck %s
2
3define <4 x float> @testxmm_1(<4 x float> %_xmm0, i32 %_l) {
4; CHECK: error: inline assembly requires more registers than available
5entry:
6  %0 = tail call <4 x float> asm "vmovhlps $1, $2, $0", "=v,v,v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(i32 %_l, <4 x float> %_xmm0)
7  ret <4 x float> %0
8}
9
10define <4 x float> @testxmm_2(<4 x float> %_xmm0, i32 %_l) {
11; CHECK: error: inline assembly requires more registers than available
12entry:
13  %0 = tail call <4 x float> asm "movapd $1, $0", "=v,v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(i32 %_l)
14  ret <4 x float> %0
15}
16
17define <4 x float> @testxmm_3(<4 x float> %_xmm0, i32 %_l) {
18; CHECK: error: inline assembly requires more registers than available
19entry:
20  %0 = tail call <4 x float> asm "vmovapd $1, $0", "=v,v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(i32 %_l)
21  ret <4 x float> %0
22}
23
24define <4 x float> @testxmm_4(<4 x float> %_xmm0, i32 %_l) {
25; CHECK: error: inline assembly requires more registers than available
26entry:
27  %0 = tail call <4 x float> asm "vmpsadbw $$0, $1, $2, $0", "=v,v,v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(i32 %_l, <4 x float> %_xmm0)
28  ret <4 x float> %0
29}
30
31define <4 x float> @testxmm_5(<4 x float> %_xmm0, i32 %_l) {
32; CHECK: error: inline assembly requires more registers than available
33entry:
34  %0 = tail call <4 x float> asm "vminpd $1, $2, $0", "=v,v,v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(i32 %_l, i32 %_l)
35  ret <4 x float> %0
36}
37
38define i32 @testxmm_6(i32 returned %_l) {
39; CHECK: error: inline assembly requires more registers than available
40entry:
41  tail call void asm sideeffect "vmovd $0, %eax", "v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(i32 %_l)
42  ret i32 %_l
43}
44
45define <4 x float> @testxmm_7(<4 x float> returned %_xmm0) {
46; CHECK: error: inline assembly requires more registers than available
47entry:
48  tail call void asm sideeffect "vmovmskps $0, %eax", "v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(<4 x float> %_xmm0)
49  ret <4 x float> %_xmm0
50}
51
52define i32 @testxmm_8(<4 x float> %_xmm0, i32 %_l) {
53; CHECK: error: inline assembly requires more registers than available
54entry:
55  %0 = tail call i32 asm "vmulsd $1, $2, $0", "=v,v,v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(i32 %_l, <4 x float> %_xmm0)
56  ret i32 %0
57}
58
59define <4 x float> @testxmm_9(<4 x float> %_xmm0, i32 %_l) {
60; CHECK: error: inline assembly requires more registers than available
61entry:
62  %0 = tail call <4 x float> asm "vorpd $1, $2, $0", "=v,v,v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(i32 %_l, <4 x float> %_xmm0)
63  ret <4 x float> %0
64}
65
66define <4 x float> @testxmm_10(<4 x float> %_xmm0, i32 %_l) {
67; CHECK: error: inline assembly requires more registers than available
68entry:
69  %0 = tail call <4 x float> asm "pabsb $1, $0", "=v,v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(i32 %_l)
70  ret <4 x float> %0
71}
72
73define <4 x float> @testxmm_11(<4 x float> %_xmm0, i32 %_l) {
74; CHECK: error: inline assembly requires more registers than available
75entry:
76  %0 = tail call <4 x float> asm "vpabsd $1, $0", "=v,v,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{dirflag},~{fpsr},~{flags}"(i32 %_l)
77  ret <4 x float> %0
78}
79
80define <8 x float> @testymm_1(<8 x float> %_ymm0, <8 x float> %_ymm1) {
81; CHECK: error: inline assembly requires more registers than available
82entry:
83  %0 = tail call <8 x float> asm "vmovsldup $1, $0", "=v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm0)
84  ret <8 x float> %0
85}
86
87define <8 x float> @testymm_2(<8 x float> %_ymm0, <8 x float> %_ymm1) {
88; CHECK: error: inline assembly requires more registers than available
89entry:
90  %0 = tail call <8 x float> asm "vmovapd $1, $0", "=v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm1)
91  ret <8 x float> %0
92}
93
94define <8 x float> @testymm_3(<8 x float> %_ymm0, <8 x float> %_ymm1) {
95; CHECK: error: inline assembly requires more registers than available
96entry:
97  %0 = tail call <8 x float> asm "vminpd $1, $2, $0", "=v,v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm1, <8 x float> %_ymm0)
98  ret <8 x float> %0
99}
100
101define <8 x float> @testymm_4(<8 x float> %_ymm0, <8 x float> %_ymm1) {
102; CHECK: error: inline assembly requires more registers than available
103entry:
104  %0 = tail call <8 x float> asm "vorpd $1, $2, $0", "=v,v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm1, <8 x float> %_ymm0)
105  ret <8 x float> %0
106}
107
108define <8 x float> @testymm(<8 x float> %_ymm0, <8 x float> %_ymm1) {
109; CHECK: error: inline assembly requires more registers than available
110entry:
111  %0 = tail call <8 x float> asm "vmulps $1, $2, $0", "=v,v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm1, <8 x float> %_ymm0)
112  ret <8 x float> %0
113}
114
115define <8 x float> @testymm_6(<8 x float> %_ymm0, <8 x float> %_ymm1) {
116; CHECK: error: inline assembly requires more registers than available
117entry:
118  %0 = tail call <8 x float> asm "vmulpd $1, $2, $0", "=v,v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm1, <8 x float> %_ymm0)
119  ret <8 x float> %0
120}
121
122define <8 x float> @testymm_7(<8 x float> %_ymm0, <8 x float> %_ymm1) {
123; CHECK: error: inline assembly requires more registers than available
124entry:
125  %0 = tail call <8 x float> asm "vmovups $1, $0", "=v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm1)
126  ret <8 x float> %0
127}
128
129define <8 x float> @testymm_8(<8 x float> %_ymm0, <8 x float> %_ymm1) {
130; CHECK: error: inline assembly requires more registers than available
131entry:
132  %0 = tail call <8 x float> asm "vmovupd $1, $0", "=v,v,~{ymm0},~{ymm1},~{ymm2},~{ymm3},~{ymm4},~{ymm5},~{ymm6},~{ymm7},~{dirflag},~{fpsr},~{flags}"(<8 x float> %_ymm1)
133  ret <8 x float> %0
134}
135
136