678 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -verify-machineinstrs -mtriple=x86_64-unknown-unknown --show-mc-encoding -mattr=+avx10.2 | FileCheck %s --check-prefixes=CHECK,X643; RUN: llc < %s -verify-machineinstrs -mtriple=i686-unknown-unknown --show-mc-encoding -mattr=+avx10.2 | FileCheck %s --check-prefixes=CHECK,X864 5define <32 x half> @test_int_x86_avx10_vcvt2ps2phx512(<16 x float> %A, <16 x float> %B) {6; CHECK-LABEL: test_int_x86_avx10_vcvt2ps2phx512:7; CHECK: # %bb.0:8; CHECK-NEXT: vcvt2ps2phx %zmm1, %zmm0, %zmm0 # encoding: [0x62,0xf2,0x7d,0x48,0x67,0xc1]9; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]10 %ret = call <32 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.512(<16 x float> %A, <16 x float> %B, <32 x half> zeroinitializer, i32 -1, i32 4)11 ret <32 x half> %ret12}13 14define <32 x half> @test_int_x86_avx10_vcvt2ps2phx512_mask(<32 x half> %W, i32 %U, <16 x float> %A, <16 x float> %B) {15; X64-LABEL: test_int_x86_avx10_vcvt2ps2phx512_mask:16; X64: # %bb.0:17; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]18; X64-NEXT: vcvt2ps2phx %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0x75,0x49,0x67,0xc2]19; X64-NEXT: retq # encoding: [0xc3]20;21; X86-LABEL: test_int_x86_avx10_vcvt2ps2phx512_mask:22; X86: # %bb.0:23; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]24; X86-NEXT: vcvt2ps2phx %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0x75,0x49,0x67,0xc2]25; X86-NEXT: retl # encoding: [0xc3]26 %ret = call <32 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.512(<16 x float> %A, <16 x float> %B, <32 x half> %W, i32 %U, i32 4)27 ret <32 x half> %ret28}29 30define <32 x half> @test_int_x86_avx10_vcvt2ps2phx512_maskz(i32 %U, <16 x float> %A, <16 x float> %B) {31; X64-LABEL: test_int_x86_avx10_vcvt2ps2phx512_maskz:32; X64: # %bb.0:33; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]34; X64-NEXT: vcvt2ps2phx %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7d,0xc9,0x67,0xc1]35; X64-NEXT: retq # encoding: [0xc3]36;37; X86-LABEL: test_int_x86_avx10_vcvt2ps2phx512_maskz:38; X86: # %bb.0:39; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]40; X86-NEXT: vcvt2ps2phx %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7d,0xc9,0x67,0xc1]41; X86-NEXT: retl # encoding: [0xc3]42 %ret = call <32 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.512(<16 x float> %A, <16 x float> %B, <32 x half> zeroinitializer, i32 %U, i32 4)43 ret <32 x half> %ret44}45 46define <32 x half> @test_int_x86_avx10_vcvt2ps2phx512_round(<16 x float> %A, <16 x float> %B) {47; CHECK-LABEL: test_int_x86_avx10_vcvt2ps2phx512_round:48; CHECK: # %bb.0:49; CHECK-NEXT: vcvt2ps2phx {rz-sae}, %zmm1, %zmm0, %zmm0 # encoding: [0x62,0xf2,0x7d,0x78,0x67,0xc1]50; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]51 %ret = call <32 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.512(<16 x float> %A, <16 x float> %B, <32 x half> zeroinitializer, i32 -1, i32 11)52 ret <32 x half> %ret53}54 55define <32 x half> @test_int_x86_avx10_vcvt2ps2phx512_round_mask(<32 x half> %W, i32 %U, <16 x float> %A, <16 x float> %B) {56; X64-LABEL: test_int_x86_avx10_vcvt2ps2phx512_round_mask:57; X64: # %bb.0:58; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]59; X64-NEXT: vcvt2ps2phx {rz-sae}, %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0x75,0x79,0x67,0xc2]60; X64-NEXT: retq # encoding: [0xc3]61;62; X86-LABEL: test_int_x86_avx10_vcvt2ps2phx512_round_mask:63; X86: # %bb.0:64; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]65; X86-NEXT: vcvt2ps2phx {rz-sae}, %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0x75,0x79,0x67,0xc2]66; X86-NEXT: retl # encoding: [0xc3]67 %ret = call <32 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.512(<16 x float> %A, <16 x float> %B, <32 x half> %W, i32 %U, i32 11)68 ret <32 x half> %ret69}70 71define <32 x half> @test_int_x86_avx10_vcvt2ps2phx512_round_maskz(i32 %U, <16 x float> %A, <16 x float> %B) {72; X64-LABEL: test_int_x86_avx10_vcvt2ps2phx512_round_maskz:73; X64: # %bb.0:74; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]75; X64-NEXT: vcvt2ps2phx {rz-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7d,0xf9,0x67,0xc1]76; X64-NEXT: retq # encoding: [0xc3]77;78; X86-LABEL: test_int_x86_avx10_vcvt2ps2phx512_round_maskz:79; X86: # %bb.0:80; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]81; X86-NEXT: vcvt2ps2phx {rz-sae}, %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7d,0xf9,0x67,0xc1]82; X86-NEXT: retl # encoding: [0xc3]83 %ret = call <32 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.512(<16 x float> %A, <16 x float> %B, <32 x half> zeroinitializer, i32 %U, i32 11)84 ret <32 x half> %ret85}86 87declare <32 x half> @llvm.x86.avx10.mask.vcvt2ps2phx512(<16 x float>, <16 x float>, i32, i32)88 89define <32 x i8> @test_int_x86_avx10_vcvtbiasph2bf8512(<64 x i8> %A, <32 x half> %B) nounwind {90; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2bf8512:91; CHECK: # %bb.0:92; CHECK-NEXT: vcvtbiasph2bf8 %zmm1, %zmm0, %ymm0 # encoding: [0x62,0xf2,0x7c,0x48,0x74,0xc1]93; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]94 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8512(<64 x i8> %A, <32 x half> %B, <32 x i8> undef, i32 -1)95 ret <32 x i8> %ret96}97 98define <32 x i8> @test_int_x86_avx10_mask_vcvtbiasph2bf8512(<32 x i8> %W, i32 %U, <64 x i8> %A, <32 x half> %B) nounwind {99; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8512:100; X64: # %bb.0:101; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]102; X64-NEXT: vcvtbiasph2bf8 %zmm2, %zmm1, %ymm0 {%k1} # encoding: [0x62,0xf2,0x74,0x49,0x74,0xc2]103; X64-NEXT: retq # encoding: [0xc3]104;105; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8512:106; X86: # %bb.0:107; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]108; X86-NEXT: vcvtbiasph2bf8 %zmm2, %zmm1, %ymm0 {%k1} # encoding: [0x62,0xf2,0x74,0x49,0x74,0xc2]109; X86-NEXT: retl # encoding: [0xc3]110 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8512(<64 x i8> %A, <32 x half> %B, <32 x i8> %W, i32 %U)111 ret <32 x i8> %ret112}113 114declare <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8512(<64 x i8> %A, <32 x half> %B, <32 x i8> %W, i32 %U)115 116define <32 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2bf8512(<64 x i8> %A, <32 x half> %B, i32 %U) nounwind {117; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8512:118; X64: # %bb.0:119; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]120; X64-NEXT: vcvtbiasph2bf8 %zmm1, %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf2,0x7c,0xc9,0x74,0xc1]121; X64-NEXT: retq # encoding: [0xc3]122;123; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8512:124; X86: # %bb.0:125; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]126; X86-NEXT: vcvtbiasph2bf8 %zmm1, %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf2,0x7c,0xc9,0x74,0xc1]127; X86-NEXT: retl # encoding: [0xc3]128 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8512(<64 x i8> %A, <32 x half> %B, <32 x i8> zeroinitializer, i32 %U)129 ret <32 x i8> %ret130}131 132define <32 x i8> @test_int_x86_avx10_vcvtbiasph2bf8s512(<64 x i8> %A, <32 x half> %B) nounwind {133; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2bf8s512:134; CHECK: # %bb.0:135; CHECK-NEXT: vcvtbiasph2bf8s %zmm1, %zmm0, %ymm0 # encoding: [0x62,0xf5,0x7c,0x48,0x74,0xc1]136; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]137 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s512(<64 x i8> %A, <32 x half> %B, <32 x i8> undef, i32 -1)138 ret <32 x i8> %ret139}140 141define <32 x i8> @test_int_x86_avx10_mask_vcvtbiasph2bf8s512(<32 x i8> %W, i32 %U, <64 x i8> %A, <32 x half> %B) nounwind {142; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8s512:143; X64: # %bb.0:144; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]145; X64-NEXT: vcvtbiasph2bf8s %zmm2, %zmm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x74,0x49,0x74,0xc2]146; X64-NEXT: retq # encoding: [0xc3]147;148; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8s512:149; X86: # %bb.0:150; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]151; X86-NEXT: vcvtbiasph2bf8s %zmm2, %zmm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x74,0x49,0x74,0xc2]152; X86-NEXT: retl # encoding: [0xc3]153 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s512(<64 x i8> %A, <32 x half> %B, <32 x i8> %W, i32 %U)154 ret <32 x i8> %ret155}156 157declare <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s512(<64 x i8> %A, <32 x half> %B, <32 x i8> %W, i32 %U)158 159define <32 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2bf8s512(<64 x i8> %A, <32 x half> %B, i32 %U) nounwind {160; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8s512:161; X64: # %bb.0:162; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]163; X64-NEXT: vcvtbiasph2bf8s %zmm1, %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x74,0xc1]164; X64-NEXT: retq # encoding: [0xc3]165;166; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8s512:167; X86: # %bb.0:168; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]169; X86-NEXT: vcvtbiasph2bf8s %zmm1, %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x74,0xc1]170; X86-NEXT: retl # encoding: [0xc3]171 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s512(<64 x i8> %A, <32 x half> %B, <32 x i8> zeroinitializer, i32 %U)172 ret <32 x i8> %ret173}174 175define <32 x i8> @test_int_x86_avx10_vcvtbiasph2hf8512(<64 x i8> %A, <32 x half> %B) nounwind {176; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2hf8512:177; CHECK: # %bb.0:178; CHECK-NEXT: vcvtbiasph2hf8 %zmm1, %zmm0, %ymm0 # encoding: [0x62,0xf5,0x7c,0x48,0x18,0xc1]179; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]180 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8512(<64 x i8> %A, <32 x half> %B, <32 x i8> undef, i32 -1)181 ret <32 x i8> %ret182}183 184define <32 x i8> @test_int_x86_avx10_mask_vcvtbiasph2hf8512(<32 x i8> %W, i32 %U, <64 x i8> %A, <32 x half> %B) nounwind {185; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8512:186; X64: # %bb.0:187; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]188; X64-NEXT: vcvtbiasph2hf8 %zmm2, %zmm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x74,0x49,0x18,0xc2]189; X64-NEXT: retq # encoding: [0xc3]190;191; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8512:192; X86: # %bb.0:193; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]194; X86-NEXT: vcvtbiasph2hf8 %zmm2, %zmm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x74,0x49,0x18,0xc2]195; X86-NEXT: retl # encoding: [0xc3]196 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8512(<64 x i8> %A, <32 x half> %B, <32 x i8> %W, i32 %U)197 ret <32 x i8> %ret198}199 200declare <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8512(<64 x i8> %A, <32 x half> %B, <32 x i8> %W, i32 %U)201 202define <32 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2hf8512(<64 x i8> %A, <32 x half> %B, i32 %U) nounwind {203; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8512:204; X64: # %bb.0:205; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]206; X64-NEXT: vcvtbiasph2hf8 %zmm1, %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x18,0xc1]207; X64-NEXT: retq # encoding: [0xc3]208;209; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8512:210; X86: # %bb.0:211; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]212; X86-NEXT: vcvtbiasph2hf8 %zmm1, %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x18,0xc1]213; X86-NEXT: retl # encoding: [0xc3]214 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8512(<64 x i8> %A, <32 x half> %B, <32 x i8> zeroinitializer, i32 %U)215 ret <32 x i8> %ret216}217 218define <32 x i8> @test_int_x86_avx10_vcvtbiasph2hf8s512(<64 x i8> %A, <32 x half> %B) nounwind {219; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2hf8s512:220; CHECK: # %bb.0:221; CHECK-NEXT: vcvtbiasph2hf8s %zmm1, %zmm0, %ymm0 # encoding: [0x62,0xf5,0x7c,0x48,0x1b,0xc1]222; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]223 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s512(<64 x i8> %A, <32 x half> %B, <32 x i8> undef, i32 -1)224 ret <32 x i8> %ret225}226 227define <32 x i8> @test_int_x86_avx10_mask_vcvtbiasph2hf8s512(<32 x i8> %W, i32 %U, <64 x i8> %A, <32 x half> %B) nounwind {228; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8s512:229; X64: # %bb.0:230; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]231; X64-NEXT: vcvtbiasph2hf8s %zmm2, %zmm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x74,0x49,0x1b,0xc2]232; X64-NEXT: retq # encoding: [0xc3]233;234; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8s512:235; X86: # %bb.0:236; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]237; X86-NEXT: vcvtbiasph2hf8s %zmm2, %zmm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x74,0x49,0x1b,0xc2]238; X86-NEXT: retl # encoding: [0xc3]239 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s512(<64 x i8> %A, <32 x half> %B, <32 x i8> %W, i32 %U)240 ret <32 x i8> %ret241}242 243declare <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s512(<64 x i8> %A, <32 x half> %B, <32 x i8> %W, i32 %U)244 245define <32 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2hf8s512(<64 x i8> %A, <32 x half> %B, i32 %U) nounwind {246; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8s512:247; X64: # %bb.0:248; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]249; X64-NEXT: vcvtbiasph2hf8s %zmm1, %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x1b,0xc1]250; X64-NEXT: retq # encoding: [0xc3]251;252; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8s512:253; X86: # %bb.0:254; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]255; X86-NEXT: vcvtbiasph2hf8s %zmm1, %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x1b,0xc1]256; X86-NEXT: retl # encoding: [0xc3]257 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s512(<64 x i8> %A, <32 x half> %B, <32 x i8> zeroinitializer, i32 %U)258 ret <32 x i8> %ret259}260 261define <64 x i8> @test_int_x86_avx10_vcvt2ph2bf8512(<32 x half> %A, <32 x half> %B) nounwind {262; CHECK-LABEL: test_int_x86_avx10_vcvt2ph2bf8512:263; CHECK: # %bb.0:264; CHECK-NEXT: vcvt2ph2bf8 %zmm1, %zmm0, %zmm0 # encoding: [0x62,0xf2,0x7f,0x48,0x74,0xc1]265; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]266 %ret = call <64 x i8> @llvm.x86.avx10.vcvt2ph2bf8512(<32 x half> %A, <32 x half> %B)267 ret <64 x i8> %ret268}269 270define <8 x i64> @test_int_x86_avx10_vcvt2ph2bf8512_mask(<8 x i64> %C, i64 %U, <32 x half> %A, <32 x half> %B) nounwind {271; X64-LABEL: test_int_x86_avx10_vcvt2ph2bf8512_mask:272; X64: # %bb.0:273; X64-NEXT: kmovq %rdi, %k1 # encoding: [0xc4,0xe1,0xfb,0x92,0xcf]274; X64-NEXT: vcvt2ph2bf8 %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0x77,0x49,0x74,0xc2]275; X64-NEXT: retq # encoding: [0xc3]276;277; X86-LABEL: test_int_x86_avx10_vcvt2ph2bf8512_mask:278; X86: # %bb.0:279; X86-NEXT: kmovq {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf8,0x90,0x4c,0x24,0x04]280; X86-NEXT: vcvt2ph2bf8 %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0x77,0x49,0x74,0xc2]281; X86-NEXT: retl # encoding: [0xc3]282 %1 = call <64 x i8> @llvm.x86.avx10.vcvt2ph2bf8512(<32 x half> %A, <32 x half> %B)283 %2 = bitcast <8 x i64> %C to <64 x i8>284 %3 = bitcast i64 %U to <64 x i1>285 %4 = select <64 x i1> %3, <64 x i8> %1, <64 x i8> %2286 %5 = bitcast <64 x i8> %4 to <8 x i64>287 ret <8 x i64> %5288}289 290define <8 x i64> @test_int_x86_avx10_vcvt2ph2bf8512_maskz(i64 %U, <32 x half> %A, <32 x half> %B) nounwind {291; X64-LABEL: test_int_x86_avx10_vcvt2ph2bf8512_maskz:292; X64: # %bb.0:293; X64-NEXT: kmovq %rdi, %k1 # encoding: [0xc4,0xe1,0xfb,0x92,0xcf]294; X64-NEXT: vcvt2ph2bf8 %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7f,0xc9,0x74,0xc1]295; X64-NEXT: retq # encoding: [0xc3]296;297; X86-LABEL: test_int_x86_avx10_vcvt2ph2bf8512_maskz:298; X86: # %bb.0:299; X86-NEXT: kmovq {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf8,0x90,0x4c,0x24,0x04]300; X86-NEXT: vcvt2ph2bf8 %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7f,0xc9,0x74,0xc1]301; X86-NEXT: retl # encoding: [0xc3]302 %1 = call <64 x i8> @llvm.x86.avx10.vcvt2ph2bf8512(<32 x half> %A, <32 x half> %B)303 %3 = bitcast i64 %U to <64 x i1>304 %4 = select <64 x i1> %3, <64 x i8> %1, <64 x i8> zeroinitializer305 %5 = bitcast <64 x i8> %4 to <8 x i64>306 ret <8 x i64> %5307}308 309declare <64 x i8> @llvm.x86.avx10.vcvt2ph2bf8512(<32 x half> %A, <32 x half> %B)310 311define <64 x i8> @test_int_x86_avx10_vcvt2ph2bf8s512(<32 x half> %A, <32 x half> %B) nounwind {312; CHECK-LABEL: test_int_x86_avx10_vcvt2ph2bf8s512:313; CHECK: # %bb.0:314; CHECK-NEXT: vcvt2ph2bf8s %zmm1, %zmm0, %zmm0 # encoding: [0x62,0xf5,0x7f,0x48,0x74,0xc1]315; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]316 %ret = call <64 x i8> @llvm.x86.avx10.vcvt2ph2bf8s512(<32 x half> %A, <32 x half> %B)317 ret <64 x i8> %ret318}319 320declare <64 x i8> @llvm.x86.avx10.vcvt2ph2bf8s512(<32 x half> %A, <32 x half> %B)321 322define <8 x i64> @test_int_x86_avx10_vcvt2ph2bf8s512_mask(<8 x i64> %C, i64 %U, <32 x half> %A, <32 x half> %B) nounwind {323; X64-LABEL: test_int_x86_avx10_vcvt2ph2bf8s512_mask:324; X64: # %bb.0:325; X64-NEXT: kmovq %rdi, %k1 # encoding: [0xc4,0xe1,0xfb,0x92,0xcf]326; X64-NEXT: vcvt2ph2bf8s %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x49,0x74,0xc2]327; X64-NEXT: retq # encoding: [0xc3]328;329; X86-LABEL: test_int_x86_avx10_vcvt2ph2bf8s512_mask:330; X86: # %bb.0:331; X86-NEXT: kmovq {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf8,0x90,0x4c,0x24,0x04]332; X86-NEXT: vcvt2ph2bf8s %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x49,0x74,0xc2]333; X86-NEXT: retl # encoding: [0xc3]334 %1 = call <64 x i8> @llvm.x86.avx10.vcvt2ph2bf8s512(<32 x half> %A, <32 x half> %B)335 %2 = bitcast <8 x i64> %C to <64 x i8>336 %3 = bitcast i64 %U to <64 x i1>337 %4 = select <64 x i1> %3, <64 x i8> %1, <64 x i8> %2338 %5 = bitcast <64 x i8> %4 to <8 x i64>339 ret <8 x i64> %5340}341 342define <8 x i64> @test_int_x86_avx10_vcvt2ph2bf8s512_maskz(i64 %U, <32 x half> %A, <32 x half> %B) nounwind {343; X64-LABEL: test_int_x86_avx10_vcvt2ph2bf8s512_maskz:344; X64: # %bb.0:345; X64-NEXT: kmovq %rdi, %k1 # encoding: [0xc4,0xe1,0xfb,0x92,0xcf]346; X64-NEXT: vcvt2ph2bf8s %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xc9,0x74,0xc1]347; X64-NEXT: retq # encoding: [0xc3]348;349; X86-LABEL: test_int_x86_avx10_vcvt2ph2bf8s512_maskz:350; X86: # %bb.0:351; X86-NEXT: kmovq {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf8,0x90,0x4c,0x24,0x04]352; X86-NEXT: vcvt2ph2bf8s %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xc9,0x74,0xc1]353; X86-NEXT: retl # encoding: [0xc3]354 %1 = call <64 x i8> @llvm.x86.avx10.vcvt2ph2bf8s512(<32 x half> %A, <32 x half> %B)355 %3 = bitcast i64 %U to <64 x i1>356 %4 = select <64 x i1> %3, <64 x i8> %1, <64 x i8> zeroinitializer357 %5 = bitcast <64 x i8> %4 to <8 x i64>358 ret <8 x i64> %5359}360 361define <64 x i8> @test_int_x86_avx10_vcvt2ph2hf8512(<32 x half> %A, <32 x half> %B) nounwind {362; CHECK-LABEL: test_int_x86_avx10_vcvt2ph2hf8512:363; CHECK: # %bb.0:364; CHECK-NEXT: vcvt2ph2hf8 %zmm1, %zmm0, %zmm0 # encoding: [0x62,0xf5,0x7f,0x48,0x18,0xc1]365; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]366 %ret = call <64 x i8> @llvm.x86.avx10.vcvt2ph2hf8512(<32 x half> %A, <32 x half> %B)367 ret <64 x i8> %ret368}369 370define <8 x i64> @test_int_x86_avx10_vcvt2ph2hf8512_mask(<8 x i64> %C, i64 %U, <32 x half> %A, <32 x half> %B) nounwind {371; X64-LABEL: test_int_x86_avx10_vcvt2ph2hf8512_mask:372; X64: # %bb.0:373; X64-NEXT: kmovq %rdi, %k1 # encoding: [0xc4,0xe1,0xfb,0x92,0xcf]374; X64-NEXT: vcvt2ph2hf8 %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x49,0x18,0xc2]375; X64-NEXT: retq # encoding: [0xc3]376;377; X86-LABEL: test_int_x86_avx10_vcvt2ph2hf8512_mask:378; X86: # %bb.0:379; X86-NEXT: kmovq {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf8,0x90,0x4c,0x24,0x04]380; X86-NEXT: vcvt2ph2hf8 %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x49,0x18,0xc2]381; X86-NEXT: retl # encoding: [0xc3]382 %1 = call <64 x i8> @llvm.x86.avx10.vcvt2ph2hf8512(<32 x half> %A, <32 x half> %B)383 %2 = bitcast <8 x i64> %C to <64 x i8>384 %3 = bitcast i64 %U to <64 x i1>385 %4 = select <64 x i1> %3, <64 x i8> %1, <64 x i8> %2386 %5 = bitcast <64 x i8> %4 to <8 x i64>387 ret <8 x i64> %5388}389 390define <8 x i64> @test_int_x86_avx10_vcvt2ph2hf8512_maskz(i64 %U, <32 x half> %A, <32 x half> %B) nounwind {391; X64-LABEL: test_int_x86_avx10_vcvt2ph2hf8512_maskz:392; X64: # %bb.0:393; X64-NEXT: kmovq %rdi, %k1 # encoding: [0xc4,0xe1,0xfb,0x92,0xcf]394; X64-NEXT: vcvt2ph2hf8 %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xc9,0x18,0xc1]395; X64-NEXT: retq # encoding: [0xc3]396;397; X86-LABEL: test_int_x86_avx10_vcvt2ph2hf8512_maskz:398; X86: # %bb.0:399; X86-NEXT: kmovq {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf8,0x90,0x4c,0x24,0x04]400; X86-NEXT: vcvt2ph2hf8 %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xc9,0x18,0xc1]401; X86-NEXT: retl # encoding: [0xc3]402 %1 = call <64 x i8> @llvm.x86.avx10.vcvt2ph2hf8512(<32 x half> %A, <32 x half> %B)403 %3 = bitcast i64 %U to <64 x i1>404 %4 = select <64 x i1> %3, <64 x i8> %1, <64 x i8> zeroinitializer405 %5 = bitcast <64 x i8> %4 to <8 x i64>406 ret <8 x i64> %5407}408 409declare <64 x i8> @llvm.x86.avx10.vcvt2ph2hf8512(<32 x half> %A, <32 x half> %B)410 411define <64 x i8> @test_int_x86_avx10_vcvt2ph2hf8s512(<32 x half> %A, <32 x half> %B) nounwind {412; CHECK-LABEL: test_int_x86_avx10_vcvt2ph2hf8s512:413; CHECK: # %bb.0:414; CHECK-NEXT: vcvt2ph2hf8s %zmm1, %zmm0, %zmm0 # encoding: [0x62,0xf5,0x7f,0x48,0x1b,0xc1]415; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]416 %ret = call <64 x i8> @llvm.x86.avx10.vcvt2ph2hf8s512(<32 x half> %A, <32 x half> %B)417 ret <64 x i8> %ret418}419 420define <8 x i64> @test_int_x86_avx10_vcvt2ph2hf8s512_mask(<8 x i64> %C, i64 %U, <32 x half> %A, <32 x half> %B) nounwind {421; X64-LABEL: test_int_x86_avx10_vcvt2ph2hf8s512_mask:422; X64: # %bb.0:423; X64-NEXT: kmovq %rdi, %k1 # encoding: [0xc4,0xe1,0xfb,0x92,0xcf]424; X64-NEXT: vcvt2ph2hf8s %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x49,0x1b,0xc2]425; X64-NEXT: retq # encoding: [0xc3]426;427; X86-LABEL: test_int_x86_avx10_vcvt2ph2hf8s512_mask:428; X86: # %bb.0:429; X86-NEXT: kmovq {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf8,0x90,0x4c,0x24,0x04]430; X86-NEXT: vcvt2ph2hf8s %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x49,0x1b,0xc2]431; X86-NEXT: retl # encoding: [0xc3]432 %1 = call <64 x i8> @llvm.x86.avx10.vcvt2ph2hf8s512(<32 x half> %A, <32 x half> %B)433 %2 = bitcast <8 x i64> %C to <64 x i8>434 %3 = bitcast i64 %U to <64 x i1>435 %4 = select <64 x i1> %3, <64 x i8> %1, <64 x i8> %2436 %5 = bitcast <64 x i8> %4 to <8 x i64>437 ret <8 x i64> %5438}439 440 441define <8 x i64> @test_int_x86_avx10_vcvt2ph2hf8s512_maskz(i64 %U, <32 x half> %A, <32 x half> %B) nounwind {442; X64-LABEL: test_int_x86_avx10_vcvt2ph2hf8s512_maskz:443; X64: # %bb.0:444; X64-NEXT: kmovq %rdi, %k1 # encoding: [0xc4,0xe1,0xfb,0x92,0xcf]445; X64-NEXT: vcvt2ph2hf8s %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xc9,0x1b,0xc1]446; X64-NEXT: retq # encoding: [0xc3]447;448; X86-LABEL: test_int_x86_avx10_vcvt2ph2hf8s512_maskz:449; X86: # %bb.0:450; X86-NEXT: kmovq {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf8,0x90,0x4c,0x24,0x04]451; X86-NEXT: vcvt2ph2hf8s %zmm1, %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xc9,0x1b,0xc1]452; X86-NEXT: retl # encoding: [0xc3]453 %1 = call <64 x i8> @llvm.x86.avx10.vcvt2ph2hf8s512(<32 x half> %A, <32 x half> %B)454 %3 = bitcast i64 %U to <64 x i1>455 %4 = select <64 x i1> %3, <64 x i8> %1, <64 x i8> zeroinitializer456 %5 = bitcast <64 x i8> %4 to <8 x i64>457 ret <8 x i64> %5458}459 460declare <64 x i8> @llvm.x86.avx10.vcvt2ph2hf8s512(<32 x half> %A, <32 x half> %B)461 462define <32 x half> @test_int_x86_avx10_vcvthf82ph512(<32 x i8> %A) nounwind {463; CHECK-LABEL: test_int_x86_avx10_vcvthf82ph512:464; CHECK: # %bb.0:465; CHECK-NEXT: vcvthf82ph %ymm0, %zmm0 # encoding: [0x62,0xf5,0x7f,0x48,0x1e,0xc0]466; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]467 %ret = call <32 x half> @llvm.x86.avx10.mask.vcvthf82ph512(<32 x i8> %A, <32 x half> undef, i32 -1)468 ret <32 x half> %ret469}470 471define <32 x half> @test_int_x86_avx10_mask_vcvthf82ph512(<32 x i8> %A, <32 x half> %B, i32 %C) nounwind {472; X64-LABEL: test_int_x86_avx10_mask_vcvthf82ph512:473; X64: # %bb.0:474; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]475; X64-NEXT: vcvthf82ph %ymm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0x7f,0x49,0x1e,0xc8]476; X64-NEXT: vmovdqa64 %zmm1, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc1]477; X64-NEXT: retq # encoding: [0xc3]478;479; X86-LABEL: test_int_x86_avx10_mask_vcvthf82ph512:480; X86: # %bb.0:481; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]482; X86-NEXT: vcvthf82ph %ymm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0x7f,0x49,0x1e,0xc8]483; X86-NEXT: vmovdqa64 %zmm1, %zmm0 # encoding: [0x62,0xf1,0xfd,0x48,0x6f,0xc1]484; X86-NEXT: retl # encoding: [0xc3]485 %ret = call <32 x half> @llvm.x86.avx10.mask.vcvthf82ph512(<32 x i8> %A, <32 x half> %B, i32 %C)486 ret <32 x half> %ret487}488 489declare <32 x half> @llvm.x86.avx10.mask.vcvthf82ph512(<32 x i8> %A, <32 x half> %B, i32 %C)490 491define <32 x half> @test_int_x86_avx10_maskz_vcvthf82ph512(<32 x i8> %A, i32 %B) nounwind {492; X64-LABEL: test_int_x86_avx10_maskz_vcvthf82ph512:493; X64: # %bb.0:494; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]495; X64-NEXT: vcvthf82ph %ymm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xc9,0x1e,0xc0]496; X64-NEXT: retq # encoding: [0xc3]497;498; X86-LABEL: test_int_x86_avx10_maskz_vcvthf82ph512:499; X86: # %bb.0:500; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]501; X86-NEXT: vcvthf82ph %ymm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xc9,0x1e,0xc0]502; X86-NEXT: retl # encoding: [0xc3]503 %ret = call <32 x half> @llvm.x86.avx10.mask.vcvthf82ph512(<32 x i8> %A, <32 x half> zeroinitializer, i32 %B)504 ret <32 x half> %ret505}506 507define <32 x i8> @test_int_x86_avx10_vcvtph2bf8512(<32 x half> %A) nounwind {508; CHECK-LABEL: test_int_x86_avx10_vcvtph2bf8512:509; CHECK: # %bb.0:510; CHECK-NEXT: vcvtph2bf8 %zmm0, %ymm0 # encoding: [0x62,0xf2,0x7e,0x48,0x74,0xc0]511; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]512 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtph2bf8512(<32 x half> %A, <32 x i8> undef, i32 -1)513 ret <32 x i8> %ret514}515 516define <32 x i8> @test_int_x86_avx10_mask_vcvtph2bf8512(<32 x i8> %B, <32 x half> %A, i32 %C) nounwind {517; X64-LABEL: test_int_x86_avx10_mask_vcvtph2bf8512:518; X64: # %bb.0:519; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]520; X64-NEXT: vcvtph2bf8 %zmm1, %ymm0 {%k1} # encoding: [0x62,0xf2,0x7e,0x49,0x74,0xc1]521; X64-NEXT: retq # encoding: [0xc3]522;523; X86-LABEL: test_int_x86_avx10_mask_vcvtph2bf8512:524; X86: # %bb.0:525; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]526; X86-NEXT: vcvtph2bf8 %zmm1, %ymm0 {%k1} # encoding: [0x62,0xf2,0x7e,0x49,0x74,0xc1]527; X86-NEXT: retl # encoding: [0xc3]528 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtph2bf8512(<32 x half> %A, <32 x i8> %B, i32 %C)529 ret <32 x i8> %ret530}531 532declare <32 x i8> @llvm.x86.avx10.mask.vcvtph2bf8512(<32 x half> %A, <32 x i8> %B, i32 %C)533 534define <32 x i8> @test_int_x86_avx10_maskz_vcvtph2bf8512(<32 x half> %A, i32 %B) nounwind {535; X64-LABEL: test_int_x86_avx10_maskz_vcvtph2bf8512:536; X64: # %bb.0:537; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]538; X64-NEXT: vcvtph2bf8 %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf2,0x7e,0xc9,0x74,0xc0]539; X64-NEXT: retq # encoding: [0xc3]540;541; X86-LABEL: test_int_x86_avx10_maskz_vcvtph2bf8512:542; X86: # %bb.0:543; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]544; X86-NEXT: vcvtph2bf8 %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf2,0x7e,0xc9,0x74,0xc0]545; X86-NEXT: retl # encoding: [0xc3]546 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtph2bf8512(<32 x half> %A, <32 x i8> zeroinitializer, i32 %B)547 ret <32 x i8> %ret548}549 550define <32 x i8> @test_int_x86_avx10_vcvtph2bf8s512(<32 x half> %A) nounwind {551; CHECK-LABEL: test_int_x86_avx10_vcvtph2bf8s512:552; CHECK: # %bb.0:553; CHECK-NEXT: vcvtph2bf8s %zmm0, %ymm0 # encoding: [0x62,0xf5,0x7e,0x48,0x74,0xc0]554; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]555 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtph2bf8s512(<32 x half> %A, <32 x i8> undef, i32 -1)556 ret <32 x i8> %ret557}558 559define <32 x i8> @test_int_x86_avx10_mask_vcvtph2bf8s512(<32 x i8> %B, <32 x half> %A, i32 %C) nounwind {560; X64-LABEL: test_int_x86_avx10_mask_vcvtph2bf8s512:561; X64: # %bb.0:562; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]563; X64-NEXT: vcvtph2bf8s %zmm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x49,0x74,0xc1]564; X64-NEXT: retq # encoding: [0xc3]565;566; X86-LABEL: test_int_x86_avx10_mask_vcvtph2bf8s512:567; X86: # %bb.0:568; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]569; X86-NEXT: vcvtph2bf8s %zmm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x49,0x74,0xc1]570; X86-NEXT: retl # encoding: [0xc3]571 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtph2bf8s512(<32 x half> %A, <32 x i8> %B, i32 %C)572 ret <32 x i8> %ret573}574 575declare <32 x i8> @llvm.x86.avx10.mask.vcvtph2bf8s512(<32 x half> %A, <32 x i8> %B, i32 %C)576 577define <32 x i8> @test_int_x86_avx10_maskz_vcvtph2bf8s512(<32 x half> %A, i32 %B) nounwind {578; X64-LABEL: test_int_x86_avx10_maskz_vcvtph2bf8s512:579; X64: # %bb.0:580; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]581; X64-NEXT: vcvtph2bf8s %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xc9,0x74,0xc0]582; X64-NEXT: retq # encoding: [0xc3]583;584; X86-LABEL: test_int_x86_avx10_maskz_vcvtph2bf8s512:585; X86: # %bb.0:586; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]587; X86-NEXT: vcvtph2bf8s %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xc9,0x74,0xc0]588; X86-NEXT: retl # encoding: [0xc3]589 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtph2bf8s512(<32 x half> %A, <32 x i8> zeroinitializer, i32 %B)590 ret <32 x i8> %ret591}592 593define <32 x i8> @test_int_x86_avx10_vcvtph2hf8512(<32 x half> %A) nounwind {594; CHECK-LABEL: test_int_x86_avx10_vcvtph2hf8512:595; CHECK: # %bb.0:596; CHECK-NEXT: vcvtph2hf8 %zmm0, %ymm0 # encoding: [0x62,0xf5,0x7e,0x48,0x18,0xc0]597; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]598 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtph2hf8512(<32 x half> %A, <32 x i8> undef, i32 -1)599 ret <32 x i8> %ret600}601 602define <32 x i8> @test_int_x86_avx10_mask_vcvtph2hf8512(<32 x i8> %B, <32 x half> %A, i32 %C) nounwind {603; X64-LABEL: test_int_x86_avx10_mask_vcvtph2hf8512:604; X64: # %bb.0:605; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]606; X64-NEXT: vcvtph2hf8 %zmm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x49,0x18,0xc1]607; X64-NEXT: retq # encoding: [0xc3]608;609; X86-LABEL: test_int_x86_avx10_mask_vcvtph2hf8512:610; X86: # %bb.0:611; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]612; X86-NEXT: vcvtph2hf8 %zmm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x49,0x18,0xc1]613; X86-NEXT: retl # encoding: [0xc3]614 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtph2hf8512(<32 x half> %A, <32 x i8> %B, i32 %C)615 ret <32 x i8> %ret616}617 618declare <32 x i8> @llvm.x86.avx10.mask.vcvtph2hf8512(<32 x half> %A, <32 x i8> %B, i32 %C)619 620define <32 x i8> @test_int_x86_avx10_maskz_vcvtph2hf8512(<32 x half> %A, i32 %B) nounwind {621; X64-LABEL: test_int_x86_avx10_maskz_vcvtph2hf8512:622; X64: # %bb.0:623; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]624; X64-NEXT: vcvtph2hf8 %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xc9,0x18,0xc0]625; X64-NEXT: retq # encoding: [0xc3]626;627; X86-LABEL: test_int_x86_avx10_maskz_vcvtph2hf8512:628; X86: # %bb.0:629; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]630; X86-NEXT: vcvtph2hf8 %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xc9,0x18,0xc0]631; X86-NEXT: retl # encoding: [0xc3]632 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtph2hf8512(<32 x half> %A, <32 x i8> zeroinitializer, i32 %B)633 ret <32 x i8> %ret634}635 636define <32 x i8> @test_int_x86_avx10_vcvtph2hf8s512(<32 x half> %A) nounwind {637; CHECK-LABEL: test_int_x86_avx10_vcvtph2hf8s512:638; CHECK: # %bb.0:639; CHECK-NEXT: vcvtph2hf8s %zmm0, %ymm0 # encoding: [0x62,0xf5,0x7e,0x48,0x1b,0xc0]640; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]641 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtph2hf8s512(<32 x half> %A, <32 x i8> undef, i32 -1)642 ret <32 x i8> %ret643}644 645define <32 x i8> @test_int_x86_avx10_mask_vcvtph2hf8s512(<32 x i8> %B, <32 x half> %A, i32 %C) nounwind {646; X64-LABEL: test_int_x86_avx10_mask_vcvtph2hf8s512:647; X64: # %bb.0:648; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]649; X64-NEXT: vcvtph2hf8s %zmm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x49,0x1b,0xc1]650; X64-NEXT: retq # encoding: [0xc3]651;652; X86-LABEL: test_int_x86_avx10_mask_vcvtph2hf8s512:653; X86: # %bb.0:654; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]655; X86-NEXT: vcvtph2hf8s %zmm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x49,0x1b,0xc1]656; X86-NEXT: retl # encoding: [0xc3]657 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtph2hf8s512(<32 x half> %A, <32 x i8> %B, i32 %C)658 ret <32 x i8> %ret659}660 661declare <32 x i8> @llvm.x86.avx10.mask.vcvtph2hf8s512(<32 x half> %A, <32 x i8> %B, i32 %C)662 663define <32 x i8> @test_int_x86_avx10_maskz_vcvtph2hf8s512(<32 x half> %A, i32 %B) nounwind {664; X64-LABEL: test_int_x86_avx10_maskz_vcvtph2hf8s512:665; X64: # %bb.0:666; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]667; X64-NEXT: vcvtph2hf8s %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xc9,0x1b,0xc0]668; X64-NEXT: retq # encoding: [0xc3]669;670; X86-LABEL: test_int_x86_avx10_maskz_vcvtph2hf8s512:671; X86: # %bb.0:672; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]673; X86-NEXT: vcvtph2hf8s %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xc9,0x1b,0xc0]674; X86-NEXT: retl # encoding: [0xc3]675 %ret = call <32 x i8> @llvm.x86.avx10.mask.vcvtph2hf8s512(<32 x half> %A, <32 x i8> zeroinitializer, i32 %B)676 ret <32 x i8> %ret677}678