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