brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.8 KiB · 3d4b4b8 Raw
178 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@buf = dso_local global [1024 x i8] zeroinitializer, align 165@buf2 = dso_local global [1024 x i8] zeroinitializer, align 166 7define dso_local void @test_api(i32 %cond, i16 signext %row, i16 signext %col) nounwind {8; AVX512-LABEL: test_api:9; AVX512:       # %bb.0: # %entry10; AVX512-NEXT:    pushq %rbp11; AVX512-NEXT:    movq %rsp, %rbp12; AVX512-NEXT:    andq $-1024, %rsp # imm = 0xFC0013; AVX512-NEXT:    subq $8192, %rsp # imm = 0x200014; AVX512-NEXT:    vxorps %xmm0, %xmm0, %xmm015; AVX512-NEXT:    vmovups %zmm0, {{[0-9]+}}(%rsp)16; AVX512-NEXT:    movb $1, {{[0-9]+}}(%rsp)17; AVX512-NEXT:    movw %dx, %ax18; AVX512-NEXT:    movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill19; AVX512-NEXT:    movw %si, %ax20; AVX512-NEXT:    movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill21; AVX512-NEXT:    cmpl $0, %edi22; AVX512-NEXT:    je .LBB0_223; AVX512-NEXT:  # %bb.1: # %if.then24; AVX512-NEXT:    movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload25; AVX512-NEXT:    movw {{[-0-9]+}}(%r{{[sb]}}p), %cx # 2-byte Reload26; AVX512-NEXT:    movl $buf, %esi27; AVX512-NEXT:    movl $32, %edi28; AVX512-NEXT:    movw $8, %dx29; AVX512-NEXT:    # implicit-def: $al30; AVX512-NEXT:    movb %al, {{[0-9]+}}(%rsp)31; AVX512-NEXT:    movw %dx, {{[0-9]+}}(%rsp)32; AVX512-NEXT:    ldtilecfg {{[0-9]+}}(%rsp)33; AVX512-NEXT:    tileloadd (%rsi,%rdi), %tmm034; AVX512-NEXT:    movl $64, %edi35; AVX512-NEXT:    leaq {{[0-9]+}}(%rsp), %rsi36; AVX512-NEXT:    movw $8, %dx37; AVX512-NEXT:    tilestored %tmm0, (%rsi,%rdi)38; AVX512-NEXT:    movl $buf, %esi39; AVX512-NEXT:    movl $32, %edi40; AVX512-NEXT:    movw $8, %dx41; AVX512-NEXT:    # implicit-def: $al42; AVX512-NEXT:    movb %al, {{[0-9]+}}(%rsp)43; AVX512-NEXT:    movw %cx, {{[0-9]+}}(%rsp)44; AVX512-NEXT:    # implicit-def: $dl45; AVX512-NEXT:    movb %dl, {{[0-9]+}}(%rsp)46; AVX512-NEXT:    movw %cx, {{[0-9]+}}(%rsp)47; AVX512-NEXT:    ldtilecfg {{[0-9]+}}(%rsp)48; AVX512-NEXT:    tileloadd (%rsi,%rdi), %tmm049; AVX512-NEXT:    movl $64, %edi50; AVX512-NEXT:    leaq {{[0-9]+}}(%rsp), %rsi51; AVX512-NEXT:    movw $8, %dx52; AVX512-NEXT:    tilestored %tmm0, (%rsi,%rdi)53; AVX512-NEXT:    movl $buf, %edx54; AVX512-NEXT:    movl $32, %esi55; AVX512-NEXT:    tileloadd (%rdx,%rsi), %tmm056; AVX512-NEXT:    movl $64, %esi57; AVX512-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx58; AVX512-NEXT:    tilestored %tmm0, (%rdx,%rsi)59; AVX512-NEXT:    jmp .LBB0_360; AVX512-NEXT:  .LBB0_2: # %if.else61; AVX512-NEXT:    movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload62; AVX512-NEXT:    movw {{[-0-9]+}}(%r{{[sb]}}p), %cx # 2-byte Reload63; AVX512-NEXT:    movl $buf2, %esi64; AVX512-NEXT:    movl $32, %edi65; AVX512-NEXT:    movw $8, %dx66; AVX512-NEXT:    # implicit-def: $al67; AVX512-NEXT:    movb %al, {{[0-9]+}}(%rsp)68; AVX512-NEXT:    movw %dx, {{[0-9]+}}(%rsp)69; AVX512-NEXT:    ldtilecfg {{[0-9]+}}(%rsp)70; AVX512-NEXT:    tileloadd (%rsi,%rdi), %tmm071; AVX512-NEXT:    movl $64, %edi72; AVX512-NEXT:    leaq {{[0-9]+}}(%rsp), %rsi73; AVX512-NEXT:    movw $8, %dx74; AVX512-NEXT:    tilestored %tmm0, (%rsi,%rdi)75; AVX512-NEXT:    movl $buf2, %esi76; AVX512-NEXT:    movl $32, %edi77; AVX512-NEXT:    movw $8, %dx78; AVX512-NEXT:    # implicit-def: $al79; AVX512-NEXT:    movb %al, {{[0-9]+}}(%rsp)80; AVX512-NEXT:    movw %cx, {{[0-9]+}}(%rsp)81; AVX512-NEXT:    # implicit-def: $dl82; AVX512-NEXT:    movb %dl, {{[0-9]+}}(%rsp)83; AVX512-NEXT:    movw %cx, {{[0-9]+}}(%rsp)84; AVX512-NEXT:    ldtilecfg {{[0-9]+}}(%rsp)85; AVX512-NEXT:    tileloadd (%rsi,%rdi), %tmm086; AVX512-NEXT:    movl $64, %edi87; AVX512-NEXT:    leaq {{[0-9]+}}(%rsp), %rsi88; AVX512-NEXT:    movw $8, %dx89; AVX512-NEXT:    tilestored %tmm0, (%rsi,%rdi)90; AVX512-NEXT:    movl $buf2, %edx91; AVX512-NEXT:    movl $32, %esi92; AVX512-NEXT:    tileloadd (%rdx,%rsi), %tmm093; AVX512-NEXT:    movl $64, %esi94; AVX512-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx95; AVX512-NEXT:    tilestored %tmm0, (%rdx,%rsi)96; AVX512-NEXT:  .LBB0_3: # %if.end97; AVX512-NEXT:    movw {{[-0-9]+}}(%r{{[sb]}}p), %ax # 2-byte Reload98; AVX512-NEXT:    movw {{[-0-9]+}}(%r{{[sb]}}p), %cx # 2-byte Reload99; AVX512-NEXT:    movl $64, %edi100; AVX512-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx101; AVX512-NEXT:    movw $8, %si102; AVX512-NEXT:    # implicit-def: $al103; AVX512-NEXT:    movb %al, {{[0-9]+}}(%rsp)104; AVX512-NEXT:    movw %si, {{[0-9]+}}(%rsp)105; AVX512-NEXT:    ldtilecfg {{[0-9]+}}(%rsp)106; AVX512-NEXT:    tileloadd (%rdx,%rdi), %tmm0107; AVX512-NEXT:    movabsq $64, %rdx108; AVX512-NEXT:    tilestored %tmm0, 1024(%rsp,%rdx) # 1024-byte Folded Spill109; AVX512-NEXT:    movl $64, %r8d110; AVX512-NEXT:    leaq {{[0-9]+}}(%rsp), %rdi111; AVX512-NEXT:    movw $8, %dx112; AVX512-NEXT:    # implicit-def: $al113; AVX512-NEXT:    movb %al, {{[0-9]+}}(%rsp)114; AVX512-NEXT:    movw %cx, {{[0-9]+}}(%rsp)115; AVX512-NEXT:    # implicit-def: $al116; AVX512-NEXT:    movb %al, {{[0-9]+}}(%rsp)117; AVX512-NEXT:    movw %cx, {{[0-9]+}}(%rsp)118; AVX512-NEXT:    # implicit-def: $al119; AVX512-NEXT:    movb %al, {{[0-9]+}}(%rsp)120; AVX512-NEXT:    movw %si, {{[0-9]+}}(%rsp)121; AVX512-NEXT:    # implicit-def: $al122; AVX512-NEXT:    movb %al, {{[0-9]+}}(%rsp)123; AVX512-NEXT:    movw %cx, {{[0-9]+}}(%rsp)124; AVX512-NEXT:    # implicit-def: $dl125; AVX512-NEXT:    movb %dl, {{[0-9]+}}(%rsp)126; AVX512-NEXT:    movw %cx, {{[0-9]+}}(%rsp)127; AVX512-NEXT:    ldtilecfg {{[0-9]+}}(%rsp)128; AVX512-NEXT:    tileloadd (%rdi,%r8), %tmm2129; AVX512-NEXT:    movl $64, %edi130; AVX512-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx131; AVX512-NEXT:    tileloadd (%rdx,%rdi), %tmm0132; AVX512-NEXT:    movw $8, %dx133; AVX512-NEXT:    movabsq $64, %rdi134; AVX512-NEXT:    tileloadd 1024(%rsp,%rdi), %tmm1 # 1024-byte Folded Reload135; AVX512-NEXT:    tdpbssd %tmm2, %tmm1, %tmm0136; AVX512-NEXT:    movl $64, %esi137; AVX512-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx138; AVX512-NEXT:    tilestored %tmm0, (%rdx,%rsi)139; AVX512-NEXT:    movl $64, %esi140; AVX512-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx141; AVX512-NEXT:    tileloadd (%rdx,%rsi), %tmm0142; AVX512-NEXT:    movl $buf, %edx143; AVX512-NEXT:    movl $32, %esi144; AVX512-NEXT:    tilestored %tmm0, (%rdx,%rsi)145; AVX512-NEXT:    movq %rbp, %rsp146; AVX512-NEXT:    popq %rbp147; AVX512-NEXT:    tilerelease148; AVX512-NEXT:    vzeroupper149; AVX512-NEXT:    retq150entry:151  %tobool.not = icmp eq i32 %cond, 0152  br i1 %tobool.not, label %if.else, label %if.then153 154if.then:                                          ; preds = %entry155  %0 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %row, i16 8, ptr @buf, i64 32)156  %1 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 8, i16 %col, ptr @buf, i64 32)157  %2 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %row, i16 %col, ptr @buf, i64 32)158  br label %if.end159 160if.else:                                          ; preds = %entry161  %3 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %row, i16 8, ptr @buf2, i64 32)162  %4 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 8, i16 %col, ptr @buf2, i64 32)163  %5 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %row, i16 %col, ptr @buf2, i64 32)164  br label %if.end165 166if.end:                                           ; preds = %if.else, %if.then167  %a.sroa.1094.0.in = phi x86_amx [ %3, %if.else ], [ %0, %if.then ]168  %b.sroa.1069.0.in = phi x86_amx [ %4, %if.else ], [ %1, %if.then ]169  %c.sroa.1044.0.in = phi x86_amx [ %5, %if.else ], [ %2, %if.then ]170  %6 = tail call x86_amx @llvm.x86.tdpbssd.internal(i16 %row, i16 %col, i16 8, x86_amx %c.sroa.1044.0.in, x86_amx %a.sroa.1094.0.in, x86_amx %b.sroa.1069.0.in)171  tail call void @llvm.x86.tilestored64.internal(i16 %row, i16 %col, ptr @buf, i64 32, x86_amx %6)172  ret void173}174 175declare x86_amx @llvm.x86.tileloadd64.internal(i16, i16, ptr, i64)176declare x86_amx @llvm.x86.tdpbssd.internal(i16, i16, i16, x86_amx, x86_amx, x86_amx)177declare void @llvm.x86.tilestored64.internal(i16, i16, ptr, i64, x86_amx)178