319 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 62; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avxvnniint8 --show-mc-encoding | FileCheck %s --check-prefixes=X863; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avxvnniint8 --show-mc-encoding | FileCheck %s --check-prefixes=X644; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx10.2 --show-mc-encoding | FileCheck %s --check-prefixes=AVX10-X865; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx10.2 --show-mc-encoding | FileCheck %s --check-prefixes=AVX10-X646 7declare <4 x i32> @llvm.x86.avx2.vpdpbssd.128(<4 x i32>, <4 x i32>, <4 x i32>)8 9define <4 x i32>@test_int_x86_avx2_vpdpbssd_128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2) {10; X86-LABEL: test_int_x86_avx2_vpdpbssd_128:11; X86: # %bb.0:12; X86-NEXT: vpdpbssd %xmm2, %xmm1, %xmm0 # encoding: [0xc4,0xe2,0x73,0x50,0xc2]13; X86-NEXT: retl # encoding: [0xc3]14;15; X64-LABEL: test_int_x86_avx2_vpdpbssd_128:16; X64: # %bb.0:17; X64-NEXT: vpdpbssd %xmm2, %xmm1, %xmm0 # encoding: [0xc4,0xe2,0x73,0x50,0xc2]18; X64-NEXT: retq # encoding: [0xc3]19;20; AVX10-X86-LABEL: test_int_x86_avx2_vpdpbssd_128:21; AVX10-X86: # %bb.0:22; AVX10-X86-NEXT: vpdpbssd %xmm2, %xmm1, %xmm0 # encoding: [0x62,0xf2,0x77,0x08,0x50,0xc2]23; AVX10-X86-NEXT: retl # encoding: [0xc3]24;25; AVX10-X64-LABEL: test_int_x86_avx2_vpdpbssd_128:26; AVX10-X64: # %bb.0:27; AVX10-X64-NEXT: vpdpbssd %xmm2, %xmm1, %xmm0 # encoding: [0x62,0xf2,0x77,0x08,0x50,0xc2]28; AVX10-X64-NEXT: retq # encoding: [0xc3]29 %res = call <4 x i32> @llvm.x86.avx2.vpdpbssd.128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2)30 ret <4 x i32> %res31}32 33declare <4 x i32> @llvm.x86.avx2.vpdpbssds.128(<4 x i32>, <4 x i32>, <4 x i32>)34 35define <4 x i32>@test_int_x86_avx2_vpdpbssds_128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2) {36; X86-LABEL: test_int_x86_avx2_vpdpbssds_128:37; X86: # %bb.0:38; X86-NEXT: vpdpbssds %xmm2, %xmm1, %xmm0 # encoding: [0xc4,0xe2,0x73,0x51,0xc2]39; X86-NEXT: retl # encoding: [0xc3]40;41; X64-LABEL: test_int_x86_avx2_vpdpbssds_128:42; X64: # %bb.0:43; X64-NEXT: vpdpbssds %xmm2, %xmm1, %xmm0 # encoding: [0xc4,0xe2,0x73,0x51,0xc2]44; X64-NEXT: retq # encoding: [0xc3]45;46; AVX10-X86-LABEL: test_int_x86_avx2_vpdpbssds_128:47; AVX10-X86: # %bb.0:48; AVX10-X86-NEXT: vpdpbssds %xmm2, %xmm1, %xmm0 # encoding: [0x62,0xf2,0x77,0x08,0x51,0xc2]49; AVX10-X86-NEXT: retl # encoding: [0xc3]50;51; AVX10-X64-LABEL: test_int_x86_avx2_vpdpbssds_128:52; AVX10-X64: # %bb.0:53; AVX10-X64-NEXT: vpdpbssds %xmm2, %xmm1, %xmm0 # encoding: [0x62,0xf2,0x77,0x08,0x51,0xc2]54; AVX10-X64-NEXT: retq # encoding: [0xc3]55 %res = call <4 x i32> @llvm.x86.avx2.vpdpbssds.128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2)56 ret <4 x i32> %res57}58 59declare <8 x i32> @llvm.x86.avx2.vpdpbssd.256(<8 x i32>, <8 x i32>, <8 x i32>)60 61define <8 x i32>@test_int_x86_avx2_vpdpbssd_256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2) {62; X86-LABEL: test_int_x86_avx2_vpdpbssd_256:63; X86: # %bb.0:64; X86-NEXT: vpdpbssd %ymm2, %ymm1, %ymm0 # encoding: [0xc4,0xe2,0x77,0x50,0xc2]65; X86-NEXT: retl # encoding: [0xc3]66;67; X64-LABEL: test_int_x86_avx2_vpdpbssd_256:68; X64: # %bb.0:69; X64-NEXT: vpdpbssd %ymm2, %ymm1, %ymm0 # encoding: [0xc4,0xe2,0x77,0x50,0xc2]70; X64-NEXT: retq # encoding: [0xc3]71;72; AVX10-X86-LABEL: test_int_x86_avx2_vpdpbssd_256:73; AVX10-X86: # %bb.0:74; AVX10-X86-NEXT: vpdpbssd %ymm2, %ymm1, %ymm0 # encoding: [0x62,0xf2,0x77,0x28,0x50,0xc2]75; AVX10-X86-NEXT: retl # encoding: [0xc3]76;77; AVX10-X64-LABEL: test_int_x86_avx2_vpdpbssd_256:78; AVX10-X64: # %bb.0:79; AVX10-X64-NEXT: vpdpbssd %ymm2, %ymm1, %ymm0 # encoding: [0x62,0xf2,0x77,0x28,0x50,0xc2]80; AVX10-X64-NEXT: retq # encoding: [0xc3]81 %res = call <8 x i32> @llvm.x86.avx2.vpdpbssd.256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2)82 ret <8 x i32> %res83}84 85declare <8 x i32> @llvm.x86.avx2.vpdpbssds.256(<8 x i32>, <8 x i32>, <8 x i32>)86 87define <8 x i32>@test_int_x86_avx2_vpdpbssds_256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2) {88; X86-LABEL: test_int_x86_avx2_vpdpbssds_256:89; X86: # %bb.0:90; X86-NEXT: vpdpbssds %ymm2, %ymm1, %ymm0 # encoding: [0xc4,0xe2,0x77,0x51,0xc2]91; X86-NEXT: retl # encoding: [0xc3]92;93; X64-LABEL: test_int_x86_avx2_vpdpbssds_256:94; X64: # %bb.0:95; X64-NEXT: vpdpbssds %ymm2, %ymm1, %ymm0 # encoding: [0xc4,0xe2,0x77,0x51,0xc2]96; X64-NEXT: retq # encoding: [0xc3]97;98; AVX10-X86-LABEL: test_int_x86_avx2_vpdpbssds_256:99; AVX10-X86: # %bb.0:100; AVX10-X86-NEXT: vpdpbssds %ymm2, %ymm1, %ymm0 # encoding: [0x62,0xf2,0x77,0x28,0x51,0xc2]101; AVX10-X86-NEXT: retl # encoding: [0xc3]102;103; AVX10-X64-LABEL: test_int_x86_avx2_vpdpbssds_256:104; AVX10-X64: # %bb.0:105; AVX10-X64-NEXT: vpdpbssds %ymm2, %ymm1, %ymm0 # encoding: [0x62,0xf2,0x77,0x28,0x51,0xc2]106; AVX10-X64-NEXT: retq # encoding: [0xc3]107 %res = call <8 x i32> @llvm.x86.avx2.vpdpbssds.256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2)108 ret <8 x i32> %res109}110 111declare <4 x i32> @llvm.x86.avx2.vpdpbsud.128(<4 x i32>, <4 x i32>, <4 x i32>)112 113define <4 x i32>@test_int_x86_avx2_vpdpbsud_128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2) {114; X86-LABEL: test_int_x86_avx2_vpdpbsud_128:115; X86: # %bb.0:116; X86-NEXT: vpdpbsud %xmm2, %xmm1, %xmm0 # encoding: [0xc4,0xe2,0x72,0x50,0xc2]117; X86-NEXT: retl # encoding: [0xc3]118;119; X64-LABEL: test_int_x86_avx2_vpdpbsud_128:120; X64: # %bb.0:121; X64-NEXT: vpdpbsud %xmm2, %xmm1, %xmm0 # encoding: [0xc4,0xe2,0x72,0x50,0xc2]122; X64-NEXT: retq # encoding: [0xc3]123;124; AVX10-X86-LABEL: test_int_x86_avx2_vpdpbsud_128:125; AVX10-X86: # %bb.0:126; AVX10-X86-NEXT: vpdpbsud %xmm2, %xmm1, %xmm0 # encoding: [0x62,0xf2,0x76,0x08,0x50,0xc2]127; AVX10-X86-NEXT: retl # encoding: [0xc3]128;129; AVX10-X64-LABEL: test_int_x86_avx2_vpdpbsud_128:130; AVX10-X64: # %bb.0:131; AVX10-X64-NEXT: vpdpbsud %xmm2, %xmm1, %xmm0 # encoding: [0x62,0xf2,0x76,0x08,0x50,0xc2]132; AVX10-X64-NEXT: retq # encoding: [0xc3]133 %res = call <4 x i32> @llvm.x86.avx2.vpdpbsud.128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2)134 ret <4 x i32> %res135}136 137declare <4 x i32> @llvm.x86.avx2.vpdpbsuds.128(<4 x i32>, <4 x i32>, <4 x i32>)138 139define <4 x i32>@test_int_x86_avx2_vpdpbsuds_128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2) {140; X86-LABEL: test_int_x86_avx2_vpdpbsuds_128:141; X86: # %bb.0:142; X86-NEXT: vpdpbsuds %xmm2, %xmm1, %xmm0 # encoding: [0xc4,0xe2,0x72,0x51,0xc2]143; X86-NEXT: retl # encoding: [0xc3]144;145; X64-LABEL: test_int_x86_avx2_vpdpbsuds_128:146; X64: # %bb.0:147; X64-NEXT: vpdpbsuds %xmm2, %xmm1, %xmm0 # encoding: [0xc4,0xe2,0x72,0x51,0xc2]148; X64-NEXT: retq # encoding: [0xc3]149;150; AVX10-X86-LABEL: test_int_x86_avx2_vpdpbsuds_128:151; AVX10-X86: # %bb.0:152; AVX10-X86-NEXT: vpdpbsuds %xmm2, %xmm1, %xmm0 # encoding: [0x62,0xf2,0x76,0x08,0x51,0xc2]153; AVX10-X86-NEXT: retl # encoding: [0xc3]154;155; AVX10-X64-LABEL: test_int_x86_avx2_vpdpbsuds_128:156; AVX10-X64: # %bb.0:157; AVX10-X64-NEXT: vpdpbsuds %xmm2, %xmm1, %xmm0 # encoding: [0x62,0xf2,0x76,0x08,0x51,0xc2]158; AVX10-X64-NEXT: retq # encoding: [0xc3]159 %res = call <4 x i32> @llvm.x86.avx2.vpdpbsuds.128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2)160 ret <4 x i32> %res161}162 163declare <8 x i32> @llvm.x86.avx2.vpdpbsud.256(<8 x i32>, <8 x i32>, <8 x i32>)164 165define <8 x i32>@test_int_x86_avx2_vpdpbsud_256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2) {166; X86-LABEL: test_int_x86_avx2_vpdpbsud_256:167; X86: # %bb.0:168; X86-NEXT: vpdpbsud %ymm2, %ymm1, %ymm0 # encoding: [0xc4,0xe2,0x76,0x50,0xc2]169; X86-NEXT: retl # encoding: [0xc3]170;171; X64-LABEL: test_int_x86_avx2_vpdpbsud_256:172; X64: # %bb.0:173; X64-NEXT: vpdpbsud %ymm2, %ymm1, %ymm0 # encoding: [0xc4,0xe2,0x76,0x50,0xc2]174; X64-NEXT: retq # encoding: [0xc3]175;176; AVX10-X86-LABEL: test_int_x86_avx2_vpdpbsud_256:177; AVX10-X86: # %bb.0:178; AVX10-X86-NEXT: vpdpbsud %ymm2, %ymm1, %ymm0 # encoding: [0x62,0xf2,0x76,0x28,0x50,0xc2]179; AVX10-X86-NEXT: retl # encoding: [0xc3]180;181; AVX10-X64-LABEL: test_int_x86_avx2_vpdpbsud_256:182; AVX10-X64: # %bb.0:183; AVX10-X64-NEXT: vpdpbsud %ymm2, %ymm1, %ymm0 # encoding: [0x62,0xf2,0x76,0x28,0x50,0xc2]184; AVX10-X64-NEXT: retq # encoding: [0xc3]185 %res = call <8 x i32> @llvm.x86.avx2.vpdpbsud.256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2)186 ret <8 x i32> %res187}188 189declare <8 x i32> @llvm.x86.avx2.vpdpbsuds.256(<8 x i32>, <8 x i32>, <8 x i32>)190 191define <8 x i32>@test_int_x86_avx2_vpdpbsuds_256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2) {192; X86-LABEL: test_int_x86_avx2_vpdpbsuds_256:193; X86: # %bb.0:194; X86-NEXT: vpdpbsuds %ymm2, %ymm1, %ymm0 # encoding: [0xc4,0xe2,0x76,0x51,0xc2]195; X86-NEXT: retl # encoding: [0xc3]196;197; X64-LABEL: test_int_x86_avx2_vpdpbsuds_256:198; X64: # %bb.0:199; X64-NEXT: vpdpbsuds %ymm2, %ymm1, %ymm0 # encoding: [0xc4,0xe2,0x76,0x51,0xc2]200; X64-NEXT: retq # encoding: [0xc3]201;202; AVX10-X86-LABEL: test_int_x86_avx2_vpdpbsuds_256:203; AVX10-X86: # %bb.0:204; AVX10-X86-NEXT: vpdpbsuds %ymm2, %ymm1, %ymm0 # encoding: [0x62,0xf2,0x76,0x28,0x51,0xc2]205; AVX10-X86-NEXT: retl # encoding: [0xc3]206;207; AVX10-X64-LABEL: test_int_x86_avx2_vpdpbsuds_256:208; AVX10-X64: # %bb.0:209; AVX10-X64-NEXT: vpdpbsuds %ymm2, %ymm1, %ymm0 # encoding: [0x62,0xf2,0x76,0x28,0x51,0xc2]210; AVX10-X64-NEXT: retq # encoding: [0xc3]211 %res = call <8 x i32> @llvm.x86.avx2.vpdpbsuds.256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2)212 ret <8 x i32> %res213}214 215declare <4 x i32> @llvm.x86.avx2.vpdpbuud.128(<4 x i32>, <4 x i32>, <4 x i32>)216 217define <4 x i32>@test_int_x86_avx2_vpdpbuud(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2) {218; X86-LABEL: test_int_x86_avx2_vpdpbuud:219; X86: # %bb.0:220; X86-NEXT: vpdpbuud %xmm2, %xmm1, %xmm0 # encoding: [0xc4,0xe2,0x70,0x50,0xc2]221; X86-NEXT: retl # encoding: [0xc3]222;223; X64-LABEL: test_int_x86_avx2_vpdpbuud:224; X64: # %bb.0:225; X64-NEXT: vpdpbuud %xmm2, %xmm1, %xmm0 # encoding: [0xc4,0xe2,0x70,0x50,0xc2]226; X64-NEXT: retq # encoding: [0xc3]227;228; AVX10-X86-LABEL: test_int_x86_avx2_vpdpbuud:229; AVX10-X86: # %bb.0:230; AVX10-X86-NEXT: vpdpbuud %xmm2, %xmm1, %xmm0 # encoding: [0x62,0xf2,0x74,0x08,0x50,0xc2]231; AVX10-X86-NEXT: retl # encoding: [0xc3]232;233; AVX10-X64-LABEL: test_int_x86_avx2_vpdpbuud:234; AVX10-X64: # %bb.0:235; AVX10-X64-NEXT: vpdpbuud %xmm2, %xmm1, %xmm0 # encoding: [0x62,0xf2,0x74,0x08,0x50,0xc2]236; AVX10-X64-NEXT: retq # encoding: [0xc3]237 %res = call <4 x i32> @llvm.x86.avx2.vpdpbuud.128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2)238 ret <4 x i32> %res239}240 241declare <4 x i32> @llvm.x86.avx2.vpdpbuuds.128(<4 x i32>, <4 x i32>, <4 x i32>)242 243define <4 x i32>@test_int_x86_avx2_vpdpbuuds_128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2) {244; X86-LABEL: test_int_x86_avx2_vpdpbuuds_128:245; X86: # %bb.0:246; X86-NEXT: vpdpbuuds %xmm2, %xmm1, %xmm0 # encoding: [0xc4,0xe2,0x70,0x51,0xc2]247; X86-NEXT: retl # encoding: [0xc3]248;249; X64-LABEL: test_int_x86_avx2_vpdpbuuds_128:250; X64: # %bb.0:251; X64-NEXT: vpdpbuuds %xmm2, %xmm1, %xmm0 # encoding: [0xc4,0xe2,0x70,0x51,0xc2]252; X64-NEXT: retq # encoding: [0xc3]253;254; AVX10-X86-LABEL: test_int_x86_avx2_vpdpbuuds_128:255; AVX10-X86: # %bb.0:256; AVX10-X86-NEXT: vpdpbuuds %xmm2, %xmm1, %xmm0 # encoding: [0x62,0xf2,0x74,0x08,0x51,0xc2]257; AVX10-X86-NEXT: retl # encoding: [0xc3]258;259; AVX10-X64-LABEL: test_int_x86_avx2_vpdpbuuds_128:260; AVX10-X64: # %bb.0:261; AVX10-X64-NEXT: vpdpbuuds %xmm2, %xmm1, %xmm0 # encoding: [0x62,0xf2,0x74,0x08,0x51,0xc2]262; AVX10-X64-NEXT: retq # encoding: [0xc3]263 %res = call <4 x i32> @llvm.x86.avx2.vpdpbuuds.128(<4 x i32> %x0, <4 x i32> %x1, <4 x i32> %x2)264 ret <4 x i32> %res265}266 267declare <8 x i32> @llvm.x86.avx2.vpdpbuud.256(<8 x i32>, <8 x i32>, <8 x i32>)268 269define <8 x i32>@test_int_x86_avx2_vpdpbuud_256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2) {270; X86-LABEL: test_int_x86_avx2_vpdpbuud_256:271; X86: # %bb.0:272; X86-NEXT: vpdpbuud %ymm2, %ymm1, %ymm0 # encoding: [0xc4,0xe2,0x74,0x50,0xc2]273; X86-NEXT: retl # encoding: [0xc3]274;275; X64-LABEL: test_int_x86_avx2_vpdpbuud_256:276; X64: # %bb.0:277; X64-NEXT: vpdpbuud %ymm2, %ymm1, %ymm0 # encoding: [0xc4,0xe2,0x74,0x50,0xc2]278; X64-NEXT: retq # encoding: [0xc3]279;280; AVX10-X86-LABEL: test_int_x86_avx2_vpdpbuud_256:281; AVX10-X86: # %bb.0:282; AVX10-X86-NEXT: vpdpbuud %ymm2, %ymm1, %ymm0 # encoding: [0x62,0xf2,0x74,0x28,0x50,0xc2]283; AVX10-X86-NEXT: retl # encoding: [0xc3]284;285; AVX10-X64-LABEL: test_int_x86_avx2_vpdpbuud_256:286; AVX10-X64: # %bb.0:287; AVX10-X64-NEXT: vpdpbuud %ymm2, %ymm1, %ymm0 # encoding: [0x62,0xf2,0x74,0x28,0x50,0xc2]288; AVX10-X64-NEXT: retq # encoding: [0xc3]289 %res = call <8 x i32> @llvm.x86.avx2.vpdpbuud.256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2)290 ret <8 x i32> %res291}292 293declare <8 x i32> @llvm.x86.avx2.vpdpbuuds.256(<8 x i32>, <8 x i32>, <8 x i32>)294 295define <8 x i32>@test_int_x86_avx2_vpdpbuuds_256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2) {296; X86-LABEL: test_int_x86_avx2_vpdpbuuds_256:297; X86: # %bb.0:298; X86-NEXT: vpdpbuuds %ymm2, %ymm1, %ymm0 # encoding: [0xc4,0xe2,0x74,0x51,0xc2]299; X86-NEXT: retl # encoding: [0xc3]300;301; X64-LABEL: test_int_x86_avx2_vpdpbuuds_256:302; X64: # %bb.0:303; X64-NEXT: vpdpbuuds %ymm2, %ymm1, %ymm0 # encoding: [0xc4,0xe2,0x74,0x51,0xc2]304; X64-NEXT: retq # encoding: [0xc3]305;306; AVX10-X86-LABEL: test_int_x86_avx2_vpdpbuuds_256:307; AVX10-X86: # %bb.0:308; AVX10-X86-NEXT: vpdpbuuds %ymm2, %ymm1, %ymm0 # encoding: [0x62,0xf2,0x74,0x28,0x51,0xc2]309; AVX10-X86-NEXT: retl # encoding: [0xc3]310;311; AVX10-X64-LABEL: test_int_x86_avx2_vpdpbuuds_256:312; AVX10-X64: # %bb.0:313; AVX10-X64-NEXT: vpdpbuuds %ymm2, %ymm1, %ymm0 # encoding: [0x62,0xf2,0x74,0x28,0x51,0xc2]314; AVX10-X64-NEXT: retq # encoding: [0xc3]315 %res = call <8 x i32> @llvm.x86.avx2.vpdpbuuds.256(<8 x i32> %x0, <8 x i32> %x1, <8 x i32> %x2)316 ret <8 x i32> %res317}318 319