980 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -O0 -mtriple=x86_64-unknown-unknown -mattr=+amx-int8 -mattr=+avx512f | FileCheck %s --check-prefix=AVX5123 4%struct.__tile1024i_str = type <{ i16, i16, [60 x i8], <256 x i32> }>5@buf = dso_local global [1024 x i8] zeroinitializer, align 166@buf2 = dso_local global [1024 x i8] zeroinitializer, align 167 8define dso_local void @test_api(i32 %cond, i16 signext %row, i16 signext %col) #0 {9; AVX512-LABEL: test_api:10; AVX512: # %bb.0: # %entry11; AVX512-NEXT: pushq %rbp12; AVX512-NEXT: movq %rsp, %rbp13; AVX512-NEXT: andq $-1024, %rsp # imm = 0xFC0014; AVX512-NEXT: subq $25600, %rsp # imm = 0x640015; AVX512-NEXT: vxorps %xmm0, %xmm0, %xmm016; AVX512-NEXT: vmovups %zmm0, {{[0-9]+}}(%rsp)17; AVX512-NEXT: movb $1, {{[0-9]+}}(%rsp)18; AVX512-NEXT: movw %dx, %ax19; AVX512-NEXT: movw %si, %cx20; AVX512-NEXT: movl %edi, {{[0-9]+}}(%rsp)21; AVX512-NEXT: movw %cx, {{[0-9]+}}(%rsp)22; AVX512-NEXT: movw %ax, {{[0-9]+}}(%rsp)23; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rdi24; AVX512-NEXT: xorl %esi, %esi25; AVX512-NEXT: movl $1088, %edx # imm = 0x44026; AVX512-NEXT: vzeroupper27; AVX512-NEXT: callq memset@PLT28; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %ax29; AVX512-NEXT: movw %ax, {{[0-9]+}}(%rsp)30; AVX512-NEXT: movw $8, {{[0-9]+}}(%rsp)31; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rdi32; AVX512-NEXT: xorl %esi, %esi33; AVX512-NEXT: movl $1088, %edx # imm = 0x44034; AVX512-NEXT: callq memset@PLT35; AVX512-NEXT: movw $8, {{[0-9]+}}(%rsp)36; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %ax37; AVX512-NEXT: movw %ax, {{[0-9]+}}(%rsp)38; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rdi39; AVX512-NEXT: xorl %esi, %esi40; AVX512-NEXT: movl $1088, %edx # imm = 0x44041; AVX512-NEXT: callq memset@PLT42; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %ax43; AVX512-NEXT: movw %ax, {{[0-9]+}}(%rsp)44; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %ax45; AVX512-NEXT: movw %ax, {{[0-9]+}}(%rsp)46; AVX512-NEXT: cmpl $0, {{[0-9]+}}(%rsp)47; AVX512-NEXT: je .LBB0_248; AVX512-NEXT: # %bb.1: # %if.then49; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rax50; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)51; AVX512-NEXT: movabsq $buf, %rax52; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)53; AVX512-NEXT: movq $32, {{[0-9]+}}(%rsp)54; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax55; AVX512-NEXT: movw (%rax), %si56; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax57; AVX512-NEXT: movw 2(%rax), %dx58; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rcx59; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax60; AVX512-NEXT: movw %si, {{[0-9]+}}(%rsp)61; AVX512-NEXT: movw %dx, {{[0-9]+}}(%rsp)62; AVX512-NEXT: movq %rcx, {{[0-9]+}}(%rsp)63; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)64; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %ax65; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %cx66; AVX512-NEXT: # implicit-def: $al67; AVX512-NEXT: movb %al, {{[0-9]+}}(%rsp)68; AVX512-NEXT: movw %cx, {{[0-9]+}}(%rsp)69; AVX512-NEXT: ldtilecfg {{[0-9]+}}(%rsp)70; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rdx71; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rsi72; AVX512-NEXT: tileloadd (%rdx,%rsi), %tmm073; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rdx74; AVX512-NEXT: addq $64, %rdx75; AVX512-NEXT: movl $64, %esi76; AVX512-NEXT: tilestored %tmm0, (%rdx,%rsi)77; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rax78; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)79; AVX512-NEXT: movabsq $buf, %rax80; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)81; AVX512-NEXT: movq $32, {{[0-9]+}}(%rsp)82; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax83; AVX512-NEXT: movw (%rax), %si84; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax85; AVX512-NEXT: movw 2(%rax), %dx86; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rcx87; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax88; AVX512-NEXT: movw %si, {{[0-9]+}}(%rsp)89; AVX512-NEXT: movw %dx, {{[0-9]+}}(%rsp)90; AVX512-NEXT: movq %rcx, {{[0-9]+}}(%rsp)91; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)92; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %ax93; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %cx94; AVX512-NEXT: # implicit-def: $al95; AVX512-NEXT: movb %al, {{[0-9]+}}(%rsp)96; AVX512-NEXT: movw %cx, {{[0-9]+}}(%rsp)97; AVX512-NEXT: ldtilecfg {{[0-9]+}}(%rsp)98; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rdx99; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rsi100; AVX512-NEXT: tileloadd (%rdx,%rsi), %tmm0101; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rdx102; AVX512-NEXT: addq $64, %rdx103; AVX512-NEXT: movl $64, %esi104; AVX512-NEXT: tilestored %tmm0, (%rdx,%rsi)105; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rax106; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)107; AVX512-NEXT: movabsq $buf, %rax108; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)109; AVX512-NEXT: movq $32, {{[0-9]+}}(%rsp)110; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax111; AVX512-NEXT: movw (%rax), %si112; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax113; AVX512-NEXT: movw 2(%rax), %dx114; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rcx115; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax116; AVX512-NEXT: movw %si, {{[0-9]+}}(%rsp)117; AVX512-NEXT: movw %dx, {{[0-9]+}}(%rsp)118; AVX512-NEXT: movq %rcx, {{[0-9]+}}(%rsp)119; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)120; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %ax121; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %cx122; AVX512-NEXT: # implicit-def: $al123; AVX512-NEXT: movb %al, {{[0-9]+}}(%rsp)124; AVX512-NEXT: movw %cx, {{[0-9]+}}(%rsp)125; AVX512-NEXT: ldtilecfg {{[0-9]+}}(%rsp)126; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rdx127; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rsi128; AVX512-NEXT: tileloadd (%rdx,%rsi), %tmm0129; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rdx130; AVX512-NEXT: addq $64, %rdx131; AVX512-NEXT: movl $64, %esi132; AVX512-NEXT: tilestored %tmm0, (%rdx,%rsi)133; AVX512-NEXT: jmp .LBB0_3134; AVX512-NEXT: .LBB0_2: # %if.else135; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rax136; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)137; AVX512-NEXT: movabsq $buf2, %rax138; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)139; AVX512-NEXT: movq $32, {{[0-9]+}}(%rsp)140; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax141; AVX512-NEXT: movw (%rax), %si142; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax143; AVX512-NEXT: movw 2(%rax), %dx144; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rcx145; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax146; AVX512-NEXT: movw %si, {{[0-9]+}}(%rsp)147; AVX512-NEXT: movw %dx, {{[0-9]+}}(%rsp)148; AVX512-NEXT: movq %rcx, {{[0-9]+}}(%rsp)149; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)150; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %ax151; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %cx152; AVX512-NEXT: # implicit-def: $al153; AVX512-NEXT: movb %al, {{[0-9]+}}(%rsp)154; AVX512-NEXT: movw %cx, {{[0-9]+}}(%rsp)155; AVX512-NEXT: ldtilecfg {{[0-9]+}}(%rsp)156; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rdx157; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rsi158; AVX512-NEXT: tileloadd (%rdx,%rsi), %tmm0159; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rdx160; AVX512-NEXT: addq $64, %rdx161; AVX512-NEXT: movl $64, %esi162; AVX512-NEXT: tilestored %tmm0, (%rdx,%rsi)163; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rax164; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)165; AVX512-NEXT: movabsq $buf2, %rax166; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)167; AVX512-NEXT: movq $32, {{[0-9]+}}(%rsp)168; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax169; AVX512-NEXT: movw (%rax), %si170; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax171; AVX512-NEXT: movw 2(%rax), %dx172; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rcx173; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax174; AVX512-NEXT: movw %si, {{[0-9]+}}(%rsp)175; AVX512-NEXT: movw %dx, {{[0-9]+}}(%rsp)176; AVX512-NEXT: movq %rcx, {{[0-9]+}}(%rsp)177; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)178; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %ax179; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %cx180; AVX512-NEXT: # implicit-def: $al181; AVX512-NEXT: movb %al, {{[0-9]+}}(%rsp)182; AVX512-NEXT: movw %cx, {{[0-9]+}}(%rsp)183; AVX512-NEXT: ldtilecfg {{[0-9]+}}(%rsp)184; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rdx185; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rsi186; AVX512-NEXT: tileloadd (%rdx,%rsi), %tmm0187; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rdx188; AVX512-NEXT: addq $64, %rdx189; AVX512-NEXT: movl $64, %esi190; AVX512-NEXT: tilestored %tmm0, (%rdx,%rsi)191; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rax192; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)193; AVX512-NEXT: movabsq $buf2, %rax194; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)195; AVX512-NEXT: movq $32, {{[0-9]+}}(%rsp)196; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax197; AVX512-NEXT: movw (%rax), %si198; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax199; AVX512-NEXT: movw 2(%rax), %dx200; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rcx201; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax202; AVX512-NEXT: movw %si, {{[0-9]+}}(%rsp)203; AVX512-NEXT: movw %dx, {{[0-9]+}}(%rsp)204; AVX512-NEXT: movq %rcx, {{[0-9]+}}(%rsp)205; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)206; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %ax207; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %cx208; AVX512-NEXT: # implicit-def: $al209; AVX512-NEXT: movb %al, {{[0-9]+}}(%rsp)210; AVX512-NEXT: movw %cx, {{[0-9]+}}(%rsp)211; AVX512-NEXT: ldtilecfg {{[0-9]+}}(%rsp)212; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rdx213; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rsi214; AVX512-NEXT: tileloadd (%rdx,%rsi), %tmm0215; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rdx216; AVX512-NEXT: addq $64, %rdx217; AVX512-NEXT: movl $64, %esi218; AVX512-NEXT: tilestored %tmm0, (%rdx,%rsi)219; AVX512-NEXT: .LBB0_3: # %if.end220; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rdi221; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rsi222; AVX512-NEXT: movl $1088, %edx # imm = 0x440223; AVX512-NEXT: movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill224; AVX512-NEXT: callq memcpy@PLT225; AVX512-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload226; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rdi227; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rsi228; AVX512-NEXT: callq memcpy@PLT229; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rax230; AVX512-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill231; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)232; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %ax233; AVX512-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill234; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %ax235; AVX512-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill236; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %ax237; AVX512-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill238; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax239; AVX512-NEXT: vmovdqa64 64(%rax), %zmm0240; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill241; AVX512-NEXT: vmovdqa64 128(%rax), %zmm0242; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill243; AVX512-NEXT: vmovdqa64 192(%rax), %zmm0244; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill245; AVX512-NEXT: vmovdqa64 256(%rax), %zmm0246; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill247; AVX512-NEXT: vmovdqa64 320(%rax), %zmm0248; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill249; AVX512-NEXT: vmovdqa64 384(%rax), %zmm0250; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill251; AVX512-NEXT: vmovdqa64 448(%rax), %zmm0252; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill253; AVX512-NEXT: vmovdqa64 512(%rax), %zmm0254; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill255; AVX512-NEXT: vmovdqa64 576(%rax), %zmm0256; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill257; AVX512-NEXT: vmovdqa64 640(%rax), %zmm0258; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill259; AVX512-NEXT: vmovdqa64 704(%rax), %zmm0260; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill261; AVX512-NEXT: vmovdqa64 768(%rax), %zmm0262; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill263; AVX512-NEXT: vmovdqa64 832(%rax), %zmm0264; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill265; AVX512-NEXT: vmovdqa64 896(%rax), %zmm0266; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill267; AVX512-NEXT: vmovdqa64 960(%rax), %zmm0268; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill269; AVX512-NEXT: vmovdqa64 1024(%rax), %zmm0270; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm16271; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm17272; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm18273; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm19274; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm20275; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm21276; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm22277; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm23278; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm24279; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm25280; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm26281; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm27282; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm28283; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm29284; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm30285; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm31286; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm1287; AVX512-NEXT: vmovaps %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill288; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm1289; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm2290; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm3291; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm4292; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm5293; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm6294; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm7295; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm8296; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm9297; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm10298; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm11299; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm12300; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm13301; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm14302; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm15303; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)304; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload305; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)306; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload307; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)308; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload309; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)310; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload311; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)312; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload313; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)314; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload315; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)316; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload317; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)318; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload319; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)320; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload321; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)322; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload323; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)324; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload325; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)326; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload327; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)328; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload329; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)330; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload331; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)332; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload333; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)334; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload335; AVX512-NEXT: vmovdqa64 %zmm31, {{[0-9]+}}(%rsp)336; AVX512-NEXT: vmovdqa64 %zmm30, {{[0-9]+}}(%rsp)337; AVX512-NEXT: vmovdqa64 %zmm29, {{[0-9]+}}(%rsp)338; AVX512-NEXT: vmovdqa64 %zmm28, {{[0-9]+}}(%rsp)339; AVX512-NEXT: vmovdqa64 %zmm27, {{[0-9]+}}(%rsp)340; AVX512-NEXT: vmovdqa64 %zmm26, {{[0-9]+}}(%rsp)341; AVX512-NEXT: vmovdqa64 %zmm25, {{[0-9]+}}(%rsp)342; AVX512-NEXT: vmovdqa64 %zmm24, {{[0-9]+}}(%rsp)343; AVX512-NEXT: vmovdqa64 %zmm23, {{[0-9]+}}(%rsp)344; AVX512-NEXT: vmovdqa64 %zmm22, {{[0-9]+}}(%rsp)345; AVX512-NEXT: vmovdqa64 %zmm21, {{[0-9]+}}(%rsp)346; AVX512-NEXT: vmovdqa64 %zmm20, {{[0-9]+}}(%rsp)347; AVX512-NEXT: vmovdqa64 %zmm19, {{[0-9]+}}(%rsp)348; AVX512-NEXT: vmovdqa64 %zmm18, {{[0-9]+}}(%rsp)349; AVX512-NEXT: vmovdqa64 %zmm17, {{[0-9]+}}(%rsp)350; AVX512-NEXT: vmovdqa64 %zmm16, {{[0-9]+}}(%rsp)351; AVX512-NEXT: vmovdqa64 %zmm15, {{[0-9]+}}(%rsp)352; AVX512-NEXT: vmovdqa64 %zmm14, {{[0-9]+}}(%rsp)353; AVX512-NEXT: vmovdqa64 %zmm13, {{[0-9]+}}(%rsp)354; AVX512-NEXT: vmovdqa64 %zmm12, {{[0-9]+}}(%rsp)355; AVX512-NEXT: vmovdqa64 %zmm11, {{[0-9]+}}(%rsp)356; AVX512-NEXT: vmovdqa64 %zmm10, {{[0-9]+}}(%rsp)357; AVX512-NEXT: vmovdqa64 %zmm9, {{[0-9]+}}(%rsp)358; AVX512-NEXT: vmovdqa64 %zmm8, {{[0-9]+}}(%rsp)359; AVX512-NEXT: vmovdqa64 %zmm7, {{[0-9]+}}(%rsp)360; AVX512-NEXT: vmovdqa64 %zmm6, {{[0-9]+}}(%rsp)361; AVX512-NEXT: vmovdqa64 %zmm5, {{[0-9]+}}(%rsp)362; AVX512-NEXT: vmovdqa64 %zmm4, {{[0-9]+}}(%rsp)363; AVX512-NEXT: vmovdqa64 %zmm3, {{[0-9]+}}(%rsp)364; AVX512-NEXT: vmovdqa64 %zmm2, {{[0-9]+}}(%rsp)365; AVX512-NEXT: vmovdqa64 %zmm1, {{[0-9]+}}(%rsp)366; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)367; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rdi368; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rsi369; AVX512-NEXT: movl $1024, %edx # imm = 0x400370; AVX512-NEXT: movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill371; AVX512-NEXT: vzeroupper372; AVX512-NEXT: callq memcpy@PLT373; AVX512-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload374; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rdi375; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rsi376; AVX512-NEXT: callq memcpy@PLT377; AVX512-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload378; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rdi379; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rsi380; AVX512-NEXT: callq memcpy@PLT381; AVX512-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %di # 2-byte Reload382; AVX512-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %cx # 2-byte Reload383; AVX512-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload384; AVX512-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload385; AVX512-NEXT: # kill: def $r8 killed $rax386; AVX512-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload387; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0388; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill389; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0390; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill391; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0392; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill393; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0394; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill395; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0396; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill397; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0398; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill399; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0400; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill401; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0402; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill403; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0404; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill405; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0406; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill407; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0408; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill409; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0410; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill411; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0412; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill413; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0414; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill415; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0416; AVX512-NEXT: vmovaps %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill417; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0418; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm16419; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm17420; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm18421; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm19422; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm20423; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm21424; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm22425; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm23426; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm24427; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm25428; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm26429; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm27430; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm28431; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm29432; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm30433; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm31434; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm1435; AVX512-NEXT: vmovaps %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill436; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm1437; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm2438; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm3439; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm4440; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm5441; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm6442; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm7443; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm8444; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm9445; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm10446; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm11447; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm12448; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm13449; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm14450; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm15451; AVX512-NEXT: movw %di, {{[0-9]+}}(%rsp)452; AVX512-NEXT: movw %cx, {{[0-9]+}}(%rsp)453; AVX512-NEXT: movw %ax, {{[0-9]+}}(%rsp)454; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)455; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload456; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)457; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload458; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)459; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload460; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)461; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload462; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)463; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload464; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)465; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload466; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)467; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload468; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)469; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload470; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)471; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload472; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)473; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload474; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)475; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload476; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)477; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload478; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)479; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload480; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)481; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload482; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)483; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload484; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)485; AVX512-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0 # 64-byte Reload486; AVX512-NEXT: vmovdqa64 %zmm31, {{[0-9]+}}(%rsp)487; AVX512-NEXT: vmovdqa64 %zmm30, {{[0-9]+}}(%rsp)488; AVX512-NEXT: vmovdqa64 %zmm29, {{[0-9]+}}(%rsp)489; AVX512-NEXT: vmovdqa64 %zmm28, {{[0-9]+}}(%rsp)490; AVX512-NEXT: vmovdqa64 %zmm27, {{[0-9]+}}(%rsp)491; AVX512-NEXT: vmovdqa64 %zmm26, {{[0-9]+}}(%rsp)492; AVX512-NEXT: vmovdqa64 %zmm25, {{[0-9]+}}(%rsp)493; AVX512-NEXT: vmovdqa64 %zmm24, {{[0-9]+}}(%rsp)494; AVX512-NEXT: vmovdqa64 %zmm23, {{[0-9]+}}(%rsp)495; AVX512-NEXT: vmovdqa64 %zmm22, {{[0-9]+}}(%rsp)496; AVX512-NEXT: vmovdqa64 %zmm21, {{[0-9]+}}(%rsp)497; AVX512-NEXT: vmovdqa64 %zmm20, {{[0-9]+}}(%rsp)498; AVX512-NEXT: vmovdqa64 %zmm19, {{[0-9]+}}(%rsp)499; AVX512-NEXT: vmovdqa64 %zmm18, {{[0-9]+}}(%rsp)500; AVX512-NEXT: vmovdqa64 %zmm17, {{[0-9]+}}(%rsp)501; AVX512-NEXT: vmovdqa64 %zmm16, {{[0-9]+}}(%rsp)502; AVX512-NEXT: vmovdqa64 %zmm15, {{[0-9]+}}(%rsp)503; AVX512-NEXT: vmovdqa64 %zmm14, {{[0-9]+}}(%rsp)504; AVX512-NEXT: vmovdqa64 %zmm13, {{[0-9]+}}(%rsp)505; AVX512-NEXT: vmovdqa64 %zmm12, {{[0-9]+}}(%rsp)506; AVX512-NEXT: vmovdqa64 %zmm11, {{[0-9]+}}(%rsp)507; AVX512-NEXT: vmovdqa64 %zmm10, {{[0-9]+}}(%rsp)508; AVX512-NEXT: vmovdqa64 %zmm9, {{[0-9]+}}(%rsp)509; AVX512-NEXT: vmovdqa64 %zmm8, {{[0-9]+}}(%rsp)510; AVX512-NEXT: vmovdqa64 %zmm7, {{[0-9]+}}(%rsp)511; AVX512-NEXT: vmovdqa64 %zmm6, {{[0-9]+}}(%rsp)512; AVX512-NEXT: vmovdqa64 %zmm5, {{[0-9]+}}(%rsp)513; AVX512-NEXT: vmovdqa64 %zmm4, {{[0-9]+}}(%rsp)514; AVX512-NEXT: vmovdqa64 %zmm3, {{[0-9]+}}(%rsp)515; AVX512-NEXT: vmovdqa64 %zmm2, {{[0-9]+}}(%rsp)516; AVX512-NEXT: vmovdqa64 %zmm1, {{[0-9]+}}(%rsp)517; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)518; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %ax519; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %cx520; AVX512-NEXT: movzwl {{[0-9]+}}(%rsp), %r8d521; AVX512-NEXT: movw %r8w, %di522; AVX512-NEXT: shrl $2, %r8d523; AVX512-NEXT: movw %r8w, %r9w524; AVX512-NEXT: # implicit-def: $al525; AVX512-NEXT: movb %al, {{[0-9]+}}(%rsp)526; AVX512-NEXT: movw %cx, {{[0-9]+}}(%rsp)527; AVX512-NEXT: # implicit-def: $r9b528; AVX512-NEXT: movb %r9b, {{[0-9]+}}(%rsp)529; AVX512-NEXT: movw %cx, {{[0-9]+}}(%rsp)530; AVX512-NEXT: # implicit-def: $al531; AVX512-NEXT: movb %al, {{[0-9]+}}(%rsp)532; AVX512-NEXT: movw %di, {{[0-9]+}}(%rsp)533; AVX512-NEXT: # implicit-def: $al534; AVX512-NEXT: movb %al, {{[0-9]+}}(%rsp)535; AVX512-NEXT: movw %cx, {{[0-9]+}}(%rsp)536; AVX512-NEXT: ldtilecfg {{[0-9]+}}(%rsp)537; AVX512-NEXT: movl $64, %r8d538; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %r10539; AVX512-NEXT: tileloadd (%r10,%r8), %tmm0540; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %r10541; AVX512-NEXT: tileloadd (%r10,%r8), %tmm1542; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %r10543; AVX512-NEXT: tileloadd (%r10,%r8), %tmm2544; AVX512-NEXT: tdpbssd %tmm2, %tmm1, %tmm0545; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rdi546; AVX512-NEXT: addq $64, %rdi547; AVX512-NEXT: tilestored %tmm0, (%rdi,%r8)548; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rdi549; AVX512-NEXT: vzeroupper550; AVX512-NEXT: callq memcpy@PLT551; AVX512-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload552; AVX512-NEXT: movq $buf, {{[0-9]+}}(%rsp)553; AVX512-NEXT: movq $32, {{[0-9]+}}(%rsp)554; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %ax555; AVX512-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill556; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %ax557; AVX512-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill558; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax559; AVX512-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill560; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rax561; AVX512-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill562; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0563; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm1564; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm2565; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm3566; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm4567; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm5568; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm6569; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm7570; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm8571; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm9572; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm10573; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm11574; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm12575; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm13576; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm14577; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm15578; AVX512-NEXT: vmovdqa64 %zmm15, {{[0-9]+}}(%rsp)579; AVX512-NEXT: vmovdqa64 %zmm14, {{[0-9]+}}(%rsp)580; AVX512-NEXT: vmovdqa64 %zmm13, {{[0-9]+}}(%rsp)581; AVX512-NEXT: vmovdqa64 %zmm12, {{[0-9]+}}(%rsp)582; AVX512-NEXT: vmovdqa64 %zmm11, {{[0-9]+}}(%rsp)583; AVX512-NEXT: vmovdqa64 %zmm10, {{[0-9]+}}(%rsp)584; AVX512-NEXT: vmovdqa64 %zmm9, {{[0-9]+}}(%rsp)585; AVX512-NEXT: vmovdqa64 %zmm8, {{[0-9]+}}(%rsp)586; AVX512-NEXT: vmovdqa64 %zmm7, {{[0-9]+}}(%rsp)587; AVX512-NEXT: vmovdqa64 %zmm6, {{[0-9]+}}(%rsp)588; AVX512-NEXT: vmovdqa64 %zmm5, {{[0-9]+}}(%rsp)589; AVX512-NEXT: vmovdqa64 %zmm4, {{[0-9]+}}(%rsp)590; AVX512-NEXT: vmovdqa64 %zmm3, {{[0-9]+}}(%rsp)591; AVX512-NEXT: vmovdqa64 %zmm2, {{[0-9]+}}(%rsp)592; AVX512-NEXT: vmovdqa64 %zmm1, {{[0-9]+}}(%rsp)593; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)594; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rdi595; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rsi596; AVX512-NEXT: vzeroupper597; AVX512-NEXT: callq memcpy@PLT598; AVX512-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %si # 2-byte Reload599; AVX512-NEXT: movw {{[-0-9]+}}(%r{{[sb]}}p), %dx # 2-byte Reload600; AVX512-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload601; AVX512-NEXT: # kill: def $rdi killed $rax602; AVX512-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload603; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm0604; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm1605; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm2606; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm3607; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm4608; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm5609; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm6610; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm7611; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm8612; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm9613; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm10614; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm11615; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm12616; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm13617; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm14618; AVX512-NEXT: vmovdqa64 {{[0-9]+}}(%rsp), %zmm15619; AVX512-NEXT: movw %si, {{[0-9]+}}(%rsp)620; AVX512-NEXT: movw %dx, {{[0-9]+}}(%rsp)621; AVX512-NEXT: movq %rcx, {{[0-9]+}}(%rsp)622; AVX512-NEXT: movq %rax, {{[0-9]+}}(%rsp)623; AVX512-NEXT: vmovdqa64 %zmm15, {{[0-9]+}}(%rsp)624; AVX512-NEXT: vmovdqa64 %zmm14, {{[0-9]+}}(%rsp)625; AVX512-NEXT: vmovdqa64 %zmm13, {{[0-9]+}}(%rsp)626; AVX512-NEXT: vmovdqa64 %zmm12, {{[0-9]+}}(%rsp)627; AVX512-NEXT: vmovdqa64 %zmm11, {{[0-9]+}}(%rsp)628; AVX512-NEXT: vmovdqa64 %zmm10, {{[0-9]+}}(%rsp)629; AVX512-NEXT: vmovdqa64 %zmm9, {{[0-9]+}}(%rsp)630; AVX512-NEXT: vmovdqa64 %zmm8, {{[0-9]+}}(%rsp)631; AVX512-NEXT: vmovdqa64 %zmm7, {{[0-9]+}}(%rsp)632; AVX512-NEXT: vmovdqa64 %zmm6, {{[0-9]+}}(%rsp)633; AVX512-NEXT: vmovdqa64 %zmm5, {{[0-9]+}}(%rsp)634; AVX512-NEXT: vmovdqa64 %zmm4, {{[0-9]+}}(%rsp)635; AVX512-NEXT: vmovdqa64 %zmm3, {{[0-9]+}}(%rsp)636; AVX512-NEXT: vmovdqa64 %zmm2, {{[0-9]+}}(%rsp)637; AVX512-NEXT: vmovdqa64 %zmm1, {{[0-9]+}}(%rsp)638; AVX512-NEXT: vmovdqa64 %zmm0, {{[0-9]+}}(%rsp)639; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %ax640; AVX512-NEXT: movw {{[0-9]+}}(%rsp), %cx641; AVX512-NEXT: # implicit-def: $al642; AVX512-NEXT: movb %al, {{[0-9]+}}(%rsp)643; AVX512-NEXT: movw %cx, {{[0-9]+}}(%rsp)644; AVX512-NEXT: ldtilecfg {{[0-9]+}}(%rsp)645; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rdx646; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rsi647; AVX512-NEXT: movl $64, %r8d648; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %rdi649; AVX512-NEXT: tileloadd (%rdi,%r8), %tmm0650; AVX512-NEXT: tilestored %tmm0, (%rdx,%rsi)651; AVX512-NEXT: movq %rbp, %rsp652; AVX512-NEXT: popq %rbp653; AVX512-NEXT: tilerelease654; AVX512-NEXT: vzeroupper655; AVX512-NEXT: retq656entry:657 %m.addr.i85 = alloca i16, align 2658 %n.addr.i86 = alloca i16, align 2659 %base.addr.i87 = alloca ptr, align 8660 %stride.addr.i88 = alloca i64, align 8661 %tile.addr.i = alloca <256 x i32>, align 64662 %indirect-arg-temp.i5284 = alloca <256 x i32>, align 1024663 %m.addr.i81 = alloca i16, align 2664 %n.addr.i82 = alloca i16, align 2665 %k.addr.i = alloca i16, align 2666 %dst.addr.i83 = alloca <256 x i32>, align 64667 %src1.addr.i = alloca <256 x i32>, align 64668 %src2.addr.i = alloca <256 x i32>, align 64669 %indirect-arg-temp5.i80 = alloca <256 x i32>, align 1024670 %indirect-arg-temp4.i79 = alloca <256 x i32>, align 1024671 %indirect-arg-temp.i78 = alloca <256 x i32>, align 1024672 %m.addr.i74 = alloca i16, align 2673 %n.addr.i75 = alloca i16, align 2674 %base.addr.i76 = alloca ptr, align 8675 %stride.addr.i77 = alloca i64, align 8676 %m.addr.i70 = alloca i16, align 2677 %n.addr.i71 = alloca i16, align 2678 %base.addr.i72 = alloca ptr, align 8679 %stride.addr.i73 = alloca i64, align 8680 %m.addr.i66 = alloca i16, align 2681 %n.addr.i67 = alloca i16, align 2682 %base.addr.i68 = alloca ptr, align 8683 %stride.addr.i69 = alloca i64, align 8684 %m.addr.i62 = alloca i16, align 2685 %n.addr.i63 = alloca i16, align 2686 %base.addr.i64 = alloca ptr, align 8687 %stride.addr.i65 = alloca i64, align 8688 %m.addr.i58 = alloca i16, align 2689 %n.addr.i59 = alloca i16, align 2690 %base.addr.i60 = alloca ptr, align 8691 %stride.addr.i61 = alloca i64, align 8692 %m.addr.i = alloca i16, align 2693 %n.addr.i = alloca i16, align 2694 %base.addr.i56 = alloca ptr, align 8695 %stride.addr.i57 = alloca i64, align 8696 %base.addr.i50 = alloca ptr, align 8697 %stride.addr.i51 = alloca i64, align 8698 %indirect-arg-temp.i52 = alloca <256 x i32>, align 1024699 %c49 = alloca %struct.__tile1024i_str, align 64700 %dst.addr.i44 = alloca ptr, align 8701 %indirect-arg-temp.i = alloca <256 x i32>, align 1024702 %indirect-arg-temp4.i = alloca <256 x i32>, align 1024703 %indirect-arg-temp5.i = alloca <256 x i32>, align 1024704 %b43 = alloca %struct.__tile1024i_str, align 64705 %a42 = alloca %struct.__tile1024i_str, align 64706 %dst.addr.i35 = alloca ptr, align 8707 %base.addr.i36 = alloca ptr, align 8708 %stride.addr.i37 = alloca i64, align 8709 %dst.addr.i28 = alloca ptr, align 8710 %base.addr.i29 = alloca ptr, align 8711 %stride.addr.i30 = alloca i64, align 8712 %dst.addr.i21 = alloca ptr, align 8713 %base.addr.i22 = alloca ptr, align 8714 %stride.addr.i23 = alloca i64, align 8715 %dst.addr.i14 = alloca ptr, align 8716 %base.addr.i15 = alloca ptr, align 8717 %stride.addr.i16 = alloca i64, align 8718 %dst.addr.i7 = alloca ptr, align 8719 %base.addr.i8 = alloca ptr, align 8720 %stride.addr.i9 = alloca i64, align 8721 %dst.addr.i = alloca ptr, align 8722 %base.addr.i = alloca ptr, align 8723 %stride.addr.i = alloca i64, align 8724 %cond.addr = alloca i32, align 4725 %row.addr = alloca i16, align 2726 %col.addr = alloca i16, align 2727 %a = alloca %struct.__tile1024i_str, align 64728 %b = alloca %struct.__tile1024i_str, align 64729 %c = alloca %struct.__tile1024i_str, align 64730 store i32 %cond, ptr %cond.addr, align 4731 store i16 %row, ptr %row.addr, align 2732 store i16 %col, ptr %col.addr, align 2733 call void @llvm.memset.p0.i64(ptr align 64 %a, i8 0, i64 1088, i1 false)734 %0 = load i16, ptr %row.addr, align 2735 store i16 %0, ptr %a, align 64736 %col2 = getelementptr inbounds %struct.__tile1024i_str, ptr %a, i32 0, i32 1737 store i16 8, ptr %col2, align 2738 call void @llvm.memset.p0.i64(ptr align 64 %b, i8 0, i64 1088, i1 false)739 store i16 8, ptr %b, align 64740 %col4 = getelementptr inbounds %struct.__tile1024i_str, ptr %b, i32 0, i32 1741 %1 = load i16, ptr %col.addr, align 2742 store i16 %1, ptr %col4, align 2743 call void @llvm.memset.p0.i64(ptr align 64 %c, i8 0, i64 1088, i1 false)744 %2 = load i16, ptr %row.addr, align 2745 store i16 %2, ptr %c, align 64746 %col6 = getelementptr inbounds %struct.__tile1024i_str, ptr %c, i32 0, i32 1747 %3 = load i16, ptr %col.addr, align 2748 store i16 %3, ptr %col6, align 2749 %4 = load i32, ptr %cond.addr, align 4750 %tobool = icmp ne i32 %4, 0751 br i1 %tobool, label %if.then, label %if.else752 753if.then: ; preds = %entry754 store ptr %a, ptr %dst.addr.i35, align 8755 store ptr @buf, ptr %base.addr.i36, align 8756 store i64 32, ptr %stride.addr.i37, align 8757 %5 = load ptr, ptr %dst.addr.i35, align 8758 %6 = load i16, ptr %5, align 64759 %7 = load ptr, ptr %dst.addr.i35, align 8760 %col.i39 = getelementptr inbounds %struct.__tile1024i_str, ptr %7, i32 0, i32 1761 %8 = load i16, ptr %col.i39, align 2762 %9 = load ptr, ptr %base.addr.i36, align 8763 %10 = load i64, ptr %stride.addr.i37, align 8764 store i16 %6, ptr %m.addr.i, align 2765 store i16 %8, ptr %n.addr.i, align 2766 store ptr %9, ptr %base.addr.i56, align 8767 store i64 %10, ptr %stride.addr.i57, align 8768 %11 = load i16, ptr %m.addr.i, align 2769 %12 = load i16, ptr %n.addr.i, align 2770 %13 = load ptr, ptr %base.addr.i56, align 8771 %14 = load i64, ptr %stride.addr.i57, align 8772 %15 = call x86_amx @llvm.x86.tileloadd64.internal(i16 %11, i16 %12, ptr %13, i64 %14) #2773 %16 = bitcast x86_amx %15 to <256 x i32>774 %17 = load ptr, ptr %dst.addr.i35, align 8775 %tile.i41 = getelementptr inbounds %struct.__tile1024i_str, ptr %17, i32 0, i32 3776 store <256 x i32> %16, ptr %tile.i41, align 64777 store ptr %b, ptr %dst.addr.i28, align 8778 store ptr @buf, ptr %base.addr.i29, align 8779 store i64 32, ptr %stride.addr.i30, align 8780 %18 = load ptr, ptr %dst.addr.i28, align 8781 %19 = load i16, ptr %18, align 64782 %20 = load ptr, ptr %dst.addr.i28, align 8783 %col.i32 = getelementptr inbounds %struct.__tile1024i_str, ptr %20, i32 0, i32 1784 %21 = load i16, ptr %col.i32, align 2785 %22 = load ptr, ptr %base.addr.i29, align 8786 %23 = load i64, ptr %stride.addr.i30, align 8787 store i16 %19, ptr %m.addr.i58, align 2788 store i16 %21, ptr %n.addr.i59, align 2789 store ptr %22, ptr %base.addr.i60, align 8790 store i64 %23, ptr %stride.addr.i61, align 8791 %24 = load i16, ptr %m.addr.i58, align 2792 %25 = load i16, ptr %n.addr.i59, align 2793 %26 = load ptr, ptr %base.addr.i60, align 8794 %27 = load i64, ptr %stride.addr.i61, align 8795 %28 = call x86_amx @llvm.x86.tileloadd64.internal(i16 %24, i16 %25, ptr %26, i64 %27) #2796 %29 = bitcast x86_amx %28 to <256 x i32>797 %30 = load ptr, ptr %dst.addr.i28, align 8798 %tile.i34 = getelementptr inbounds %struct.__tile1024i_str, ptr %30, i32 0, i32 3799 store <256 x i32> %29, ptr %tile.i34, align 64800 store ptr %c, ptr %dst.addr.i21, align 8801 store ptr @buf, ptr %base.addr.i22, align 8802 store i64 32, ptr %stride.addr.i23, align 8803 %31 = load ptr, ptr %dst.addr.i21, align 8804 %32 = load i16, ptr %31, align 64805 %33 = load ptr, ptr %dst.addr.i21, align 8806 %col.i25 = getelementptr inbounds %struct.__tile1024i_str, ptr %33, i32 0, i32 1807 %34 = load i16, ptr %col.i25, align 2808 %35 = load ptr, ptr %base.addr.i22, align 8809 %36 = load i64, ptr %stride.addr.i23, align 8810 store i16 %32, ptr %m.addr.i62, align 2811 store i16 %34, ptr %n.addr.i63, align 2812 store ptr %35, ptr %base.addr.i64, align 8813 store i64 %36, ptr %stride.addr.i65, align 8814 %37 = load i16, ptr %m.addr.i62, align 2815 %38 = load i16, ptr %n.addr.i63, align 2816 %39 = load ptr, ptr %base.addr.i64, align 8817 %40 = load i64, ptr %stride.addr.i65, align 8818 %41 = call x86_amx @llvm.x86.tileloadd64.internal(i16 %37, i16 %38, ptr %39, i64 %40) #2819 %42 = bitcast x86_amx %41 to <256 x i32>820 %43 = load ptr, ptr %dst.addr.i21, align 8821 %tile.i27 = getelementptr inbounds %struct.__tile1024i_str, ptr %43, i32 0, i32 3822 store <256 x i32> %42, ptr %tile.i27, align 64823 br label %if.end824 825if.else: ; preds = %entry826 store ptr %a, ptr %dst.addr.i14, align 8827 store ptr @buf2, ptr %base.addr.i15, align 8828 store i64 32, ptr %stride.addr.i16, align 8829 %44 = load ptr, ptr %dst.addr.i14, align 8830 %45 = load i16, ptr %44, align 64831 %46 = load ptr, ptr %dst.addr.i14, align 8832 %col.i18 = getelementptr inbounds %struct.__tile1024i_str, ptr %46, i32 0, i32 1833 %47 = load i16, ptr %col.i18, align 2834 %48 = load ptr, ptr %base.addr.i15, align 8835 %49 = load i64, ptr %stride.addr.i16, align 8836 store i16 %45, ptr %m.addr.i66, align 2837 store i16 %47, ptr %n.addr.i67, align 2838 store ptr %48, ptr %base.addr.i68, align 8839 store i64 %49, ptr %stride.addr.i69, align 8840 %50 = load i16, ptr %m.addr.i66, align 2841 %51 = load i16, ptr %n.addr.i67, align 2842 %52 = load ptr, ptr %base.addr.i68, align 8843 %53 = load i64, ptr %stride.addr.i69, align 8844 %54 = call x86_amx @llvm.x86.tileloadd64.internal(i16 %50, i16 %51, ptr %52, i64 %53) #2845 %55 = bitcast x86_amx %54 to <256 x i32>846 %56 = load ptr, ptr %dst.addr.i14, align 8847 %tile.i20 = getelementptr inbounds %struct.__tile1024i_str, ptr %56, i32 0, i32 3848 store <256 x i32> %55, ptr %tile.i20, align 64849 store ptr %b, ptr %dst.addr.i7, align 8850 store ptr @buf2, ptr %base.addr.i8, align 8851 store i64 32, ptr %stride.addr.i9, align 8852 %57 = load ptr, ptr %dst.addr.i7, align 8853 %58 = load i16, ptr %57, align 64854 %59 = load ptr, ptr %dst.addr.i7, align 8855 %col.i11 = getelementptr inbounds %struct.__tile1024i_str, ptr %59, i32 0, i32 1856 %60 = load i16, ptr %col.i11, align 2857 %61 = load ptr, ptr %base.addr.i8, align 8858 %62 = load i64, ptr %stride.addr.i9, align 8859 store i16 %58, ptr %m.addr.i70, align 2860 store i16 %60, ptr %n.addr.i71, align 2861 store ptr %61, ptr %base.addr.i72, align 8862 store i64 %62, ptr %stride.addr.i73, align 8863 %63 = load i16, ptr %m.addr.i70, align 2864 %64 = load i16, ptr %n.addr.i71, align 2865 %65 = load ptr, ptr %base.addr.i72, align 8866 %66 = load i64, ptr %stride.addr.i73, align 8867 %67 = call x86_amx @llvm.x86.tileloadd64.internal(i16 %63, i16 %64, ptr %65, i64 %66) #2868 %68 = bitcast x86_amx %67 to <256 x i32>869 %69 = load ptr, ptr %dst.addr.i7, align 8870 %tile.i13 = getelementptr inbounds %struct.__tile1024i_str, ptr %69, i32 0, i32 3871 store <256 x i32> %68, ptr %tile.i13, align 64872 store ptr %c, ptr %dst.addr.i, align 8873 store ptr @buf2, ptr %base.addr.i, align 8874 store i64 32, ptr %stride.addr.i, align 8875 %70 = load ptr, ptr %dst.addr.i, align 8876 %71 = load i16, ptr %70, align 64877 %72 = load ptr, ptr %dst.addr.i, align 8878 %col.i = getelementptr inbounds %struct.__tile1024i_str, ptr %72, i32 0, i32 1879 %73 = load i16, ptr %col.i, align 2880 %74 = load ptr, ptr %base.addr.i, align 8881 %75 = load i64, ptr %stride.addr.i, align 8882 store i16 %71, ptr %m.addr.i74, align 2883 store i16 %73, ptr %n.addr.i75, align 2884 store ptr %74, ptr %base.addr.i76, align 8885 store i64 %75, ptr %stride.addr.i77, align 8886 %76 = load i16, ptr %m.addr.i74, align 2887 %77 = load i16, ptr %n.addr.i75, align 2888 %78 = load ptr, ptr %base.addr.i76, align 8889 %79 = load i64, ptr %stride.addr.i77, align 8890 %80 = call x86_amx @llvm.x86.tileloadd64.internal(i16 %76, i16 %77, ptr %78, i64 %79) #2891 %81 = bitcast x86_amx %80 to <256 x i32>892 %82 = load ptr, ptr %dst.addr.i, align 8893 %tile.i = getelementptr inbounds %struct.__tile1024i_str, ptr %82, i32 0, i32 3894 store <256 x i32> %81, ptr %tile.i, align 64895 br label %if.end896 897if.end: ; preds = %if.else, %if.then898 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %b43, ptr align 1 %b, i64 1088, i1 false) #2899 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %a42, ptr align 1 %a, i64 1088, i1 false) #2900 store ptr %c, ptr %dst.addr.i44, align 8901 %83 = load i16, ptr %a42, align 64902 %col.i46 = getelementptr inbounds %struct.__tile1024i_str, ptr %b43, i32 0, i32 1903 %84 = load i16, ptr %col.i46, align 2904 %col1.i = getelementptr inbounds %struct.__tile1024i_str, ptr %a42, i32 0, i32 1905 %85 = load i16, ptr %col1.i, align 2906 %86 = load ptr, ptr %dst.addr.i44, align 8907 %tile.i47 = getelementptr inbounds %struct.__tile1024i_str, ptr %86, i32 0, i32 3908 %87 = load <256 x i32>, ptr %tile.i47, align 64909 %tile2.i = getelementptr inbounds %struct.__tile1024i_str, ptr %a42, i32 0, i32 3910 %88 = load <256 x i32>, ptr %tile2.i, align 64911 %tile3.i = getelementptr inbounds %struct.__tile1024i_str, ptr %b43, i32 0, i32 3912 %89 = load <256 x i32>, ptr %tile3.i, align 64913 store <256 x i32> %87, ptr %indirect-arg-temp.i, align 1024914 store <256 x i32> %88, ptr %indirect-arg-temp4.i, align 1024915 store <256 x i32> %89, ptr %indirect-arg-temp5.i, align 1024916 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %indirect-arg-temp5.i80, ptr align 1 %indirect-arg-temp5.i, i64 1024, i1 false) #2917 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %indirect-arg-temp4.i79, ptr align 1 %indirect-arg-temp4.i, i64 1024, i1 false) #2918 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %indirect-arg-temp.i78, ptr align 1 %indirect-arg-temp.i, i64 1024, i1 false) #2919 %dst.i = load <256 x i32>, ptr %indirect-arg-temp.i78, align 1024920 %src1.i = load <256 x i32>, ptr %indirect-arg-temp4.i79, align 1024921 %src2.i = load <256 x i32>, ptr %indirect-arg-temp5.i80, align 1024922 store i16 %83, ptr %m.addr.i81, align 2923 store i16 %84, ptr %n.addr.i82, align 2924 store i16 %85, ptr %k.addr.i, align 2925 store <256 x i32> %dst.i, ptr %dst.addr.i83, align 64926 store <256 x i32> %src1.i, ptr %src1.addr.i, align 64927 store <256 x i32> %src2.i, ptr %src2.addr.i, align 64928 %90 = load i16, ptr %m.addr.i81, align 2929 %91 = load i16, ptr %n.addr.i82, align 2930 %92 = load i16, ptr %k.addr.i, align 2931 %93 = load <256 x i32>, ptr %dst.addr.i83, align 64932 %94 = bitcast <256 x i32> %93 to x86_amx933 %95 = load <256 x i32>, ptr %src1.addr.i, align 64934 %96 = bitcast <256 x i32> %95 to x86_amx935 %97 = load <256 x i32>, ptr %src2.addr.i, align 64936 %98 = bitcast <256 x i32> %97 to x86_amx937 %99 = call x86_amx @llvm.x86.tdpbssd.internal(i16 %90, i16 %91, i16 %92, x86_amx %94, x86_amx %96, x86_amx %98) #2938 %100 = bitcast x86_amx %99 to <256 x i32>939 %101 = load ptr, ptr %dst.addr.i44, align 8940 %tile6.i = getelementptr inbounds %struct.__tile1024i_str, ptr %101, i32 0, i32 3941 store <256 x i32> %100, ptr %tile6.i, align 64942 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %c49, ptr align 1 %c, i64 1088, i1 false) #2943 store ptr @buf, ptr %base.addr.i50, align 8944 store i64 32, ptr %stride.addr.i51, align 8945 %102 = load i16, ptr %c49, align 64946 %col.i54 = getelementptr inbounds %struct.__tile1024i_str, ptr %c49, i32 0, i32 1947 %103 = load i16, ptr %col.i54, align 2948 %104 = load ptr, ptr %base.addr.i50, align 8949 %105 = load i64, ptr %stride.addr.i51, align 8950 %tile.i55 = getelementptr inbounds %struct.__tile1024i_str, ptr %c49, i32 0, i32 3951 %106 = load <256 x i32>, ptr %tile.i55, align 64952 store <256 x i32> %106, ptr %indirect-arg-temp.i52, align 1024953 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %indirect-arg-temp.i5284, ptr align 1 %indirect-arg-temp.i52, i64 1024, i1 false) #2954 %tile.i89 = load <256 x i32>, ptr %indirect-arg-temp.i5284, align 1024955 store i16 %102, ptr %m.addr.i85, align 2956 store i16 %103, ptr %n.addr.i86, align 2957 store ptr %104, ptr %base.addr.i87, align 8958 store i64 %105, ptr %stride.addr.i88, align 8959 store <256 x i32> %tile.i89, ptr %tile.addr.i, align 64960 %107 = load i16, ptr %m.addr.i85, align 2961 %108 = load i16, ptr %n.addr.i86, align 2962 %109 = load ptr, ptr %base.addr.i87, align 8963 %110 = load i64, ptr %stride.addr.i88, align 8964 %111 = load <256 x i32>, ptr %tile.addr.i, align 64965 %112 = bitcast <256 x i32> %111 to x86_amx966 call void @llvm.x86.tilestored64.internal(i16 %107, i16 %108, ptr %109, i64 %110, x86_amx %112) #2967 ret void968}969 970declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1971declare x86_amx @llvm.x86.tileloadd64.internal(i16, i16, ptr, i64) #2972declare x86_amx @llvm.x86.tdpbssd.internal(i16, i16, i16, x86_amx, x86_amx, x86_amx) #2973declare void @llvm.x86.tilestored64.internal(i16, i16, ptr, i64, x86_amx) #2974declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3975 976attributes #0 = { noinline nounwind optnone }977attributes #1 = { argmemonly nofree nosync nounwind willreturn writeonly }978attributes #2 = { nounwind }979attributes #3 = { argmemonly nofree nosync nounwind willreturn }980