brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.1 KiB · 275c853 Raw
177 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+amx-int8,+avx512f -verify-machineinstrs | FileCheck %s --check-prefix=AVX5123; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+amx-int8,+avx2 -verify-machineinstrs | FileCheck %s --check-prefix=AVX24; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+amx-int8,+avx -verify-machineinstrs | FileCheck %s --check-prefix=AVX15; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+amx-int8 -verify-machineinstrs | FileCheck %s --check-prefix=SSE26 7@buf = dso_local global [1024 x i8] zeroinitializer, align 648@buf2 = dso_local global [1024 x i8] zeroinitializer, align 649 10; Function Attrs: nounwind uwtable11define <4 x i32> @test_api(i32 %0, i16 signext %1, i16 signext %2, <4 x i32> %xmm0) {12; AVX512-LABEL: test_api:13; AVX512:       # %bb.0:14; AVX512-NEXT:    vxorps %xmm1, %xmm1, %xmm115; AVX512-NEXT:    vmovups %zmm1, -{{[0-9]+}}(%rsp)16; AVX512-NEXT:    movb $1, -{{[0-9]+}}(%rsp)17; AVX512-NEXT:    movw %dx, -{{[0-9]+}}(%rsp)18; AVX512-NEXT:    movw %dx, -{{[0-9]+}}(%rsp)19; AVX512-NEXT:    movw %si, -{{[0-9]+}}(%rsp)20; AVX512-NEXT:    testl %edi, %edi21; AVX512-NEXT:    movsbl %sil, %eax22; AVX512-NEXT:    movb %al, -{{[0-9]+}}(%rsp)23; AVX512-NEXT:    movb %al, -{{[0-9]+}}(%rsp)24; AVX512-NEXT:    movb %al, -{{[0-9]+}}(%rsp)25; AVX512-NEXT:    ldtilecfg -{{[0-9]+}}(%rsp)26; AVX512-NEXT:    je .LBB0_227; AVX512-NEXT:  # %bb.1:28; AVX512-NEXT:    movl $buf, %ecx29; AVX512-NEXT:    jmp .LBB0_330; AVX512-NEXT:  .LBB0_2:31; AVX512-NEXT:    movl $buf2, %ecx32; AVX512-NEXT:  .LBB0_3:33; AVX512-NEXT:    movl $32, %edi34; AVX512-NEXT:    tileloadd (%rcx,%rdi), %tmm035; AVX512-NEXT:    tileloadd (%rcx,%rdi), %tmm236; AVX512-NEXT:    tileloadd (%rcx,%rdi), %tmm137; AVX512-NEXT:    tdpbssd %tmm2, %tmm0, %tmm138; AVX512-NEXT:    movl $buf, %ecx39; AVX512-NEXT:    movl $32, %esi40; AVX512-NEXT:    tilestored %tmm1, (%rcx,%rsi)41; AVX512-NEXT:    tilerelease42; AVX512-NEXT:    vzeroupper43; AVX512-NEXT:    retq44;45; AVX2-LABEL: test_api:46; AVX2:       # %bb.0:47; AVX2-NEXT:    vxorps %xmm1, %xmm1, %xmm148; AVX2-NEXT:    vmovups %ymm1, -{{[0-9]+}}(%rsp)49; AVX2-NEXT:    vmovups %ymm1, -{{[0-9]+}}(%rsp)50; AVX2-NEXT:    movb $1, -{{[0-9]+}}(%rsp)51; AVX2-NEXT:    movw %dx, -{{[0-9]+}}(%rsp)52; AVX2-NEXT:    movw %dx, -{{[0-9]+}}(%rsp)53; AVX2-NEXT:    movw %si, -{{[0-9]+}}(%rsp)54; AVX2-NEXT:    testl %edi, %edi55; AVX2-NEXT:    movsbl %sil, %eax56; AVX2-NEXT:    movb %al, -{{[0-9]+}}(%rsp)57; AVX2-NEXT:    movb %al, -{{[0-9]+}}(%rsp)58; AVX2-NEXT:    movb %al, -{{[0-9]+}}(%rsp)59; AVX2-NEXT:    ldtilecfg -{{[0-9]+}}(%rsp)60; AVX2-NEXT:    je .LBB0_261; AVX2-NEXT:  # %bb.1:62; AVX2-NEXT:    movl $buf, %ecx63; AVX2-NEXT:    jmp .LBB0_364; AVX2-NEXT:  .LBB0_2:65; AVX2-NEXT:    movl $buf2, %ecx66; AVX2-NEXT:  .LBB0_3:67; AVX2-NEXT:    movl $32, %edi68; AVX2-NEXT:    tileloadd (%rcx,%rdi), %tmm069; AVX2-NEXT:    tileloadd (%rcx,%rdi), %tmm270; AVX2-NEXT:    tileloadd (%rcx,%rdi), %tmm171; AVX2-NEXT:    tdpbssd %tmm2, %tmm0, %tmm172; AVX2-NEXT:    movl $buf, %ecx73; AVX2-NEXT:    movl $32, %esi74; AVX2-NEXT:    tilestored %tmm1, (%rcx,%rsi)75; AVX2-NEXT:    tilerelease76; AVX2-NEXT:    vzeroupper77; AVX2-NEXT:    retq78;79; AVX1-LABEL: test_api:80; AVX1:       # %bb.0:81; AVX1-NEXT:    vxorps %xmm1, %xmm1, %xmm182; AVX1-NEXT:    vmovups %xmm1, -{{[0-9]+}}(%rsp)83; AVX1-NEXT:    vmovups %xmm1, -{{[0-9]+}}(%rsp)84; AVX1-NEXT:    vmovups %xmm1, -{{[0-9]+}}(%rsp)85; AVX1-NEXT:    vmovups %xmm1, -{{[0-9]+}}(%rsp)86; AVX1-NEXT:    movb $1, -{{[0-9]+}}(%rsp)87; AVX1-NEXT:    movw %dx, -{{[0-9]+}}(%rsp)88; AVX1-NEXT:    movw %dx, -{{[0-9]+}}(%rsp)89; AVX1-NEXT:    movw %si, -{{[0-9]+}}(%rsp)90; AVX1-NEXT:    testl %edi, %edi91; AVX1-NEXT:    movsbl %sil, %eax92; AVX1-NEXT:    movb %al, -{{[0-9]+}}(%rsp)93; AVX1-NEXT:    movb %al, -{{[0-9]+}}(%rsp)94; AVX1-NEXT:    movb %al, -{{[0-9]+}}(%rsp)95; AVX1-NEXT:    ldtilecfg -{{[0-9]+}}(%rsp)96; AVX1-NEXT:    je .LBB0_297; AVX1-NEXT:  # %bb.1:98; AVX1-NEXT:    movl $buf, %ecx99; AVX1-NEXT:    jmp .LBB0_3100; AVX1-NEXT:  .LBB0_2:101; AVX1-NEXT:    movl $buf2, %ecx102; AVX1-NEXT:  .LBB0_3:103; AVX1-NEXT:    movl $32, %edi104; AVX1-NEXT:    tileloadd (%rcx,%rdi), %tmm0105; AVX1-NEXT:    tileloadd (%rcx,%rdi), %tmm2106; AVX1-NEXT:    tileloadd (%rcx,%rdi), %tmm1107; AVX1-NEXT:    tdpbssd %tmm2, %tmm0, %tmm1108; AVX1-NEXT:    movl $buf, %ecx109; AVX1-NEXT:    movl $32, %esi110; AVX1-NEXT:    tilestored %tmm1, (%rcx,%rsi)111; AVX1-NEXT:    tilerelease112; AVX1-NEXT:    retq113;114; SSE2-LABEL: test_api:115; SSE2:       # %bb.0:116; SSE2-NEXT:    xorps %xmm1, %xmm1117; SSE2-NEXT:    movups %xmm1, -{{[0-9]+}}(%rsp)118; SSE2-NEXT:    movups %xmm1, -{{[0-9]+}}(%rsp)119; SSE2-NEXT:    movups %xmm1, -{{[0-9]+}}(%rsp)120; SSE2-NEXT:    movups %xmm1, -{{[0-9]+}}(%rsp)121; SSE2-NEXT:    movb $1, -{{[0-9]+}}(%rsp)122; SSE2-NEXT:    movw %dx, -{{[0-9]+}}(%rsp)123; SSE2-NEXT:    movw %dx, -{{[0-9]+}}(%rsp)124; SSE2-NEXT:    movw %si, -{{[0-9]+}}(%rsp)125; SSE2-NEXT:    testl %edi, %edi126; SSE2-NEXT:    movsbl %sil, %eax127; SSE2-NEXT:    movb %al, -{{[0-9]+}}(%rsp)128; SSE2-NEXT:    movb %al, -{{[0-9]+}}(%rsp)129; SSE2-NEXT:    movb %al, -{{[0-9]+}}(%rsp)130; SSE2-NEXT:    ldtilecfg -{{[0-9]+}}(%rsp)131; SSE2-NEXT:    je .LBB0_2132; SSE2-NEXT:  # %bb.1:133; SSE2-NEXT:    movl $buf, %ecx134; SSE2-NEXT:    jmp .LBB0_3135; SSE2-NEXT:  .LBB0_2:136; SSE2-NEXT:    movl $buf2, %ecx137; SSE2-NEXT:  .LBB0_3:138; SSE2-NEXT:    movl $32, %edi139; SSE2-NEXT:    tileloadd (%rcx,%rdi), %tmm0140; SSE2-NEXT:    tileloadd (%rcx,%rdi), %tmm2141; SSE2-NEXT:    tileloadd (%rcx,%rdi), %tmm1142; SSE2-NEXT:    tdpbssd %tmm2, %tmm0, %tmm1143; SSE2-NEXT:    movl $buf, %ecx144; SSE2-NEXT:    movl $32, %esi145; SSE2-NEXT:    tilestored %tmm1, (%rcx,%rsi)146; SSE2-NEXT:    tilerelease147; SSE2-NEXT:    retq148  %4 = icmp eq i32 %0, 0149  %5 = shl i16 %1, 8150  %6 = ashr exact i16 %5, 8151  br i1 %4, label %11, label %7152 1537:                                                ; preds = %3154  %8 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %6, i16 %1, ptr @buf, i64 32)155  %9 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %6, i16 %2, ptr @buf, i64 32)156  %10 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %6, i16 %2, ptr @buf, i64 32)157  br label %15158 15911:                                               ; preds = %3160  %12 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %6, i16 %1, ptr @buf2, i64 32)161  %13 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %6, i16 %2, ptr @buf2, i64 32)162  %14 = tail call x86_amx @llvm.x86.tileloadd64.internal(i16 %6, i16 %2, ptr @buf2, i64 32)163  br label %15164 16515:                                               ; preds = %11, %7166  %16 = phi x86_amx [ %12, %11 ], [ %8, %7 ]167  %17 = phi x86_amx [ %13, %11 ], [ %9, %7 ]168  %18 = phi x86_amx [ %14, %11 ], [ %10, %7 ]169  %19 = tail call x86_amx @llvm.x86.tdpbssd.internal(i16 %6, i16 %2, i16 %1, x86_amx %18, x86_amx %16, x86_amx %17)170  tail call void @llvm.x86.tilestored64.internal(i16 %6, i16 %2, ptr @buf, i64 32, x86_amx %19)171  ret <4 x i32> %xmm0172}173 174declare x86_amx @llvm.x86.tileloadd64.internal(i16, i16, ptr, i64)175declare x86_amx @llvm.x86.tdpbssd.internal(i16, i16, i16, x86_amx, x86_amx, x86_amx)176declare void @llvm.x86.tilestored64.internal(i16, i16, ptr, i64, x86_amx)177