xref: /llvm-project/llvm/test/CodeGen/X86/x86-interrupt_cc.ll (revision b7e110fcfe22a1f887507dbaa6fdb001630e223d)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -verify-machineinstrs -mtriple=x86_64-apple-macosx -show-mc-encoding -mcpu=knl < %s | FileCheck %s -check-prefix=CHECK64-KNL
3; RUN: llc -verify-machineinstrs -mtriple=x86_64-apple-macosx -show-mc-encoding -mcpu=skx < %s | FileCheck %s -check-prefix=CHECK64-SKX
4; RUN: llc -verify-machineinstrs -mtriple=i386-apple-macosx -show-mc-encoding -mcpu=knl < %s | FileCheck %s -check-prefix=CHECK32-KNL
5; RUN: llc -verify-machineinstrs -mtriple=i386-apple-macosx -show-mc-encoding -mcpu=skx < %s | FileCheck %s -check-prefix=CHECK32-SKX
6
7; Make sure we spill the high numbered zmm registers and K registers with the right encoding.
8
9define x86_intrcc void @foo(ptr byval(i8) %frame) {
10; CHECK64-KNL-LABEL: foo:
11; CHECK64-KNL:       ## %bb.0:
12; CHECK64-KNL-NEXT:    pushq %rax ## encoding: [0x50]
13; CHECK64-KNL-NEXT:    .cfi_def_cfa_offset 16
14; CHECK64-KNL-NEXT:    pushq %r11 ## encoding: [0x41,0x53]
15; CHECK64-KNL-NEXT:    .cfi_def_cfa_offset 24
16; CHECK64-KNL-NEXT:    pushq %r10 ## encoding: [0x41,0x52]
17; CHECK64-KNL-NEXT:    .cfi_def_cfa_offset 32
18; CHECK64-KNL-NEXT:    pushq %r9 ## encoding: [0x41,0x51]
19; CHECK64-KNL-NEXT:    .cfi_def_cfa_offset 40
20; CHECK64-KNL-NEXT:    pushq %r8 ## encoding: [0x41,0x50]
21; CHECK64-KNL-NEXT:    .cfi_def_cfa_offset 48
22; CHECK64-KNL-NEXT:    pushq %rdi ## encoding: [0x57]
23; CHECK64-KNL-NEXT:    .cfi_def_cfa_offset 56
24; CHECK64-KNL-NEXT:    pushq %rsi ## encoding: [0x56]
25; CHECK64-KNL-NEXT:    .cfi_def_cfa_offset 64
26; CHECK64-KNL-NEXT:    pushq %rdx ## encoding: [0x52]
27; CHECK64-KNL-NEXT:    .cfi_def_cfa_offset 72
28; CHECK64-KNL-NEXT:    pushq %rcx ## encoding: [0x51]
29; CHECK64-KNL-NEXT:    .cfi_def_cfa_offset 80
30; CHECK64-KNL-NEXT:    subq $2096, %rsp ## encoding: [0x48,0x81,0xec,0x30,0x08,0x00,0x00]
31; CHECK64-KNL-NEXT:    ## imm = 0x830
32; CHECK64-KNL-NEXT:    kmovw %k7, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
33; CHECK64-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x91,0xbc,0x24,0x2e,0x08,0x00,0x00]
34; CHECK64-KNL-NEXT:    kmovw %k6, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
35; CHECK64-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x91,0xb4,0x24,0x2c,0x08,0x00,0x00]
36; CHECK64-KNL-NEXT:    kmovw %k5, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
37; CHECK64-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x91,0xac,0x24,0x2a,0x08,0x00,0x00]
38; CHECK64-KNL-NEXT:    kmovw %k4, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
39; CHECK64-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x91,0xa4,0x24,0x28,0x08,0x00,0x00]
40; CHECK64-KNL-NEXT:    kmovw %k3, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
41; CHECK64-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x91,0x9c,0x24,0x26,0x08,0x00,0x00]
42; CHECK64-KNL-NEXT:    kmovw %k2, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
43; CHECK64-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x91,0x94,0x24,0x24,0x08,0x00,0x00]
44; CHECK64-KNL-NEXT:    kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
45; CHECK64-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x91,0x8c,0x24,0x22,0x08,0x00,0x00]
46; CHECK64-KNL-NEXT:    kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill
47; CHECK64-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x91,0x84,0x24,0x20,0x08,0x00,0x00]
48; CHECK64-KNL-NEXT:    vmovups %zmm31, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
49; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x11,0x7c,0x24,0x1f]
50; CHECK64-KNL-NEXT:    vmovups %zmm30, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
51; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x11,0x74,0x24,0x1e]
52; CHECK64-KNL-NEXT:    vmovups %zmm29, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
53; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x11,0x6c,0x24,0x1d]
54; CHECK64-KNL-NEXT:    vmovups %zmm28, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
55; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x11,0x64,0x24,0x1c]
56; CHECK64-KNL-NEXT:    vmovups %zmm27, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
57; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x11,0x5c,0x24,0x1b]
58; CHECK64-KNL-NEXT:    vmovups %zmm26, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
59; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x11,0x54,0x24,0x1a]
60; CHECK64-KNL-NEXT:    vmovups %zmm25, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
61; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x11,0x4c,0x24,0x19]
62; CHECK64-KNL-NEXT:    vmovups %zmm24, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
63; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x11,0x44,0x24,0x18]
64; CHECK64-KNL-NEXT:    vmovups %zmm23, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
65; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x11,0x7c,0x24,0x17]
66; CHECK64-KNL-NEXT:    vmovups %zmm22, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
67; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x11,0x74,0x24,0x16]
68; CHECK64-KNL-NEXT:    vmovups %zmm21, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
69; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x11,0x6c,0x24,0x15]
70; CHECK64-KNL-NEXT:    vmovups %zmm20, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
71; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x11,0x64,0x24,0x14]
72; CHECK64-KNL-NEXT:    vmovups %zmm19, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
73; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x11,0x5c,0x24,0x13]
74; CHECK64-KNL-NEXT:    vmovups %zmm18, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
75; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x11,0x54,0x24,0x12]
76; CHECK64-KNL-NEXT:    vmovups %zmm17, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
77; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x11,0x4c,0x24,0x11]
78; CHECK64-KNL-NEXT:    vmovups %zmm16, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
79; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x11,0x44,0x24,0x10]
80; CHECK64-KNL-NEXT:    vmovups %zmm15, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
81; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x11,0x7c,0x24,0x0f]
82; CHECK64-KNL-NEXT:    vmovups %zmm14, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
83; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x11,0x74,0x24,0x0e]
84; CHECK64-KNL-NEXT:    vmovups %zmm13, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
85; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x11,0x6c,0x24,0x0d]
86; CHECK64-KNL-NEXT:    vmovups %zmm12, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
87; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x11,0x64,0x24,0x0c]
88; CHECK64-KNL-NEXT:    vmovups %zmm11, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
89; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x11,0x5c,0x24,0x0b]
90; CHECK64-KNL-NEXT:    vmovups %zmm10, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
91; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x11,0x54,0x24,0x0a]
92; CHECK64-KNL-NEXT:    vmovups %zmm9, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
93; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x11,0x4c,0x24,0x09]
94; CHECK64-KNL-NEXT:    vmovups %zmm8, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
95; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x11,0x44,0x24,0x08]
96; CHECK64-KNL-NEXT:    vmovups %zmm7, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
97; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x7c,0x24,0x07]
98; CHECK64-KNL-NEXT:    vmovups %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
99; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x74,0x24,0x06]
100; CHECK64-KNL-NEXT:    vmovups %zmm5, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
101; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x6c,0x24,0x05]
102; CHECK64-KNL-NEXT:    vmovups %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
103; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x64,0x24,0x04]
104; CHECK64-KNL-NEXT:    vmovups %zmm3, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
105; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x5c,0x24,0x03]
106; CHECK64-KNL-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
107; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x54,0x24,0x02]
108; CHECK64-KNL-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
109; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x4c,0x24,0x01]
110; CHECK64-KNL-NEXT:    vmovups %zmm0, (%rsp) ## 64-byte Spill
111; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x04,0x24]
112; CHECK64-KNL-NEXT:    .cfi_def_cfa_offset 2176
113; CHECK64-KNL-NEXT:    .cfi_offset %rcx, -80
114; CHECK64-KNL-NEXT:    .cfi_offset %rdx, -72
115; CHECK64-KNL-NEXT:    .cfi_offset %rsi, -64
116; CHECK64-KNL-NEXT:    .cfi_offset %rdi, -56
117; CHECK64-KNL-NEXT:    .cfi_offset %r8, -48
118; CHECK64-KNL-NEXT:    .cfi_offset %r9, -40
119; CHECK64-KNL-NEXT:    .cfi_offset %r10, -32
120; CHECK64-KNL-NEXT:    .cfi_offset %r11, -24
121; CHECK64-KNL-NEXT:    .cfi_offset %rax, -16
122; CHECK64-KNL-NEXT:    .cfi_offset %xmm0, -2176
123; CHECK64-KNL-NEXT:    .cfi_offset %xmm1, -2112
124; CHECK64-KNL-NEXT:    .cfi_offset %xmm2, -2048
125; CHECK64-KNL-NEXT:    .cfi_offset %xmm3, -1984
126; CHECK64-KNL-NEXT:    .cfi_offset %xmm4, -1920
127; CHECK64-KNL-NEXT:    .cfi_offset %xmm5, -1856
128; CHECK64-KNL-NEXT:    .cfi_offset %xmm6, -1792
129; CHECK64-KNL-NEXT:    .cfi_offset %xmm7, -1728
130; CHECK64-KNL-NEXT:    .cfi_offset %xmm8, -1664
131; CHECK64-KNL-NEXT:    .cfi_offset %xmm9, -1600
132; CHECK64-KNL-NEXT:    .cfi_offset %xmm10, -1536
133; CHECK64-KNL-NEXT:    .cfi_offset %xmm11, -1472
134; CHECK64-KNL-NEXT:    .cfi_offset %xmm12, -1408
135; CHECK64-KNL-NEXT:    .cfi_offset %xmm13, -1344
136; CHECK64-KNL-NEXT:    .cfi_offset %xmm14, -1280
137; CHECK64-KNL-NEXT:    .cfi_offset %xmm15, -1216
138; CHECK64-KNL-NEXT:    .cfi_offset %xmm16, -1152
139; CHECK64-KNL-NEXT:    .cfi_offset %xmm17, -1088
140; CHECK64-KNL-NEXT:    .cfi_offset %xmm18, -1024
141; CHECK64-KNL-NEXT:    .cfi_offset %xmm19, -960
142; CHECK64-KNL-NEXT:    .cfi_offset %xmm20, -896
143; CHECK64-KNL-NEXT:    .cfi_offset %xmm21, -832
144; CHECK64-KNL-NEXT:    .cfi_offset %xmm22, -768
145; CHECK64-KNL-NEXT:    .cfi_offset %xmm23, -704
146; CHECK64-KNL-NEXT:    .cfi_offset %xmm24, -640
147; CHECK64-KNL-NEXT:    .cfi_offset %xmm25, -576
148; CHECK64-KNL-NEXT:    .cfi_offset %xmm26, -512
149; CHECK64-KNL-NEXT:    .cfi_offset %xmm27, -448
150; CHECK64-KNL-NEXT:    .cfi_offset %xmm28, -384
151; CHECK64-KNL-NEXT:    .cfi_offset %xmm29, -320
152; CHECK64-KNL-NEXT:    .cfi_offset %xmm30, -256
153; CHECK64-KNL-NEXT:    .cfi_offset %xmm31, -192
154; CHECK64-KNL-NEXT:    .cfi_offset %k0, -96
155; CHECK64-KNL-NEXT:    .cfi_offset %k1, -94
156; CHECK64-KNL-NEXT:    .cfi_offset %k2, -92
157; CHECK64-KNL-NEXT:    .cfi_offset %k3, -90
158; CHECK64-KNL-NEXT:    .cfi_offset %k4, -88
159; CHECK64-KNL-NEXT:    .cfi_offset %k5, -86
160; CHECK64-KNL-NEXT:    .cfi_offset %k6, -84
161; CHECK64-KNL-NEXT:    .cfi_offset %k7, -82
162; CHECK64-KNL-NEXT:    cld ## encoding: [0xfc]
163; CHECK64-KNL-NEXT:    callq _bar ## encoding: [0xe8,A,A,A,A]
164; CHECK64-KNL-NEXT:    ## fixup A - offset: 1, value: _bar-4, kind: reloc_branch_4byte_pcrel
165; CHECK64-KNL-NEXT:    vmovups (%rsp), %zmm0 ## 64-byte Reload
166; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x04,0x24]
167; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 ## 64-byte Reload
168; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x4c,0x24,0x01]
169; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 ## 64-byte Reload
170; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x54,0x24,0x02]
171; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 ## 64-byte Reload
172; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x5c,0x24,0x03]
173; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 ## 64-byte Reload
174; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x64,0x24,0x04]
175; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm5 ## 64-byte Reload
176; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x6c,0x24,0x05]
177; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm6 ## 64-byte Reload
178; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x74,0x24,0x06]
179; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm7 ## 64-byte Reload
180; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x7c,0x24,0x07]
181; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm8 ## 64-byte Reload
182; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x10,0x44,0x24,0x08]
183; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm9 ## 64-byte Reload
184; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x10,0x4c,0x24,0x09]
185; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm10 ## 64-byte Reload
186; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x10,0x54,0x24,0x0a]
187; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm11 ## 64-byte Reload
188; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x10,0x5c,0x24,0x0b]
189; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm12 ## 64-byte Reload
190; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x10,0x64,0x24,0x0c]
191; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm13 ## 64-byte Reload
192; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x10,0x6c,0x24,0x0d]
193; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm14 ## 64-byte Reload
194; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x10,0x74,0x24,0x0e]
195; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm15 ## 64-byte Reload
196; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x10,0x7c,0x24,0x0f]
197; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm16 ## 64-byte Reload
198; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x10,0x44,0x24,0x10]
199; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm17 ## 64-byte Reload
200; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x10,0x4c,0x24,0x11]
201; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm18 ## 64-byte Reload
202; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x10,0x54,0x24,0x12]
203; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm19 ## 64-byte Reload
204; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x10,0x5c,0x24,0x13]
205; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm20 ## 64-byte Reload
206; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x10,0x64,0x24,0x14]
207; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm21 ## 64-byte Reload
208; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x10,0x6c,0x24,0x15]
209; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm22 ## 64-byte Reload
210; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x10,0x74,0x24,0x16]
211; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm23 ## 64-byte Reload
212; CHECK64-KNL-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x10,0x7c,0x24,0x17]
213; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm24 ## 64-byte Reload
214; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x10,0x44,0x24,0x18]
215; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm25 ## 64-byte Reload
216; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x10,0x4c,0x24,0x19]
217; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm26 ## 64-byte Reload
218; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x10,0x54,0x24,0x1a]
219; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm27 ## 64-byte Reload
220; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x10,0x5c,0x24,0x1b]
221; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm28 ## 64-byte Reload
222; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x10,0x64,0x24,0x1c]
223; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm29 ## 64-byte Reload
224; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x10,0x6c,0x24,0x1d]
225; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm30 ## 64-byte Reload
226; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x10,0x74,0x24,0x1e]
227; CHECK64-KNL-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm31 ## 64-byte Reload
228; CHECK64-KNL-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x10,0x7c,0x24,0x1f]
229; CHECK64-KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k0 ## 2-byte Reload
230; CHECK64-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x90,0x84,0x24,0x20,0x08,0x00,0x00]
231; CHECK64-KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload
232; CHECK64-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x90,0x8c,0x24,0x22,0x08,0x00,0x00]
233; CHECK64-KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k2 ## 2-byte Reload
234; CHECK64-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x90,0x94,0x24,0x24,0x08,0x00,0x00]
235; CHECK64-KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k3 ## 2-byte Reload
236; CHECK64-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x90,0x9c,0x24,0x26,0x08,0x00,0x00]
237; CHECK64-KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k4 ## 2-byte Reload
238; CHECK64-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x90,0xa4,0x24,0x28,0x08,0x00,0x00]
239; CHECK64-KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k5 ## 2-byte Reload
240; CHECK64-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x90,0xac,0x24,0x2a,0x08,0x00,0x00]
241; CHECK64-KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload
242; CHECK64-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x90,0xb4,0x24,0x2c,0x08,0x00,0x00]
243; CHECK64-KNL-NEXT:    kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k7 ## 2-byte Reload
244; CHECK64-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x90,0xbc,0x24,0x2e,0x08,0x00,0x00]
245; CHECK64-KNL-NEXT:    addq $2096, %rsp ## encoding: [0x48,0x81,0xc4,0x30,0x08,0x00,0x00]
246; CHECK64-KNL-NEXT:    ## imm = 0x830
247; CHECK64-KNL-NEXT:    popq %rcx ## encoding: [0x59]
248; CHECK64-KNL-NEXT:    popq %rdx ## encoding: [0x5a]
249; CHECK64-KNL-NEXT:    popq %rsi ## encoding: [0x5e]
250; CHECK64-KNL-NEXT:    popq %rdi ## encoding: [0x5f]
251; CHECK64-KNL-NEXT:    popq %r8 ## encoding: [0x41,0x58]
252; CHECK64-KNL-NEXT:    popq %r9 ## encoding: [0x41,0x59]
253; CHECK64-KNL-NEXT:    popq %r10 ## encoding: [0x41,0x5a]
254; CHECK64-KNL-NEXT:    popq %r11 ## encoding: [0x41,0x5b]
255; CHECK64-KNL-NEXT:    popq %rax ## encoding: [0x58]
256; CHECK64-KNL-NEXT:    iretq ## encoding: [0x48,0xcf]
257;
258; CHECK64-SKX-LABEL: foo:
259; CHECK64-SKX:       ## %bb.0:
260; CHECK64-SKX-NEXT:    pushq %rax ## encoding: [0x50]
261; CHECK64-SKX-NEXT:    .cfi_def_cfa_offset 16
262; CHECK64-SKX-NEXT:    pushq %r11 ## encoding: [0x41,0x53]
263; CHECK64-SKX-NEXT:    .cfi_def_cfa_offset 24
264; CHECK64-SKX-NEXT:    pushq %r10 ## encoding: [0x41,0x52]
265; CHECK64-SKX-NEXT:    .cfi_def_cfa_offset 32
266; CHECK64-SKX-NEXT:    pushq %r9 ## encoding: [0x41,0x51]
267; CHECK64-SKX-NEXT:    .cfi_def_cfa_offset 40
268; CHECK64-SKX-NEXT:    pushq %r8 ## encoding: [0x41,0x50]
269; CHECK64-SKX-NEXT:    .cfi_def_cfa_offset 48
270; CHECK64-SKX-NEXT:    pushq %rdi ## encoding: [0x57]
271; CHECK64-SKX-NEXT:    .cfi_def_cfa_offset 56
272; CHECK64-SKX-NEXT:    pushq %rsi ## encoding: [0x56]
273; CHECK64-SKX-NEXT:    .cfi_def_cfa_offset 64
274; CHECK64-SKX-NEXT:    pushq %rdx ## encoding: [0x52]
275; CHECK64-SKX-NEXT:    .cfi_def_cfa_offset 72
276; CHECK64-SKX-NEXT:    pushq %rcx ## encoding: [0x51]
277; CHECK64-SKX-NEXT:    .cfi_def_cfa_offset 80
278; CHECK64-SKX-NEXT:    subq $2160, %rsp ## encoding: [0x48,0x81,0xec,0x70,0x08,0x00,0x00]
279; CHECK64-SKX-NEXT:    ## imm = 0x870
280; CHECK64-SKX-NEXT:    kmovq %k7, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill
281; CHECK64-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x91,0xbc,0x24,0x68,0x08,0x00,0x00]
282; CHECK64-SKX-NEXT:    kmovq %k6, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill
283; CHECK64-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x91,0xb4,0x24,0x60,0x08,0x00,0x00]
284; CHECK64-SKX-NEXT:    kmovq %k5, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill
285; CHECK64-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x91,0xac,0x24,0x58,0x08,0x00,0x00]
286; CHECK64-SKX-NEXT:    kmovq %k4, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill
287; CHECK64-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x91,0xa4,0x24,0x50,0x08,0x00,0x00]
288; CHECK64-SKX-NEXT:    kmovq %k3, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill
289; CHECK64-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x91,0x9c,0x24,0x48,0x08,0x00,0x00]
290; CHECK64-SKX-NEXT:    kmovq %k2, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill
291; CHECK64-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x91,0x94,0x24,0x40,0x08,0x00,0x00]
292; CHECK64-SKX-NEXT:    kmovq %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill
293; CHECK64-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x91,0x8c,0x24,0x38,0x08,0x00,0x00]
294; CHECK64-SKX-NEXT:    kmovq %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill
295; CHECK64-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x91,0x84,0x24,0x30,0x08,0x00,0x00]
296; CHECK64-SKX-NEXT:    vmovups %zmm31, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
297; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x11,0x7c,0x24,0x1f]
298; CHECK64-SKX-NEXT:    vmovups %zmm30, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
299; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x11,0x74,0x24,0x1e]
300; CHECK64-SKX-NEXT:    vmovups %zmm29, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
301; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x11,0x6c,0x24,0x1d]
302; CHECK64-SKX-NEXT:    vmovups %zmm28, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
303; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x11,0x64,0x24,0x1c]
304; CHECK64-SKX-NEXT:    vmovups %zmm27, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
305; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x11,0x5c,0x24,0x1b]
306; CHECK64-SKX-NEXT:    vmovups %zmm26, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
307; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x11,0x54,0x24,0x1a]
308; CHECK64-SKX-NEXT:    vmovups %zmm25, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
309; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x11,0x4c,0x24,0x19]
310; CHECK64-SKX-NEXT:    vmovups %zmm24, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
311; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x11,0x44,0x24,0x18]
312; CHECK64-SKX-NEXT:    vmovups %zmm23, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
313; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x11,0x7c,0x24,0x17]
314; CHECK64-SKX-NEXT:    vmovups %zmm22, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
315; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x11,0x74,0x24,0x16]
316; CHECK64-SKX-NEXT:    vmovups %zmm21, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
317; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x11,0x6c,0x24,0x15]
318; CHECK64-SKX-NEXT:    vmovups %zmm20, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
319; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x11,0x64,0x24,0x14]
320; CHECK64-SKX-NEXT:    vmovups %zmm19, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
321; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x11,0x5c,0x24,0x13]
322; CHECK64-SKX-NEXT:    vmovups %zmm18, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
323; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x11,0x54,0x24,0x12]
324; CHECK64-SKX-NEXT:    vmovups %zmm17, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
325; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x11,0x4c,0x24,0x11]
326; CHECK64-SKX-NEXT:    vmovups %zmm16, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
327; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x11,0x44,0x24,0x10]
328; CHECK64-SKX-NEXT:    vmovups %zmm15, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
329; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x11,0x7c,0x24,0x0f]
330; CHECK64-SKX-NEXT:    vmovups %zmm14, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
331; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x11,0x74,0x24,0x0e]
332; CHECK64-SKX-NEXT:    vmovups %zmm13, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
333; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x11,0x6c,0x24,0x0d]
334; CHECK64-SKX-NEXT:    vmovups %zmm12, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
335; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x11,0x64,0x24,0x0c]
336; CHECK64-SKX-NEXT:    vmovups %zmm11, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
337; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x11,0x5c,0x24,0x0b]
338; CHECK64-SKX-NEXT:    vmovups %zmm10, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
339; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x11,0x54,0x24,0x0a]
340; CHECK64-SKX-NEXT:    vmovups %zmm9, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
341; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x11,0x4c,0x24,0x09]
342; CHECK64-SKX-NEXT:    vmovups %zmm8, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
343; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x11,0x44,0x24,0x08]
344; CHECK64-SKX-NEXT:    vmovups %zmm7, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
345; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x7c,0x24,0x07]
346; CHECK64-SKX-NEXT:    vmovups %zmm6, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
347; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x74,0x24,0x06]
348; CHECK64-SKX-NEXT:    vmovups %zmm5, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
349; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x6c,0x24,0x05]
350; CHECK64-SKX-NEXT:    vmovups %zmm4, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
351; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x64,0x24,0x04]
352; CHECK64-SKX-NEXT:    vmovups %zmm3, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
353; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x5c,0x24,0x03]
354; CHECK64-SKX-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
355; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x54,0x24,0x02]
356; CHECK64-SKX-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) ## 64-byte Spill
357; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x4c,0x24,0x01]
358; CHECK64-SKX-NEXT:    vmovups %zmm0, (%rsp) ## 64-byte Spill
359; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x04,0x24]
360; CHECK64-SKX-NEXT:    .cfi_def_cfa_offset 2240
361; CHECK64-SKX-NEXT:    .cfi_offset %rcx, -80
362; CHECK64-SKX-NEXT:    .cfi_offset %rdx, -72
363; CHECK64-SKX-NEXT:    .cfi_offset %rsi, -64
364; CHECK64-SKX-NEXT:    .cfi_offset %rdi, -56
365; CHECK64-SKX-NEXT:    .cfi_offset %r8, -48
366; CHECK64-SKX-NEXT:    .cfi_offset %r9, -40
367; CHECK64-SKX-NEXT:    .cfi_offset %r10, -32
368; CHECK64-SKX-NEXT:    .cfi_offset %r11, -24
369; CHECK64-SKX-NEXT:    .cfi_offset %rax, -16
370; CHECK64-SKX-NEXT:    .cfi_offset %xmm0, -2240
371; CHECK64-SKX-NEXT:    .cfi_offset %xmm1, -2176
372; CHECK64-SKX-NEXT:    .cfi_offset %xmm2, -2112
373; CHECK64-SKX-NEXT:    .cfi_offset %xmm3, -2048
374; CHECK64-SKX-NEXT:    .cfi_offset %xmm4, -1984
375; CHECK64-SKX-NEXT:    .cfi_offset %xmm5, -1920
376; CHECK64-SKX-NEXT:    .cfi_offset %xmm6, -1856
377; CHECK64-SKX-NEXT:    .cfi_offset %xmm7, -1792
378; CHECK64-SKX-NEXT:    .cfi_offset %xmm8, -1728
379; CHECK64-SKX-NEXT:    .cfi_offset %xmm9, -1664
380; CHECK64-SKX-NEXT:    .cfi_offset %xmm10, -1600
381; CHECK64-SKX-NEXT:    .cfi_offset %xmm11, -1536
382; CHECK64-SKX-NEXT:    .cfi_offset %xmm12, -1472
383; CHECK64-SKX-NEXT:    .cfi_offset %xmm13, -1408
384; CHECK64-SKX-NEXT:    .cfi_offset %xmm14, -1344
385; CHECK64-SKX-NEXT:    .cfi_offset %xmm15, -1280
386; CHECK64-SKX-NEXT:    .cfi_offset %xmm16, -1216
387; CHECK64-SKX-NEXT:    .cfi_offset %xmm17, -1152
388; CHECK64-SKX-NEXT:    .cfi_offset %xmm18, -1088
389; CHECK64-SKX-NEXT:    .cfi_offset %xmm19, -1024
390; CHECK64-SKX-NEXT:    .cfi_offset %xmm20, -960
391; CHECK64-SKX-NEXT:    .cfi_offset %xmm21, -896
392; CHECK64-SKX-NEXT:    .cfi_offset %xmm22, -832
393; CHECK64-SKX-NEXT:    .cfi_offset %xmm23, -768
394; CHECK64-SKX-NEXT:    .cfi_offset %xmm24, -704
395; CHECK64-SKX-NEXT:    .cfi_offset %xmm25, -640
396; CHECK64-SKX-NEXT:    .cfi_offset %xmm26, -576
397; CHECK64-SKX-NEXT:    .cfi_offset %xmm27, -512
398; CHECK64-SKX-NEXT:    .cfi_offset %xmm28, -448
399; CHECK64-SKX-NEXT:    .cfi_offset %xmm29, -384
400; CHECK64-SKX-NEXT:    .cfi_offset %xmm30, -320
401; CHECK64-SKX-NEXT:    .cfi_offset %xmm31, -256
402; CHECK64-SKX-NEXT:    .cfi_offset %k0, -144
403; CHECK64-SKX-NEXT:    .cfi_offset %k1, -136
404; CHECK64-SKX-NEXT:    .cfi_offset %k2, -128
405; CHECK64-SKX-NEXT:    .cfi_offset %k3, -120
406; CHECK64-SKX-NEXT:    .cfi_offset %k4, -112
407; CHECK64-SKX-NEXT:    .cfi_offset %k5, -104
408; CHECK64-SKX-NEXT:    .cfi_offset %k6, -96
409; CHECK64-SKX-NEXT:    .cfi_offset %k7, -88
410; CHECK64-SKX-NEXT:    cld ## encoding: [0xfc]
411; CHECK64-SKX-NEXT:    vzeroupper ## encoding: [0xc5,0xf8,0x77]
412; CHECK64-SKX-NEXT:    callq _bar ## encoding: [0xe8,A,A,A,A]
413; CHECK64-SKX-NEXT:    ## fixup A - offset: 1, value: _bar-4, kind: reloc_branch_4byte_pcrel
414; CHECK64-SKX-NEXT:    vmovups (%rsp), %zmm0 ## 64-byte Reload
415; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x04,0x24]
416; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm1 ## 64-byte Reload
417; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x4c,0x24,0x01]
418; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm2 ## 64-byte Reload
419; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x54,0x24,0x02]
420; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm3 ## 64-byte Reload
421; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x5c,0x24,0x03]
422; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm4 ## 64-byte Reload
423; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x64,0x24,0x04]
424; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm5 ## 64-byte Reload
425; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x6c,0x24,0x05]
426; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm6 ## 64-byte Reload
427; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x74,0x24,0x06]
428; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm7 ## 64-byte Reload
429; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x7c,0x24,0x07]
430; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm8 ## 64-byte Reload
431; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x10,0x44,0x24,0x08]
432; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm9 ## 64-byte Reload
433; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x10,0x4c,0x24,0x09]
434; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm10 ## 64-byte Reload
435; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x10,0x54,0x24,0x0a]
436; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm11 ## 64-byte Reload
437; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x10,0x5c,0x24,0x0b]
438; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm12 ## 64-byte Reload
439; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x10,0x64,0x24,0x0c]
440; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm13 ## 64-byte Reload
441; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x10,0x6c,0x24,0x0d]
442; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm14 ## 64-byte Reload
443; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x10,0x74,0x24,0x0e]
444; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm15 ## 64-byte Reload
445; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x71,0x7c,0x48,0x10,0x7c,0x24,0x0f]
446; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm16 ## 64-byte Reload
447; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x10,0x44,0x24,0x10]
448; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm17 ## 64-byte Reload
449; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x10,0x4c,0x24,0x11]
450; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm18 ## 64-byte Reload
451; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x10,0x54,0x24,0x12]
452; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm19 ## 64-byte Reload
453; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x10,0x5c,0x24,0x13]
454; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm20 ## 64-byte Reload
455; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x10,0x64,0x24,0x14]
456; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm21 ## 64-byte Reload
457; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x10,0x6c,0x24,0x15]
458; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm22 ## 64-byte Reload
459; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x10,0x74,0x24,0x16]
460; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm23 ## 64-byte Reload
461; CHECK64-SKX-NEXT:    ## encoding: [0x62,0xe1,0x7c,0x48,0x10,0x7c,0x24,0x17]
462; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm24 ## 64-byte Reload
463; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x10,0x44,0x24,0x18]
464; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm25 ## 64-byte Reload
465; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x10,0x4c,0x24,0x19]
466; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm26 ## 64-byte Reload
467; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x10,0x54,0x24,0x1a]
468; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm27 ## 64-byte Reload
469; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x10,0x5c,0x24,0x1b]
470; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm28 ## 64-byte Reload
471; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x10,0x64,0x24,0x1c]
472; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm29 ## 64-byte Reload
473; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x10,0x6c,0x24,0x1d]
474; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm30 ## 64-byte Reload
475; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x10,0x74,0x24,0x1e]
476; CHECK64-SKX-NEXT:    vmovups {{[-0-9]+}}(%r{{[sb]}}p), %zmm31 ## 64-byte Reload
477; CHECK64-SKX-NEXT:    ## encoding: [0x62,0x61,0x7c,0x48,0x10,0x7c,0x24,0x1f]
478; CHECK64-SKX-NEXT:    kmovq {{[-0-9]+}}(%r{{[sb]}}p), %k0 ## 8-byte Reload
479; CHECK64-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x90,0x84,0x24,0x30,0x08,0x00,0x00]
480; CHECK64-SKX-NEXT:    kmovq {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 8-byte Reload
481; CHECK64-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x90,0x8c,0x24,0x38,0x08,0x00,0x00]
482; CHECK64-SKX-NEXT:    kmovq {{[-0-9]+}}(%r{{[sb]}}p), %k2 ## 8-byte Reload
483; CHECK64-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x90,0x94,0x24,0x40,0x08,0x00,0x00]
484; CHECK64-SKX-NEXT:    kmovq {{[-0-9]+}}(%r{{[sb]}}p), %k3 ## 8-byte Reload
485; CHECK64-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x90,0x9c,0x24,0x48,0x08,0x00,0x00]
486; CHECK64-SKX-NEXT:    kmovq {{[-0-9]+}}(%r{{[sb]}}p), %k4 ## 8-byte Reload
487; CHECK64-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x90,0xa4,0x24,0x50,0x08,0x00,0x00]
488; CHECK64-SKX-NEXT:    kmovq {{[-0-9]+}}(%r{{[sb]}}p), %k5 ## 8-byte Reload
489; CHECK64-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x90,0xac,0x24,0x58,0x08,0x00,0x00]
490; CHECK64-SKX-NEXT:    kmovq {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 8-byte Reload
491; CHECK64-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x90,0xb4,0x24,0x60,0x08,0x00,0x00]
492; CHECK64-SKX-NEXT:    kmovq {{[-0-9]+}}(%r{{[sb]}}p), %k7 ## 8-byte Reload
493; CHECK64-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x90,0xbc,0x24,0x68,0x08,0x00,0x00]
494; CHECK64-SKX-NEXT:    addq $2160, %rsp ## encoding: [0x48,0x81,0xc4,0x70,0x08,0x00,0x00]
495; CHECK64-SKX-NEXT:    ## imm = 0x870
496; CHECK64-SKX-NEXT:    popq %rcx ## encoding: [0x59]
497; CHECK64-SKX-NEXT:    popq %rdx ## encoding: [0x5a]
498; CHECK64-SKX-NEXT:    popq %rsi ## encoding: [0x5e]
499; CHECK64-SKX-NEXT:    popq %rdi ## encoding: [0x5f]
500; CHECK64-SKX-NEXT:    popq %r8 ## encoding: [0x41,0x58]
501; CHECK64-SKX-NEXT:    popq %r9 ## encoding: [0x41,0x59]
502; CHECK64-SKX-NEXT:    popq %r10 ## encoding: [0x41,0x5a]
503; CHECK64-SKX-NEXT:    popq %r11 ## encoding: [0x41,0x5b]
504; CHECK64-SKX-NEXT:    popq %rax ## encoding: [0x58]
505; CHECK64-SKX-NEXT:    iretq ## encoding: [0x48,0xcf]
506;
507; CHECK32-KNL-LABEL: foo:
508; CHECK32-KNL:       ## %bb.0:
509; CHECK32-KNL-NEXT:    pushl %ebp ## encoding: [0x55]
510; CHECK32-KNL-NEXT:    .cfi_def_cfa_offset 8
511; CHECK32-KNL-NEXT:    .cfi_offset %ebp, -8
512; CHECK32-KNL-NEXT:    movl %esp, %ebp ## encoding: [0x89,0xe5]
513; CHECK32-KNL-NEXT:    .cfi_def_cfa_register %ebp
514; CHECK32-KNL-NEXT:    pushl %edx ## encoding: [0x52]
515; CHECK32-KNL-NEXT:    pushl %ecx ## encoding: [0x51]
516; CHECK32-KNL-NEXT:    pushl %eax ## encoding: [0x50]
517; CHECK32-KNL-NEXT:    andl $-16, %esp ## encoding: [0x83,0xe4,0xf0]
518; CHECK32-KNL-NEXT:    subl $560, %esp ## encoding: [0x81,0xec,0x30,0x02,0x00,0x00]
519; CHECK32-KNL-NEXT:    ## imm = 0x230
520; CHECK32-KNL-NEXT:    kmovw %k7, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
521; CHECK32-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x91,0x7d,0xf2]
522; CHECK32-KNL-NEXT:    kmovw %k6, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
523; CHECK32-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x91,0x75,0xf0]
524; CHECK32-KNL-NEXT:    kmovw %k5, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
525; CHECK32-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x91,0x6d,0xee]
526; CHECK32-KNL-NEXT:    kmovw %k4, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
527; CHECK32-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x91,0x65,0xec]
528; CHECK32-KNL-NEXT:    kmovw %k3, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
529; CHECK32-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x91,0x5d,0xea]
530; CHECK32-KNL-NEXT:    kmovw %k2, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
531; CHECK32-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x91,0x55,0xe8]
532; CHECK32-KNL-NEXT:    kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
533; CHECK32-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x91,0x4d,0xe6]
534; CHECK32-KNL-NEXT:    kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill
535; CHECK32-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x91,0x45,0xe4]
536; CHECK32-KNL-NEXT:    vmovups %zmm7, {{[-0-9]+}}(%e{{[sb]}}p) ## 64-byte Spill
537; CHECK32-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0xbd,0x88,0xff,0xff,0xff]
538; CHECK32-KNL-NEXT:    vmovups %zmm6, {{[-0-9]+}}(%e{{[sb]}}p) ## 64-byte Spill
539; CHECK32-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0xb5,0x48,0xff,0xff,0xff]
540; CHECK32-KNL-NEXT:    vmovups %zmm5, {{[-0-9]+}}(%e{{[sb]}}p) ## 64-byte Spill
541; CHECK32-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0xad,0x08,0xff,0xff,0xff]
542; CHECK32-KNL-NEXT:    vmovups %zmm4, {{[-0-9]+}}(%e{{[sb]}}p) ## 64-byte Spill
543; CHECK32-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0xa5,0xc8,0xfe,0xff,0xff]
544; CHECK32-KNL-NEXT:    vmovups %zmm3, {{[-0-9]+}}(%e{{[sb]}}p) ## 64-byte Spill
545; CHECK32-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x9d,0x88,0xfe,0xff,0xff]
546; CHECK32-KNL-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%e{{[sb]}}p) ## 64-byte Spill
547; CHECK32-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x95,0x48,0xfe,0xff,0xff]
548; CHECK32-KNL-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%e{{[sb]}}p) ## 64-byte Spill
549; CHECK32-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x8d,0x08,0xfe,0xff,0xff]
550; CHECK32-KNL-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 64-byte Spill
551; CHECK32-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x85,0xc8,0xfd,0xff,0xff]
552; CHECK32-KNL-NEXT:    .cfi_offset %eax, -20
553; CHECK32-KNL-NEXT:    .cfi_offset %ecx, -16
554; CHECK32-KNL-NEXT:    .cfi_offset %edx, -12
555; CHECK32-KNL-NEXT:    .cfi_offset %xmm0, -576
556; CHECK32-KNL-NEXT:    .cfi_offset %xmm1, -512
557; CHECK32-KNL-NEXT:    .cfi_offset %xmm2, -448
558; CHECK32-KNL-NEXT:    .cfi_offset %xmm3, -384
559; CHECK32-KNL-NEXT:    .cfi_offset %xmm4, -320
560; CHECK32-KNL-NEXT:    .cfi_offset %xmm5, -256
561; CHECK32-KNL-NEXT:    .cfi_offset %xmm6, -192
562; CHECK32-KNL-NEXT:    .cfi_offset %xmm7, -128
563; CHECK32-KNL-NEXT:    .cfi_offset %k0, -36
564; CHECK32-KNL-NEXT:    .cfi_offset %k1, -34
565; CHECK32-KNL-NEXT:    .cfi_offset %k2, -32
566; CHECK32-KNL-NEXT:    .cfi_offset %k3, -30
567; CHECK32-KNL-NEXT:    .cfi_offset %k4, -28
568; CHECK32-KNL-NEXT:    .cfi_offset %k5, -26
569; CHECK32-KNL-NEXT:    .cfi_offset %k6, -24
570; CHECK32-KNL-NEXT:    .cfi_offset %k7, -22
571; CHECK32-KNL-NEXT:    cld ## encoding: [0xfc]
572; CHECK32-KNL-NEXT:    calll _bar ## encoding: [0xe8,A,A,A,A]
573; CHECK32-KNL-NEXT:    ## fixup A - offset: 1, value: _bar-4, kind: FK_PCRel_4
574; CHECK32-KNL-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %zmm0 ## 64-byte Reload
575; CHECK32-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x85,0xc8,0xfd,0xff,0xff]
576; CHECK32-KNL-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %zmm1 ## 64-byte Reload
577; CHECK32-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x8d,0x08,0xfe,0xff,0xff]
578; CHECK32-KNL-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %zmm2 ## 64-byte Reload
579; CHECK32-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x95,0x48,0xfe,0xff,0xff]
580; CHECK32-KNL-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %zmm3 ## 64-byte Reload
581; CHECK32-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x9d,0x88,0xfe,0xff,0xff]
582; CHECK32-KNL-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %zmm4 ## 64-byte Reload
583; CHECK32-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0xa5,0xc8,0xfe,0xff,0xff]
584; CHECK32-KNL-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %zmm5 ## 64-byte Reload
585; CHECK32-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0xad,0x08,0xff,0xff,0xff]
586; CHECK32-KNL-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %zmm6 ## 64-byte Reload
587; CHECK32-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0xb5,0x48,0xff,0xff,0xff]
588; CHECK32-KNL-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %zmm7 ## 64-byte Reload
589; CHECK32-KNL-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0xbd,0x88,0xff,0xff,0xff]
590; CHECK32-KNL-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k0 ## 2-byte Reload
591; CHECK32-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x90,0x45,0xe4]
592; CHECK32-KNL-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload
593; CHECK32-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x90,0x4d,0xe6]
594; CHECK32-KNL-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k2 ## 2-byte Reload
595; CHECK32-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x90,0x55,0xe8]
596; CHECK32-KNL-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k3 ## 2-byte Reload
597; CHECK32-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x90,0x5d,0xea]
598; CHECK32-KNL-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k4 ## 2-byte Reload
599; CHECK32-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x90,0x65,0xec]
600; CHECK32-KNL-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k5 ## 2-byte Reload
601; CHECK32-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x90,0x6d,0xee]
602; CHECK32-KNL-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload
603; CHECK32-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x90,0x75,0xf0]
604; CHECK32-KNL-NEXT:    kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k7 ## 2-byte Reload
605; CHECK32-KNL-NEXT:    ## encoding: [0xc5,0xf8,0x90,0x7d,0xf2]
606; CHECK32-KNL-NEXT:    leal -12(%ebp), %esp ## encoding: [0x8d,0x65,0xf4]
607; CHECK32-KNL-NEXT:    popl %eax ## encoding: [0x58]
608; CHECK32-KNL-NEXT:    popl %ecx ## encoding: [0x59]
609; CHECK32-KNL-NEXT:    popl %edx ## encoding: [0x5a]
610; CHECK32-KNL-NEXT:    popl %ebp ## encoding: [0x5d]
611; CHECK32-KNL-NEXT:    iretl ## encoding: [0xcf]
612;
613; CHECK32-SKX-LABEL: foo:
614; CHECK32-SKX:       ## %bb.0:
615; CHECK32-SKX-NEXT:    pushl %ebp ## encoding: [0x55]
616; CHECK32-SKX-NEXT:    .cfi_def_cfa_offset 8
617; CHECK32-SKX-NEXT:    .cfi_offset %ebp, -8
618; CHECK32-SKX-NEXT:    movl %esp, %ebp ## encoding: [0x89,0xe5]
619; CHECK32-SKX-NEXT:    .cfi_def_cfa_register %ebp
620; CHECK32-SKX-NEXT:    pushl %edx ## encoding: [0x52]
621; CHECK32-SKX-NEXT:    pushl %ecx ## encoding: [0x51]
622; CHECK32-SKX-NEXT:    pushl %eax ## encoding: [0x50]
623; CHECK32-SKX-NEXT:    andl $-16, %esp ## encoding: [0x83,0xe4,0xf0]
624; CHECK32-SKX-NEXT:    subl $624, %esp ## encoding: [0x81,0xec,0x70,0x02,0x00,0x00]
625; CHECK32-SKX-NEXT:    ## imm = 0x270
626; CHECK32-SKX-NEXT:    kmovq %k7, {{[-0-9]+}}(%e{{[sb]}}p) ## 8-byte Spill
627; CHECK32-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x91,0x7d,0xe8]
628; CHECK32-SKX-NEXT:    kmovq %k6, {{[-0-9]+}}(%e{{[sb]}}p) ## 8-byte Spill
629; CHECK32-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x91,0x75,0xe0]
630; CHECK32-SKX-NEXT:    kmovq %k5, {{[-0-9]+}}(%e{{[sb]}}p) ## 8-byte Spill
631; CHECK32-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x91,0x6d,0xd8]
632; CHECK32-SKX-NEXT:    kmovq %k4, {{[-0-9]+}}(%e{{[sb]}}p) ## 8-byte Spill
633; CHECK32-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x91,0x65,0xd0]
634; CHECK32-SKX-NEXT:    kmovq %k3, {{[-0-9]+}}(%e{{[sb]}}p) ## 8-byte Spill
635; CHECK32-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x91,0x5d,0xc8]
636; CHECK32-SKX-NEXT:    kmovq %k2, {{[-0-9]+}}(%e{{[sb]}}p) ## 8-byte Spill
637; CHECK32-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x91,0x55,0xc0]
638; CHECK32-SKX-NEXT:    kmovq %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 8-byte Spill
639; CHECK32-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x91,0x4d,0xb8]
640; CHECK32-SKX-NEXT:    kmovq %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 8-byte Spill
641; CHECK32-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x91,0x45,0xb0]
642; CHECK32-SKX-NEXT:    vmovups %zmm7, {{[-0-9]+}}(%e{{[sb]}}p) ## 64-byte Spill
643; CHECK32-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0xbd,0x48,0xff,0xff,0xff]
644; CHECK32-SKX-NEXT:    vmovups %zmm6, {{[-0-9]+}}(%e{{[sb]}}p) ## 64-byte Spill
645; CHECK32-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0xb5,0x08,0xff,0xff,0xff]
646; CHECK32-SKX-NEXT:    vmovups %zmm5, {{[-0-9]+}}(%e{{[sb]}}p) ## 64-byte Spill
647; CHECK32-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0xad,0xc8,0xfe,0xff,0xff]
648; CHECK32-SKX-NEXT:    vmovups %zmm4, {{[-0-9]+}}(%e{{[sb]}}p) ## 64-byte Spill
649; CHECK32-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0xa5,0x88,0xfe,0xff,0xff]
650; CHECK32-SKX-NEXT:    vmovups %zmm3, {{[-0-9]+}}(%e{{[sb]}}p) ## 64-byte Spill
651; CHECK32-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x9d,0x48,0xfe,0xff,0xff]
652; CHECK32-SKX-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%e{{[sb]}}p) ## 64-byte Spill
653; CHECK32-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x95,0x08,0xfe,0xff,0xff]
654; CHECK32-SKX-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%e{{[sb]}}p) ## 64-byte Spill
655; CHECK32-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x8d,0xc8,0xfd,0xff,0xff]
656; CHECK32-SKX-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 64-byte Spill
657; CHECK32-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x11,0x85,0x88,0xfd,0xff,0xff]
658; CHECK32-SKX-NEXT:    .cfi_offset %eax, -20
659; CHECK32-SKX-NEXT:    .cfi_offset %ecx, -16
660; CHECK32-SKX-NEXT:    .cfi_offset %edx, -12
661; CHECK32-SKX-NEXT:    .cfi_offset %xmm0, -640
662; CHECK32-SKX-NEXT:    .cfi_offset %xmm1, -576
663; CHECK32-SKX-NEXT:    .cfi_offset %xmm2, -512
664; CHECK32-SKX-NEXT:    .cfi_offset %xmm3, -448
665; CHECK32-SKX-NEXT:    .cfi_offset %xmm4, -384
666; CHECK32-SKX-NEXT:    .cfi_offset %xmm5, -320
667; CHECK32-SKX-NEXT:    .cfi_offset %xmm6, -256
668; CHECK32-SKX-NEXT:    .cfi_offset %xmm7, -192
669; CHECK32-SKX-NEXT:    .cfi_offset %k0, -88
670; CHECK32-SKX-NEXT:    .cfi_offset %k1, -80
671; CHECK32-SKX-NEXT:    .cfi_offset %k2, -72
672; CHECK32-SKX-NEXT:    .cfi_offset %k3, -64
673; CHECK32-SKX-NEXT:    .cfi_offset %k4, -56
674; CHECK32-SKX-NEXT:    .cfi_offset %k5, -48
675; CHECK32-SKX-NEXT:    .cfi_offset %k6, -40
676; CHECK32-SKX-NEXT:    .cfi_offset %k7, -32
677; CHECK32-SKX-NEXT:    cld ## encoding: [0xfc]
678; CHECK32-SKX-NEXT:    vzeroupper ## encoding: [0xc5,0xf8,0x77]
679; CHECK32-SKX-NEXT:    calll _bar ## encoding: [0xe8,A,A,A,A]
680; CHECK32-SKX-NEXT:    ## fixup A - offset: 1, value: _bar-4, kind: FK_PCRel_4
681; CHECK32-SKX-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %zmm0 ## 64-byte Reload
682; CHECK32-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x85,0x88,0xfd,0xff,0xff]
683; CHECK32-SKX-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %zmm1 ## 64-byte Reload
684; CHECK32-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x8d,0xc8,0xfd,0xff,0xff]
685; CHECK32-SKX-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %zmm2 ## 64-byte Reload
686; CHECK32-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x95,0x08,0xfe,0xff,0xff]
687; CHECK32-SKX-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %zmm3 ## 64-byte Reload
688; CHECK32-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0x9d,0x48,0xfe,0xff,0xff]
689; CHECK32-SKX-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %zmm4 ## 64-byte Reload
690; CHECK32-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0xa5,0x88,0xfe,0xff,0xff]
691; CHECK32-SKX-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %zmm5 ## 64-byte Reload
692; CHECK32-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0xad,0xc8,0xfe,0xff,0xff]
693; CHECK32-SKX-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %zmm6 ## 64-byte Reload
694; CHECK32-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0xb5,0x08,0xff,0xff,0xff]
695; CHECK32-SKX-NEXT:    vmovups {{[-0-9]+}}(%e{{[sb]}}p), %zmm7 ## 64-byte Reload
696; CHECK32-SKX-NEXT:    ## encoding: [0x62,0xf1,0x7c,0x48,0x10,0xbd,0x48,0xff,0xff,0xff]
697; CHECK32-SKX-NEXT:    kmovq {{[-0-9]+}}(%e{{[sb]}}p), %k0 ## 8-byte Reload
698; CHECK32-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x90,0x45,0xb0]
699; CHECK32-SKX-NEXT:    kmovq {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 8-byte Reload
700; CHECK32-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x90,0x4d,0xb8]
701; CHECK32-SKX-NEXT:    kmovq {{[-0-9]+}}(%e{{[sb]}}p), %k2 ## 8-byte Reload
702; CHECK32-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x90,0x55,0xc0]
703; CHECK32-SKX-NEXT:    kmovq {{[-0-9]+}}(%e{{[sb]}}p), %k3 ## 8-byte Reload
704; CHECK32-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x90,0x5d,0xc8]
705; CHECK32-SKX-NEXT:    kmovq {{[-0-9]+}}(%e{{[sb]}}p), %k4 ## 8-byte Reload
706; CHECK32-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x90,0x65,0xd0]
707; CHECK32-SKX-NEXT:    kmovq {{[-0-9]+}}(%e{{[sb]}}p), %k5 ## 8-byte Reload
708; CHECK32-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x90,0x6d,0xd8]
709; CHECK32-SKX-NEXT:    kmovq {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 8-byte Reload
710; CHECK32-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x90,0x75,0xe0]
711; CHECK32-SKX-NEXT:    kmovq {{[-0-9]+}}(%e{{[sb]}}p), %k7 ## 8-byte Reload
712; CHECK32-SKX-NEXT:    ## encoding: [0xc4,0xe1,0xf8,0x90,0x7d,0xe8]
713; CHECK32-SKX-NEXT:    leal -12(%ebp), %esp ## encoding: [0x8d,0x65,0xf4]
714; CHECK32-SKX-NEXT:    popl %eax ## encoding: [0x58]
715; CHECK32-SKX-NEXT:    popl %ecx ## encoding: [0x59]
716; CHECK32-SKX-NEXT:    popl %edx ## encoding: [0x5a]
717; CHECK32-SKX-NEXT:    popl %ebp ## encoding: [0x5d]
718; CHECK32-SKX-NEXT:    iretl ## encoding: [0xcf]
719  call void @bar()
720  ret void
721}
722
723declare void @bar()
724
725