1284 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 <8 x half> @test_int_x86_avx10_vcvt2ps2phx128(<4 x float> %A, <4 x float> %B) {6; CHECK-LABEL: test_int_x86_avx10_vcvt2ps2phx128:7; CHECK: # %bb.0:8; CHECK-NEXT: vcvt2ps2phx %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf2,0x7d,0x08,0x67,0xc1]9; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]10 %ret = call <8 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.128(<4 x float> %A, <4 x float> %B, <8 x half> zeroinitializer, i8 -1)11 ret <8 x half> %ret12}13 14define <8 x half> @test_int_x86_avx10_vcvt2ps2phx128_mask(<8 x half> %W, i8 %U, <4 x float> %A, <4 x float> %B) {15; X64-LABEL: test_int_x86_avx10_vcvt2ps2phx128_mask:16; X64: # %bb.0:17; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]18; X64-NEXT: vcvt2ps2phx %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x75,0x09,0x67,0xc2]19; X64-NEXT: retq # encoding: [0xc3]20;21; X86-LABEL: test_int_x86_avx10_vcvt2ps2phx128_mask:22; X86: # %bb.0:23; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]24; X86-NEXT: vcvt2ps2phx %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x75,0x09,0x67,0xc2]25; X86-NEXT: retl # encoding: [0xc3]26 %ret = call <8 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.128(<4 x float> %A, <4 x float> %B, <8 x half> %W, i8 %U)27 ret <8 x half> %ret28}29 30define <8 x half> @test_int_x86_avx10_vcvt2ps2phx128_maskz(i8 %U, <4 x float> %A, <4 x float> %B) {31; X64-LABEL: test_int_x86_avx10_vcvt2ps2phx128_maskz:32; X64: # %bb.0:33; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]34; X64-NEXT: vcvt2ps2phx %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7d,0x89,0x67,0xc1]35; X64-NEXT: retq # encoding: [0xc3]36;37; X86-LABEL: test_int_x86_avx10_vcvt2ps2phx128_maskz:38; X86: # %bb.0:39; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]40; X86-NEXT: vcvt2ps2phx %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7d,0x89,0x67,0xc1]41; X86-NEXT: retl # encoding: [0xc3]42 %ret = call <8 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.128(<4 x float> %A, <4 x float> %B, <8 x half> zeroinitializer, i8 %U)43 ret <8 x half> %ret44}45 46declare <8 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.128(<4 x float>, <4 x float>, <8 x half>, i8)47 48define <16 x half> @test_int_x86_avx10_vcvt2ps2phx256(<8 x float> %A, <8 x float> %B) {49; CHECK-LABEL: test_int_x86_avx10_vcvt2ps2phx256:50; CHECK: # %bb.0:51; CHECK-NEXT: vcvt2ps2phx %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf2,0x7d,0x28,0x67,0xc1]52; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]53 %ret = call <16 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.256(<8 x float> %A, <8 x float> %B, <16 x half> zeroinitializer, i16 -1)54 ret <16 x half> %ret55}56 57define <16 x half> @test_int_x86_avx10_vcvt2ps2phx256_mask(<16 x half> %W, i16 %U, <8 x float> %A, <8 x float> %B) {58; X64-LABEL: test_int_x86_avx10_vcvt2ps2phx256_mask:59; X64: # %bb.0:60; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]61; X64-NEXT: vcvt2ps2phx %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf2,0x75,0x29,0x67,0xc2]62; X64-NEXT: retq # encoding: [0xc3]63;64; X86-LABEL: test_int_x86_avx10_vcvt2ps2phx256_mask:65; X86: # %bb.0:66; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]67; X86-NEXT: vcvt2ps2phx %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf2,0x75,0x29,0x67,0xc2]68; X86-NEXT: retl # encoding: [0xc3]69 %ret = call <16 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.256(<8 x float> %A, <8 x float> %B, <16 x half> %W, i16 %U)70 ret <16 x half> %ret71}72 73define <16 x half> @test_int_x86_avx10_vcvt2ps2phx256_maskz(<16 x half> %W, i16 %U, <8 x float> %A, <8 x float> %B) {74; X64-LABEL: test_int_x86_avx10_vcvt2ps2phx256_maskz:75; X64: # %bb.0:76; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]77; X64-NEXT: vcvt2ps2phx %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf2,0x75,0xa9,0x67,0xc2]78; X64-NEXT: retq # encoding: [0xc3]79;80; X86-LABEL: test_int_x86_avx10_vcvt2ps2phx256_maskz:81; X86: # %bb.0:82; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]83; X86-NEXT: vcvt2ps2phx %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf2,0x75,0xa9,0x67,0xc2]84; X86-NEXT: retl # encoding: [0xc3]85 %ret = call <16 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.256(<8 x float> %A, <8 x float> %B, <16 x half> zeroinitializer, i16 %U)86 ret <16 x half> %ret87}88 89declare <16 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.256(<8 x float>, <8 x float>, <16 x half>, i16)90 91define <16 x i8> @test_int_x86_avx10_vcvtbiasph2bf8128(<16 x i8> %A, <8 x half> %B) nounwind {92; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2bf8128:93; CHECK: # %bb.0:94; CHECK-NEXT: vcvtbiasph2bf8 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf2,0x7c,0x08,0x74,0xc1]95; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]96 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8128(<16 x i8> %A, <8 x half> %B, <16 x i8> undef, i8 -1)97 ret <16 x i8> %ret98}99 100define <16 x i8> @test_int_x86_avx10_mask_vcvtbiasph2bf8128(<16 x i8> %W, <16 x i8> %A, <8 x half> %B, i8 %U) nounwind {101; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8128:102; X64: # %bb.0:103; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]104; X64-NEXT: vcvtbiasph2bf8 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x74,0x09,0x74,0xc2]105; X64-NEXT: retq # encoding: [0xc3]106;107; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8128:108; X86: # %bb.0:109; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]110; X86-NEXT: vcvtbiasph2bf8 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x74,0x09,0x74,0xc2]111; X86-NEXT: retl # encoding: [0xc3]112 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8128(<16 x i8> %A, <8 x half> %B, <16 x i8> %W, i8 %U)113 ret <16 x i8> %ret114}115 116declare <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8128(<16 x i8> %A, <8 x half> %B, <16 x i8> %W, i8 %U)117 118define <16 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2bf8128(<16 x i8> %A, <8 x half> %B, i8 %U) nounwind {119; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8128:120; X64: # %bb.0:121; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]122; X64-NEXT: vcvtbiasph2bf8 %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7c,0x89,0x74,0xc1]123; X64-NEXT: retq # encoding: [0xc3]124;125; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8128:126; X86: # %bb.0:127; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]128; X86-NEXT: vcvtbiasph2bf8 %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7c,0x89,0x74,0xc1]129; X86-NEXT: retl # encoding: [0xc3]130 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8128(<16 x i8> %A, <8 x half> %B, <16 x i8> zeroinitializer, i8 %U)131 ret <16 x i8> %ret132}133 134define <16 x i8> @test_int_x86_avx10_vcvtbiasph2bf8256(<32 x i8> %A, <16 x half> %B) nounwind {135; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2bf8256:136; CHECK: # %bb.0:137; CHECK-NEXT: vcvtbiasph2bf8 %ymm1, %ymm0, %xmm0 # encoding: [0x62,0xf2,0x7c,0x28,0x74,0xc1]138; CHECK-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]139; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]140 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8256(<32 x i8> %A, <16 x half> %B, <16 x i8> undef, i16 -1)141 ret <16 x i8> %ret142}143 144define <16 x i8> @test_int_x86_avx10_mask_vcvtbiasph2bf8256(<16 x i8> %W, <32 x i8> %A, <16 x half> %B, i16 %U) nounwind {145; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8256:146; X64: # %bb.0:147; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]148; X64-NEXT: vcvtbiasph2bf8 %ymm2, %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x74,0x29,0x74,0xc2]149; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]150; X64-NEXT: retq # encoding: [0xc3]151;152; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8256:153; X86: # %bb.0:154; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]155; X86-NEXT: vcvtbiasph2bf8 %ymm2, %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x74,0x29,0x74,0xc2]156; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]157; X86-NEXT: retl # encoding: [0xc3]158 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8256(<32 x i8> %A, <16 x half> %B, <16 x i8> %W, i16 %U)159 ret <16 x i8> %ret160}161 162declare <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8256(<32 x i8> %A, <16 x half> %B, <16 x i8> %W, i16 %U)163 164define <16 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2bf8256(<32 x i8> %A, <16 x half> %B, i16 %U) nounwind {165; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8256:166; X64: # %bb.0:167; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]168; X64-NEXT: vcvtbiasph2bf8 %ymm1, %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7c,0xa9,0x74,0xc1]169; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]170; X64-NEXT: retq # encoding: [0xc3]171;172; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8256:173; X86: # %bb.0:174; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]175; X86-NEXT: vcvtbiasph2bf8 %ymm1, %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7c,0xa9,0x74,0xc1]176; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]177; X86-NEXT: retl # encoding: [0xc3]178 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8256(<32 x i8> %A, <16 x half> %B, <16 x i8> zeroinitializer, i16 %U)179 ret <16 x i8> %ret180}181 182define <16 x i8> @test_int_x86_avx10_vcvtbiasph2bf8s128(<16 x i8> %A, <8 x half> %B) nounwind {183; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2bf8s128:184; CHECK: # %bb.0:185; CHECK-NEXT: vcvtbiasph2bf8s %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7c,0x08,0x74,0xc1]186; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]187 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s128(<16 x i8> %A, <8 x half> %B, <16 x i8> undef, i8 -1)188 ret <16 x i8> %ret189}190 191define <16 x i8> @test_int_x86_avx10_mask_vcvtbiasph2bf8s128(<16 x i8> %W, <16 x i8> %A, <8 x half> %B, i8 %U) nounwind {192; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8s128:193; X64: # %bb.0:194; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]195; X64-NEXT: vcvtbiasph2bf8s %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x09,0x74,0xc2]196; X64-NEXT: retq # encoding: [0xc3]197;198; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8s128:199; X86: # %bb.0:200; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]201; X86-NEXT: vcvtbiasph2bf8s %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x09,0x74,0xc2]202; X86-NEXT: retl # encoding: [0xc3]203 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s128(<16 x i8> %A, <8 x half> %B, <16 x i8> %W, i8 %U)204 ret <16 x i8> %ret205}206 207declare <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s128(<16 x i8> %A, <8 x half> %B, <16 x i8> %W, i8 %U)208 209define <16 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2bf8s128(<16 x i8> %A, <8 x half> %B, i8 %U) nounwind {210; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8s128:211; X64: # %bb.0:212; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]213; X64-NEXT: vcvtbiasph2bf8s %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x74,0xc1]214; X64-NEXT: retq # encoding: [0xc3]215;216; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8s128:217; X86: # %bb.0:218; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]219; X86-NEXT: vcvtbiasph2bf8s %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x74,0xc1]220; X86-NEXT: retl # encoding: [0xc3]221 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s128(<16 x i8> %A, <8 x half> %B, <16 x i8> zeroinitializer, i8 %U)222 ret <16 x i8> %ret223}224 225define <16 x i8> @test_int_x86_avx10_vcvtbiasph2bf8s256(<32 x i8> %A, <16 x half> %B) nounwind {226; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2bf8s256:227; CHECK: # %bb.0:228; CHECK-NEXT: vcvtbiasph2bf8s %ymm1, %ymm0, %xmm0 # encoding: [0x62,0xf5,0x7c,0x28,0x74,0xc1]229; CHECK-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]230; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]231 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s256(<32 x i8> %A, <16 x half> %B, <16 x i8> undef, i16 -1)232 ret <16 x i8> %ret233}234 235define <16 x i8> @test_int_x86_avx10_mask_vcvtbiasph2bf8s256(<16 x i8> %W, <32 x i8> %A, <16 x half> %B, i16 %U) nounwind {236; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8s256:237; X64: # %bb.0:238; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]239; X64-NEXT: vcvtbiasph2bf8s %ymm2, %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x29,0x74,0xc2]240; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]241; X64-NEXT: retq # encoding: [0xc3]242;243; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2bf8s256:244; X86: # %bb.0:245; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]246; X86-NEXT: vcvtbiasph2bf8s %ymm2, %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x29,0x74,0xc2]247; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]248; X86-NEXT: retl # encoding: [0xc3]249 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s256(<32 x i8> %A, <16 x half> %B, <16 x i8> %W, i16 %U)250 ret <16 x i8> %ret251}252 253declare <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s256(<32 x i8> %A, <16 x half> %B, <16 x i8> %W, i16 %U)254 255define <16 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2bf8s256(<32 x i8> %A, <16 x half> %B, i16 %U) nounwind {256; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8s256:257; X64: # %bb.0:258; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]259; X64-NEXT: vcvtbiasph2bf8s %ymm1, %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x74,0xc1]260; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]261; X64-NEXT: retq # encoding: [0xc3]262;263; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2bf8s256:264; X86: # %bb.0:265; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]266; X86-NEXT: vcvtbiasph2bf8s %ymm1, %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x74,0xc1]267; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]268; X86-NEXT: retl # encoding: [0xc3]269 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s256(<32 x i8> %A, <16 x half> %B, <16 x i8> zeroinitializer, i16 %U)270 ret <16 x i8> %ret271}272 273define <16 x i8> @test_int_x86_avx10_vcvtbiasph2hf8128(<16 x i8> %A, <8 x half> %B) nounwind {274; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2hf8128:275; CHECK: # %bb.0:276; CHECK-NEXT: vcvtbiasph2hf8 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7c,0x08,0x18,0xc1]277; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]278 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8128(<16 x i8> %A, <8 x half> %B, <16 x i8> undef, i8 -1)279 ret <16 x i8> %ret280}281 282define <16 x i8> @test_int_x86_avx10_mask_vcvtbiasph2hf8128(<16 x i8> %W, <16 x i8> %A, <8 x half> %B, i8 %U) nounwind {283; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8128:284; X64: # %bb.0:285; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]286; X64-NEXT: vcvtbiasph2hf8 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x09,0x18,0xc2]287; X64-NEXT: retq # encoding: [0xc3]288;289; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8128:290; X86: # %bb.0:291; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]292; X86-NEXT: vcvtbiasph2hf8 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x09,0x18,0xc2]293; X86-NEXT: retl # encoding: [0xc3]294 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8128(<16 x i8> %A, <8 x half> %B, <16 x i8> %W, i8 %U)295 ret <16 x i8> %ret296}297 298declare <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8128(<16 x i8> %A, <8 x half> %B, <16 x i8> %W, i8 %U)299 300define <16 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2hf8128(<16 x i8> %A, <8 x half> %B, i8 %U) nounwind {301; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8128:302; X64: # %bb.0:303; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]304; X64-NEXT: vcvtbiasph2hf8 %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x18,0xc1]305; X64-NEXT: retq # encoding: [0xc3]306;307; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8128:308; X86: # %bb.0:309; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]310; X86-NEXT: vcvtbiasph2hf8 %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x18,0xc1]311; X86-NEXT: retl # encoding: [0xc3]312 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8128(<16 x i8> %A, <8 x half> %B, <16 x i8> zeroinitializer, i8 %U)313 ret <16 x i8> %ret314}315 316define <16 x i8> @test_int_x86_avx10_vcvtbiasph2hf8256(<32 x i8> %A, <16 x half> %B) nounwind {317; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2hf8256:318; CHECK: # %bb.0:319; CHECK-NEXT: vcvtbiasph2hf8 %ymm1, %ymm0, %xmm0 # encoding: [0x62,0xf5,0x7c,0x28,0x18,0xc1]320; CHECK-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]321; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]322 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8256(<32 x i8> %A, <16 x half> %B, <16 x i8> undef, i16 -1)323 ret <16 x i8> %ret324}325 326define <16 x i8> @test_int_x86_avx10_mask_vcvtbiasph2hf8256(<16 x i8> %W, <32 x i8> %A, <16 x half> %B, i16 %U) nounwind {327; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8256:328; X64: # %bb.0:329; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]330; X64-NEXT: vcvtbiasph2hf8 %ymm2, %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x29,0x18,0xc2]331; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]332; X64-NEXT: retq # encoding: [0xc3]333;334; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8256:335; X86: # %bb.0:336; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]337; X86-NEXT: vcvtbiasph2hf8 %ymm2, %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x29,0x18,0xc2]338; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]339; X86-NEXT: retl # encoding: [0xc3]340 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8256(<32 x i8> %A, <16 x half> %B, <16 x i8> %W, i16 %U)341 ret <16 x i8> %ret342}343 344declare <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8256(<32 x i8> %A, <16 x half> %B, <16 x i8> %W, i16 %U)345 346define <16 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2hf8256(<32 x i8> %A, <16 x half> %B, i16 %U) nounwind {347; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8256:348; X64: # %bb.0:349; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]350; X64-NEXT: vcvtbiasph2hf8 %ymm1, %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x18,0xc1]351; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]352; X64-NEXT: retq # encoding: [0xc3]353;354; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8256:355; X86: # %bb.0:356; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]357; X86-NEXT: vcvtbiasph2hf8 %ymm1, %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x18,0xc1]358; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]359; X86-NEXT: retl # encoding: [0xc3]360 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8256(<32 x i8> %A, <16 x half> %B, <16 x i8> zeroinitializer, i16 %U)361 ret <16 x i8> %ret362}363 364define <16 x i8> @test_int_x86_avx10_vcvtbiasph2hf8s128(<16 x i8> %A, <8 x half> %B) nounwind {365; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2hf8s128:366; CHECK: # %bb.0:367; CHECK-NEXT: vcvtbiasph2hf8s %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7c,0x08,0x1b,0xc1]368; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]369 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s128(<16 x i8> %A, <8 x half> %B, <16 x i8> undef, i8 -1)370 ret <16 x i8> %ret371}372 373define <16 x i8> @test_int_x86_avx10_mask_vcvtbiasph2hf8s128(<16 x i8> %W, <16 x i8> %A, <8 x half> %B, i8 %U) nounwind {374; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8s128:375; X64: # %bb.0:376; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]377; X64-NEXT: vcvtbiasph2hf8s %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x09,0x1b,0xc2]378; X64-NEXT: retq # encoding: [0xc3]379;380; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8s128:381; X86: # %bb.0:382; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]383; X86-NEXT: vcvtbiasph2hf8s %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x09,0x1b,0xc2]384; X86-NEXT: retl # encoding: [0xc3]385 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s128(<16 x i8> %A, <8 x half> %B, <16 x i8> %W, i8 %U)386 ret <16 x i8> %ret387}388 389declare <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s128(<16 x i8> %A, <8 x half> %B, <16 x i8> %W, i8 %U)390 391define <16 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2hf8s128(<16 x i8> %A, <8 x half> %B, i8 %U) nounwind {392; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8s128:393; X64: # %bb.0:394; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]395; X64-NEXT: vcvtbiasph2hf8s %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x1b,0xc1]396; X64-NEXT: retq # encoding: [0xc3]397;398; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8s128:399; X86: # %bb.0:400; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]401; X86-NEXT: vcvtbiasph2hf8s %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x1b,0xc1]402; X86-NEXT: retl # encoding: [0xc3]403 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s128(<16 x i8> %A, <8 x half> %B, <16 x i8> zeroinitializer, i8 %U)404 ret <16 x i8> %ret405}406 407define <16 x i8> @test_int_x86_avx10_vcvtbiasph2hf8s256(<32 x i8> %A, <16 x half> %B) nounwind {408; CHECK-LABEL: test_int_x86_avx10_vcvtbiasph2hf8s256:409; CHECK: # %bb.0:410; CHECK-NEXT: vcvtbiasph2hf8s %ymm1, %ymm0, %xmm0 # encoding: [0x62,0xf5,0x7c,0x28,0x1b,0xc1]411; CHECK-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]412; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]413 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s256(<32 x i8> %A, <16 x half> %B, <16 x i8> undef, i16 -1)414 ret <16 x i8> %ret415}416 417define <16 x i8> @test_int_x86_avx10_mask_vcvtbiasph2hf8s256(<16 x i8> %W, <32 x i8> %A, <16 x half> %B, i16 %U) nounwind {418; X64-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8s256:419; X64: # %bb.0:420; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]421; X64-NEXT: vcvtbiasph2hf8s %ymm2, %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x29,0x1b,0xc2]422; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]423; X64-NEXT: retq # encoding: [0xc3]424;425; X86-LABEL: test_int_x86_avx10_mask_vcvtbiasph2hf8s256:426; X86: # %bb.0:427; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]428; X86-NEXT: vcvtbiasph2hf8s %ymm2, %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x74,0x29,0x1b,0xc2]429; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]430; X86-NEXT: retl # encoding: [0xc3]431 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s256(<32 x i8> %A, <16 x half> %B, <16 x i8> %W, i16 %U)432 ret <16 x i8> %ret433}434 435declare <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s256(<32 x i8> %A, <16 x half> %B, <16 x i8> %W, i16 %U)436 437define <16 x i8> @test_int_x86_avx10_maskz_vcvtbiasph2hf8s256(<32 x i8> %A, <16 x half> %B, i16 %U) nounwind {438; X64-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8s256:439; X64: # %bb.0:440; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]441; X64-NEXT: vcvtbiasph2hf8s %ymm1, %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x1b,0xc1]442; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]443; X64-NEXT: retq # encoding: [0xc3]444;445; X86-LABEL: test_int_x86_avx10_maskz_vcvtbiasph2hf8s256:446; X86: # %bb.0:447; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]448; X86-NEXT: vcvtbiasph2hf8s %ymm1, %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x1b,0xc1]449; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]450; X86-NEXT: retl # encoding: [0xc3]451 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s256(<32 x i8> %A, <16 x half> %B, <16 x i8> zeroinitializer, i16 %U)452 ret <16 x i8> %ret453}454 455define <16 x i8> @test_int_x86_avx10_vcvt2ph2bf8128(<8 x half> %A, <8 x half> %B) nounwind {456; CHECK-LABEL: test_int_x86_avx10_vcvt2ph2bf8128:457; CHECK: # %bb.0:458; CHECK-NEXT: vcvt2ph2bf8 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf2,0x7f,0x08,0x74,0xc1]459; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]460 %ret = call <16 x i8> @llvm.x86.avx10.vcvt2ph2bf8128(<8 x half> %A, <8 x half> %B)461 ret <16 x i8> %ret462}463 464define <16 x i8> @test_int_x86_avx10_vcvt2ph2bf8128_mask(<16 x i8> %C, i16 %U, <8 x half> %A, <8 x half> %B) nounwind {465; X64-LABEL: test_int_x86_avx10_vcvt2ph2bf8128_mask:466; X64: # %bb.0:467; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]468; X64-NEXT: vcvt2ph2bf8 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x77,0x09,0x74,0xc2]469; X64-NEXT: retq # encoding: [0xc3]470;471; X86-LABEL: test_int_x86_avx10_vcvt2ph2bf8128_mask:472; X86: # %bb.0:473; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]474; X86-NEXT: vcvt2ph2bf8 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x77,0x09,0x74,0xc2]475; X86-NEXT: retl # encoding: [0xc3]476 %1 = call <16 x i8> @llvm.x86.avx10.vcvt2ph2bf8128(<8 x half> %A, <8 x half> %B)477 %2 = bitcast i16 %U to <16 x i1>478 %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> %C479 ret <16 x i8> %3480}481 482define <16 x i8> @test_int_x86_avx10_vcvt2ph2bf8128_maskz(<16 x i8> %C, i16 %U, <8 x half> %A, <8 x half> %B) nounwind {483; X64-LABEL: test_int_x86_avx10_vcvt2ph2bf8128_maskz:484; X64: # %bb.0:485; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]486; X64-NEXT: vcvt2ph2bf8 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x77,0x89,0x74,0xc2]487; X64-NEXT: retq # encoding: [0xc3]488;489; X86-LABEL: test_int_x86_avx10_vcvt2ph2bf8128_maskz:490; X86: # %bb.0:491; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]492; X86-NEXT: vcvt2ph2bf8 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x77,0x89,0x74,0xc2]493; X86-NEXT: retl # encoding: [0xc3]494 %1 = call <16 x i8> @llvm.x86.avx10.vcvt2ph2bf8128(<8 x half> %A, <8 x half> %B)495 %2 = bitcast i16 %U to <16 x i1>496 %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> zeroinitializer497 ret <16 x i8> %3498}499 500declare <16 x i8> @llvm.x86.avx10.vcvt2ph2bf8128(<8 x half> %A, <8 x half> %B)501 502define <32 x i8> @test_int_x86_avx10_vcvt2ph2bf8256(<16 x half> %A, <16 x half> %B) nounwind {503; CHECK-LABEL: test_int_x86_avx10_vcvt2ph2bf8256:504; CHECK: # %bb.0:505; CHECK-NEXT: vcvt2ph2bf8 %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf2,0x7f,0x28,0x74,0xc1]506; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]507 %ret = call <32 x i8> @llvm.x86.avx10.vcvt2ph2bf8256(<16 x half> %A, <16 x half> %B)508 ret <32 x i8> %ret509}510 511define <32 x i8> @test_int_x86_avx10_vcvt2ph2bf8256_mask(<32 x i8> %C, i32 %U, <16 x half> %A, <16 x half> %B) nounwind {512; X64-LABEL: test_int_x86_avx10_vcvt2ph2bf8256_mask:513; X64: # %bb.0:514; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]515; X64-NEXT: vcvt2ph2bf8 %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf2,0x77,0x29,0x74,0xc2]516; X64-NEXT: retq # encoding: [0xc3]517;518; X86-LABEL: test_int_x86_avx10_vcvt2ph2bf8256_mask:519; X86: # %bb.0:520; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]521; X86-NEXT: vcvt2ph2bf8 %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf2,0x77,0x29,0x74,0xc2]522; X86-NEXT: retl # encoding: [0xc3]523 %1 = call <32 x i8> @llvm.x86.avx10.vcvt2ph2bf8256(<16 x half> %A, <16 x half> %B)524 %2 = bitcast i32 %U to <32 x i1>525 %3 = select <32 x i1> %2, <32 x i8> %1, <32 x i8> %C526 ret <32 x i8> %3527}528 529define <32 x i8> @test_int_x86_avx10_vcvt2ph2bf8256_maskz(<32 x i8> %C, i32 %U, <16 x half> %A, <16 x half> %B) nounwind {530; X64-LABEL: test_int_x86_avx10_vcvt2ph2bf8256_maskz:531; X64: # %bb.0:532; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]533; X64-NEXT: vcvt2ph2bf8 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf2,0x77,0xa9,0x74,0xc2]534; X64-NEXT: retq # encoding: [0xc3]535;536; X86-LABEL: test_int_x86_avx10_vcvt2ph2bf8256_maskz:537; X86: # %bb.0:538; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]539; X86-NEXT: vcvt2ph2bf8 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf2,0x77,0xa9,0x74,0xc2]540; X86-NEXT: retl # encoding: [0xc3]541 %1 = call <32 x i8> @llvm.x86.avx10.vcvt2ph2bf8256(<16 x half> %A, <16 x half> %B)542 %2 = bitcast i32 %U to <32 x i1>543 %3 = select <32 x i1> %2, <32 x i8> %1, <32 x i8> zeroinitializer544 ret <32 x i8> %3545}546 547declare <32 x i8> @llvm.x86.avx10.vcvt2ph2bf8256(<16 x half> %A, <16 x half> %B)548 549define <16 x i8> @test_int_x86_avx10_vcvt2ph2bf8s128(<8 x half> %A, <8 x half> %B) nounwind {550; CHECK-LABEL: test_int_x86_avx10_vcvt2ph2bf8s128:551; CHECK: # %bb.0:552; CHECK-NEXT: vcvt2ph2bf8s %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7f,0x08,0x74,0xc1]553; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]554 %ret = call <16 x i8> @llvm.x86.avx10.vcvt2ph2bf8s128(<8 x half> %A, <8 x half> %B)555 ret <16 x i8> %ret556}557 558define <16 x i8> @test_int_x86_avx10_vcvt2ph2bf8s128_mask(<16 x i8> %C, i16 %U, <8 x half> %A, <8 x half> %B) nounwind {559; X64-LABEL: test_int_x86_avx10_vcvt2ph2bf8s128_mask:560; X64: # %bb.0:561; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]562; X64-NEXT: vcvt2ph2bf8s %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x09,0x74,0xc2]563; X64-NEXT: retq # encoding: [0xc3]564;565; X86-LABEL: test_int_x86_avx10_vcvt2ph2bf8s128_mask:566; X86: # %bb.0:567; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]568; X86-NEXT: vcvt2ph2bf8s %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x09,0x74,0xc2]569; X86-NEXT: retl # encoding: [0xc3]570 %1 = call <16 x i8> @llvm.x86.avx10.vcvt2ph2bf8s128(<8 x half> %A, <8 x half> %B)571 %2 = bitcast i16 %U to <16 x i1>572 %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> %C573 ret <16 x i8> %3574}575 576define <16 x i8> @test_int_x86_avx10_vcvt2ph2bf8s128_maskz(i16 %U, <8 x half> %A, <8 x half> %B) nounwind {577; X64-LABEL: test_int_x86_avx10_vcvt2ph2bf8s128_maskz:578; X64: # %bb.0:579; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]580; X64-NEXT: vcvt2ph2bf8s %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0x89,0x74,0xc1]581; X64-NEXT: retq # encoding: [0xc3]582;583; X86-LABEL: test_int_x86_avx10_vcvt2ph2bf8s128_maskz:584; X86: # %bb.0:585; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]586; X86-NEXT: vcvt2ph2bf8s %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0x89,0x74,0xc1]587; X86-NEXT: retl # encoding: [0xc3]588 %1 = call <16 x i8> @llvm.x86.avx10.vcvt2ph2bf8s128(<8 x half> %A, <8 x half> %B)589 %2 = bitcast i16 %U to <16 x i1>590 %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> zeroinitializer591 ret <16 x i8> %3592}593 594declare <16 x i8> @llvm.x86.avx10.vcvt2ph2bf8s128(<8 x half> %A, <8 x half> %B)595 596define <32 x i8> @test_int_x86_avx10_vcvt2ph2bf8s256(<16 x half> %A, <16 x half> %B) nounwind {597; CHECK-LABEL: test_int_x86_avx10_vcvt2ph2bf8s256:598; CHECK: # %bb.0:599; CHECK-NEXT: vcvt2ph2bf8s %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf5,0x7f,0x28,0x74,0xc1]600; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]601 %ret = call <32 x i8> @llvm.x86.avx10.vcvt2ph2bf8s256(<16 x half> %A, <16 x half> %B)602 ret <32 x i8> %ret603}604 605define <32 x i8> @test_int_x86_avx10_vcvt2ph2bf8s256_mask(<32 x i8> %C, i32 %U, <16 x half> %A, <16 x half> %B) nounwind {606; X64-LABEL: test_int_x86_avx10_vcvt2ph2bf8s256_mask:607; X64: # %bb.0:608; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]609; X64-NEXT: vcvt2ph2bf8s %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x77,0x29,0x74,0xc2]610; X64-NEXT: retq # encoding: [0xc3]611;612; X86-LABEL: test_int_x86_avx10_vcvt2ph2bf8s256_mask:613; X86: # %bb.0:614; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]615; X86-NEXT: vcvt2ph2bf8s %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x77,0x29,0x74,0xc2]616; X86-NEXT: retl # encoding: [0xc3]617 %1 = call <32 x i8> @llvm.x86.avx10.vcvt2ph2bf8s256(<16 x half> %A, <16 x half> %B)618 %2 = bitcast i32 %U to <32 x i1>619 %3 = select <32 x i1> %2, <32 x i8> %1, <32 x i8> %C620 ret <32 x i8> %3621}622 623define <32 x i8> @test_int_x86_avx10_vcvt2ph2bf8s256_maskz(i32 %U, <16 x half> %A, <16 x half> %B) nounwind {624; X64-LABEL: test_int_x86_avx10_vcvt2ph2bf8s256_maskz:625; X64: # %bb.0:626; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]627; X64-NEXT: vcvt2ph2bf8s %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xa9,0x74,0xc1]628; X64-NEXT: retq # encoding: [0xc3]629;630; X86-LABEL: test_int_x86_avx10_vcvt2ph2bf8s256_maskz:631; X86: # %bb.0:632; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]633; X86-NEXT: vcvt2ph2bf8s %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xa9,0x74,0xc1]634; X86-NEXT: retl # encoding: [0xc3]635 %1 = call <32 x i8> @llvm.x86.avx10.vcvt2ph2bf8s256(<16 x half> %A, <16 x half> %B)636 %2 = bitcast i32 %U to <32 x i1>637 %3 = select <32 x i1> %2, <32 x i8> %1, <32 x i8> zeroinitializer638 ret <32 x i8> %3639}640 641declare <32 x i8> @llvm.x86.avx10.vcvt2ph2bf8s256(<16 x half> %A, <16 x half> %B)642 643define <16 x i8> @test_int_x86_avx10_vcvt2ph2hf8128(<8 x half> %A, <8 x half> %B) nounwind {644; CHECK-LABEL: test_int_x86_avx10_vcvt2ph2hf8128:645; CHECK: # %bb.0:646; CHECK-NEXT: vcvt2ph2hf8 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7f,0x08,0x18,0xc1]647; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]648 %ret = call <16 x i8> @llvm.x86.avx10.vcvt2ph2hf8128(<8 x half> %A, <8 x half> %B)649 ret <16 x i8> %ret650}651 652define <16 x i8> @test_int_x86_avx10_vcvt2ph2hf8128_mask(<16 x i8> %C, i16 %U, <8 x half> %A, <8 x half> %B) nounwind {653; X64-LABEL: test_int_x86_avx10_vcvt2ph2hf8128_mask:654; X64: # %bb.0:655; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]656; X64-NEXT: vcvt2ph2hf8 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x09,0x18,0xc2]657; X64-NEXT: retq # encoding: [0xc3]658;659; X86-LABEL: test_int_x86_avx10_vcvt2ph2hf8128_mask:660; X86: # %bb.0:661; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]662; X86-NEXT: vcvt2ph2hf8 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x09,0x18,0xc2]663; X86-NEXT: retl # encoding: [0xc3]664 %1 = call <16 x i8> @llvm.x86.avx10.vcvt2ph2hf8128(<8 x half> %A, <8 x half> %B)665 %2 = bitcast i16 %U to <16 x i1>666 %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> %C667 ret <16 x i8> %3668}669 670define <16 x i8> @test_int_x86_avx10_vcvt2ph2hf8128_maskz(i16 %U, <8 x half> %A, <8 x half> %B) nounwind {671; X64-LABEL: test_int_x86_avx10_vcvt2ph2hf8128_maskz:672; X64: # %bb.0:673; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]674; X64-NEXT: vcvt2ph2hf8 %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0x89,0x18,0xc1]675; X64-NEXT: retq # encoding: [0xc3]676;677; X86-LABEL: test_int_x86_avx10_vcvt2ph2hf8128_maskz:678; X86: # %bb.0:679; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]680; X86-NEXT: vcvt2ph2hf8 %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0x89,0x18,0xc1]681; X86-NEXT: retl # encoding: [0xc3]682 %1 = call <16 x i8> @llvm.x86.avx10.vcvt2ph2hf8128(<8 x half> %A, <8 x half> %B)683 %2 = bitcast i16 %U to <16 x i1>684 %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> zeroinitializer685 ret <16 x i8> %3686}687 688declare <16 x i8> @llvm.x86.avx10.vcvt2ph2hf8128(<8 x half> %A, <8 x half> %B)689 690define <32 x i8> @test_int_x86_avx10_vcvt2ph2hf8256(<16 x half> %A, <16 x half> %B) nounwind {691; CHECK-LABEL: test_int_x86_avx10_vcvt2ph2hf8256:692; CHECK: # %bb.0:693; CHECK-NEXT: vcvt2ph2hf8 %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf5,0x7f,0x28,0x18,0xc1]694; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]695 %ret = call <32 x i8> @llvm.x86.avx10.vcvt2ph2hf8256(<16 x half> %A, <16 x half> %B)696 ret <32 x i8> %ret697}698 699define <32 x i8> @test_int_x86_avx10_vcvt2ph2hf8256_mask(<32 x i8> %C, i32 %U, <16 x half> %A, <16 x half> %B) nounwind {700; X64-LABEL: test_int_x86_avx10_vcvt2ph2hf8256_mask:701; X64: # %bb.0:702; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]703; X64-NEXT: vcvt2ph2hf8 %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x77,0x29,0x18,0xc2]704; X64-NEXT: retq # encoding: [0xc3]705;706; X86-LABEL: test_int_x86_avx10_vcvt2ph2hf8256_mask:707; X86: # %bb.0:708; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]709; X86-NEXT: vcvt2ph2hf8 %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x77,0x29,0x18,0xc2]710; X86-NEXT: retl # encoding: [0xc3]711 %1 = call <32 x i8> @llvm.x86.avx10.vcvt2ph2hf8256(<16 x half> %A, <16 x half> %B)712 %2 = bitcast i32 %U to <32 x i1>713 %3 = select <32 x i1> %2, <32 x i8> %1, <32 x i8> %C714 ret <32 x i8> %3715}716 717define <32 x i8> @test_int_x86_avx10_vcvt2ph2hf8256_maskz(i32 %U, <16 x half> %A, <16 x half> %B) nounwind {718; X64-LABEL: test_int_x86_avx10_vcvt2ph2hf8256_maskz:719; X64: # %bb.0:720; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]721; X64-NEXT: vcvt2ph2hf8 %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xa9,0x18,0xc1]722; X64-NEXT: retq # encoding: [0xc3]723;724; X86-LABEL: test_int_x86_avx10_vcvt2ph2hf8256_maskz:725; X86: # %bb.0:726; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]727; X86-NEXT: vcvt2ph2hf8 %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xa9,0x18,0xc1]728; X86-NEXT: retl # encoding: [0xc3]729 %1 = call <32 x i8> @llvm.x86.avx10.vcvt2ph2hf8256(<16 x half> %A, <16 x half> %B)730 %2 = bitcast i32 %U to <32 x i1>731 %3 = select <32 x i1> %2, <32 x i8> %1, <32 x i8> zeroinitializer732 ret <32 x i8> %3733}734 735declare <32 x i8> @llvm.x86.avx10.vcvt2ph2hf8256(<16 x half> %A, <16 x half> %B)736 737define <16 x i8> @test_int_x86_avx10_vcvt2ph2hf8s128(<8 x half> %A, <8 x half> %B) nounwind {738; CHECK-LABEL: test_int_x86_avx10_vcvt2ph2hf8s128:739; CHECK: # %bb.0:740; CHECK-NEXT: vcvt2ph2hf8s %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7f,0x08,0x1b,0xc1]741; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]742 %ret = call <16 x i8> @llvm.x86.avx10.vcvt2ph2hf8s128(<8 x half> %A, <8 x half> %B)743 ret <16 x i8> %ret744}745 746define <16 x i8> @test_int_x86_avx10_vcvt2ph2hf8s128_mask(<16 x i8> %C, i16 %U, <8 x half> %A, <8 x half> %B) nounwind {747; X64-LABEL: test_int_x86_avx10_vcvt2ph2hf8s128_mask:748; X64: # %bb.0:749; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]750; X64-NEXT: vcvt2ph2hf8s %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x09,0x1b,0xc2]751; X64-NEXT: retq # encoding: [0xc3]752;753; X86-LABEL: test_int_x86_avx10_vcvt2ph2hf8s128_mask:754; X86: # %bb.0:755; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]756; X86-NEXT: vcvt2ph2hf8s %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x77,0x09,0x1b,0xc2]757; X86-NEXT: retl # encoding: [0xc3]758 %1 = call <16 x i8> @llvm.x86.avx10.vcvt2ph2hf8s128(<8 x half> %A, <8 x half> %B)759 %2 = bitcast i16 %U to <16 x i1>760 %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> %C761 ret <16 x i8> %3762}763 764define <16 x i8> @test_int_x86_avx10_vcvt2ph2hf8s128_maskz(i16 %U, <8 x half> %A, <8 x half> %B) nounwind {765; X64-LABEL: test_int_x86_avx10_vcvt2ph2hf8s128_maskz:766; X64: # %bb.0:767; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]768; X64-NEXT: vcvt2ph2hf8s %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0x89,0x1b,0xc1]769; X64-NEXT: retq # encoding: [0xc3]770;771; X86-LABEL: test_int_x86_avx10_vcvt2ph2hf8s128_maskz:772; X86: # %bb.0:773; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]774; X86-NEXT: vcvt2ph2hf8s %xmm1, %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0x89,0x1b,0xc1]775; X86-NEXT: retl # encoding: [0xc3]776 %1 = call <16 x i8> @llvm.x86.avx10.vcvt2ph2hf8s128(<8 x half> %A, <8 x half> %B)777 %2 = bitcast i16 %U to <16 x i1>778 %3 = select <16 x i1> %2, <16 x i8> %1, <16 x i8> zeroinitializer779 ret <16 x i8> %3780}781 782declare <16 x i8> @llvm.x86.avx10.vcvt2ph2hf8s128(<8 x half> %A, <8 x half> %B)783 784define <32 x i8> @test_int_x86_avx10_vcvt2ph2hf8s256(<16 x half> %A, <16 x half> %B) nounwind {785; CHECK-LABEL: test_int_x86_avx10_vcvt2ph2hf8s256:786; CHECK: # %bb.0:787; CHECK-NEXT: vcvt2ph2hf8s %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf5,0x7f,0x28,0x1b,0xc1]788; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]789 %ret = call <32 x i8> @llvm.x86.avx10.vcvt2ph2hf8s256(<16 x half> %A, <16 x half> %B)790 ret <32 x i8> %ret791}792 793define <32 x i8> @test_int_x86_avx10_vcvt2ph2hf8s256_mask(<32 x i8> %C, i32 %U, <16 x half> %A, <16 x half> %B) nounwind {794; X64-LABEL: test_int_x86_avx10_vcvt2ph2hf8s256_mask:795; X64: # %bb.0:796; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]797; X64-NEXT: vcvt2ph2hf8s %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x77,0x29,0x1b,0xc2]798; X64-NEXT: retq # encoding: [0xc3]799;800; X86-LABEL: test_int_x86_avx10_vcvt2ph2hf8s256_mask:801; X86: # %bb.0:802; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]803; X86-NEXT: vcvt2ph2hf8s %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x77,0x29,0x1b,0xc2]804; X86-NEXT: retl # encoding: [0xc3]805 %1 = call <32 x i8> @llvm.x86.avx10.vcvt2ph2hf8s256(<16 x half> %A, <16 x half> %B)806 %2 = bitcast i32 %U to <32 x i1>807 %3 = select <32 x i1> %2, <32 x i8> %1, <32 x i8> %C808 ret <32 x i8> %3809}810 811define <32 x i8> @test_int_x86_avx10_vcvt2ph2hf8s256_maskz(i32 %U, <16 x half> %A, <16 x half> %B) nounwind {812; X64-LABEL: test_int_x86_avx10_vcvt2ph2hf8s256_maskz:813; X64: # %bb.0:814; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]815; X64-NEXT: vcvt2ph2hf8s %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xa9,0x1b,0xc1]816; X64-NEXT: retq # encoding: [0xc3]817;818; X86-LABEL: test_int_x86_avx10_vcvt2ph2hf8s256_maskz:819; X86: # %bb.0:820; X86-NEXT: kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]821; X86-NEXT: vcvt2ph2hf8s %ymm1, %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xa9,0x1b,0xc1]822; X86-NEXT: retl # encoding: [0xc3]823 %1 = call <32 x i8> @llvm.x86.avx10.vcvt2ph2hf8s256(<16 x half> %A, <16 x half> %B)824 %2 = bitcast i32 %U to <32 x i1>825 %3 = select <32 x i1> %2, <32 x i8> %1, <32 x i8> zeroinitializer826 ret <32 x i8> %3827}828 829declare <32 x i8> @llvm.x86.avx10.vcvt2ph2hf8s256(<16 x half> %A, <16 x half> %B)830 831define <8 x half> @test_int_x86_avx10_vcvthf82ph128(<16 x i8> %A) nounwind {832; CHECK-LABEL: test_int_x86_avx10_vcvthf82ph128:833; CHECK: # %bb.0:834; CHECK-NEXT: vcvthf82ph %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7f,0x08,0x1e,0xc0]835; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]836 %ret = call <8 x half> @llvm.x86.avx10.mask.vcvthf82ph128(<16 x i8> %A, <8 x half> undef, i8 -1)837 ret <8 x half> %ret838}839 840define <8 x half> @test_int_x86_avx10_mask_vcvthf82ph128(<16 x i8> %A, <8 x half> %B, i8 %C) nounwind {841; X64-LABEL: test_int_x86_avx10_mask_vcvthf82ph128:842; X64: # %bb.0:843; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]844; X64-NEXT: vcvthf82ph %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0x7f,0x09,0x1e,0xc8]845; X64-NEXT: vmovdqa %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc1]846; X64-NEXT: retq # encoding: [0xc3]847;848; X86-LABEL: test_int_x86_avx10_mask_vcvthf82ph128:849; X86: # %bb.0:850; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]851; X86-NEXT: vcvthf82ph %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0x7f,0x09,0x1e,0xc8]852; X86-NEXT: vmovdqa %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf9,0x6f,0xc1]853; X86-NEXT: retl # encoding: [0xc3]854 %ret = call <8 x half> @llvm.x86.avx10.mask.vcvthf82ph128(<16 x i8> %A, <8 x half> %B, i8 %C)855 ret <8 x half> %ret856}857 858declare <8 x half> @llvm.x86.avx10.mask.vcvthf82ph128(<16 x i8> %A, <8 x half> %B, i8 %C)859 860define <8 x half> @test_int_x86_avx10_maskz_vcvthf82ph128(<16 x i8> %A, i8 %B) nounwind {861; X64-LABEL: test_int_x86_avx10_maskz_vcvthf82ph128:862; X64: # %bb.0:863; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]864; X64-NEXT: vcvthf82ph %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0x89,0x1e,0xc0]865; X64-NEXT: retq # encoding: [0xc3]866;867; X86-LABEL: test_int_x86_avx10_maskz_vcvthf82ph128:868; X86: # %bb.0:869; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]870; X86-NEXT: vcvthf82ph %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0x89,0x1e,0xc0]871; X86-NEXT: retl # encoding: [0xc3]872 %ret = call <8 x half> @llvm.x86.avx10.mask.vcvthf82ph128(<16 x i8> %A, <8 x half> zeroinitializer, i8 %B)873 ret <8 x half> %ret874}875 876define <16 x half> @test_int_x86_avx10_vcvthf82ph256(<16 x i8> %A) nounwind {877; CHECK-LABEL: test_int_x86_avx10_vcvthf82ph256:878; CHECK: # %bb.0:879; CHECK-NEXT: vcvthf82ph %xmm0, %ymm0 # encoding: [0x62,0xf5,0x7f,0x28,0x1e,0xc0]880; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]881 %ret = call <16 x half> @llvm.x86.avx10.mask.vcvthf82ph256(<16 x i8> %A, <16 x half> undef, i16 -1)882 ret <16 x half> %ret883}884 885define <16 x half> @test_int_x86_avx10_mask_vcvthf82ph256(<16 x i8> %A, <16 x half> %B, i16 %C) nounwind {886; X64-LABEL: test_int_x86_avx10_mask_vcvthf82ph256:887; X64: # %bb.0:888; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]889; X64-NEXT: vcvthf82ph %xmm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0x7f,0x29,0x1e,0xc8]890; X64-NEXT: vmovdqa %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc1]891; X64-NEXT: retq # encoding: [0xc3]892;893; X86-LABEL: test_int_x86_avx10_mask_vcvthf82ph256:894; X86: # %bb.0:895; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]896; X86-NEXT: vcvthf82ph %xmm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0x7f,0x29,0x1e,0xc8]897; X86-NEXT: vmovdqa %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfd,0x6f,0xc1]898; X86-NEXT: retl # encoding: [0xc3]899 %ret = call <16 x half> @llvm.x86.avx10.mask.vcvthf82ph256(<16 x i8> %A, <16 x half> %B, i16 %C)900 ret <16 x half> %ret901}902 903declare <16 x half> @llvm.x86.avx10.mask.vcvthf82ph256(<16 x i8> %A, <16 x half> %B, i16 %C)904 905define <16 x half> @test_int_x86_avx10_maskz_vcvthf82ph256(<16 x i8> %A, i16 %B) nounwind {906; X64-LABEL: test_int_x86_avx10_maskz_vcvthf82ph256:907; X64: # %bb.0:908; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]909; X64-NEXT: vcvthf82ph %xmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xa9,0x1e,0xc0]910; X64-NEXT: retq # encoding: [0xc3]911;912; X86-LABEL: test_int_x86_avx10_maskz_vcvthf82ph256:913; X86: # %bb.0:914; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]915; X86-NEXT: vcvthf82ph %xmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7f,0xa9,0x1e,0xc0]916; X86-NEXT: retl # encoding: [0xc3]917 %ret = call <16 x half> @llvm.x86.avx10.mask.vcvthf82ph256(<16 x i8> %A, <16 x half> zeroinitializer, i16 %B)918 ret <16 x half> %ret919}920 921define <16 x i8> @test_int_x86_avx10_vcvtph2bf8128(<8 x half> %A) nounwind {922; CHECK-LABEL: test_int_x86_avx10_vcvtph2bf8128:923; CHECK: # %bb.0:924; CHECK-NEXT: vcvtph2bf8 %xmm0, %xmm0 # encoding: [0x62,0xf2,0x7e,0x08,0x74,0xc0]925; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]926 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2bf8128(<8 x half> %A, <16 x i8> undef, i8 -1)927 ret <16 x i8> %ret928}929 930define <16 x i8> @test_int_x86_avx10_mask_vcvtph2bf8128(<16 x i8> %B, <8 x half> %A, i8 %C) nounwind {931; X64-LABEL: test_int_x86_avx10_mask_vcvtph2bf8128:932; X64: # %bb.0:933; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]934; X64-NEXT: vcvtph2bf8 %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x7e,0x09,0x74,0xc1]935; X64-NEXT: retq # encoding: [0xc3]936;937; X86-LABEL: test_int_x86_avx10_mask_vcvtph2bf8128:938; X86: # %bb.0:939; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]940; X86-NEXT: vcvtph2bf8 %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x7e,0x09,0x74,0xc1]941; X86-NEXT: retl # encoding: [0xc3]942 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2bf8128(<8 x half> %A, <16 x i8> %B, i8 %C)943 ret <16 x i8> %ret944}945 946declare <16 x i8> @llvm.x86.avx10.mask.vcvtph2bf8128(<8 x half> %A, <16 x i8> %B, i8 %C)947 948define <16 x i8> @test_int_x86_avx10_maskz_vcvtph2bf8128(<8 x half> %A, i8 %B) nounwind {949; X64-LABEL: test_int_x86_avx10_maskz_vcvtph2bf8128:950; X64: # %bb.0:951; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]952; X64-NEXT: vcvtph2bf8 %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7e,0x89,0x74,0xc0]953; X64-NEXT: retq # encoding: [0xc3]954;955; X86-LABEL: test_int_x86_avx10_maskz_vcvtph2bf8128:956; X86: # %bb.0:957; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]958; X86-NEXT: vcvtph2bf8 %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7e,0x89,0x74,0xc0]959; X86-NEXT: retl # encoding: [0xc3]960 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2bf8128(<8 x half> %A, <16 x i8> zeroinitializer, i8 %B)961 ret <16 x i8> %ret962}963 964define <16 x i8> @test_int_x86_avx10_vcvtph2bf8256(<16 x half> %A) nounwind {965; CHECK-LABEL: test_int_x86_avx10_vcvtph2bf8256:966; CHECK: # %bb.0:967; CHECK-NEXT: vcvtph2bf8 %ymm0, %xmm0 # encoding: [0x62,0xf2,0x7e,0x28,0x74,0xc0]968; CHECK-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]969; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]970 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2bf8256(<16 x half> %A, <16 x i8> undef, i16 -1)971 ret <16 x i8> %ret972}973 974define <16 x i8> @test_int_x86_avx10_mask_vcvtph2bf8256(<16 x i8> %B, <16 x half> %A, i16 %C) nounwind {975; X64-LABEL: test_int_x86_avx10_mask_vcvtph2bf8256:976; X64: # %bb.0:977; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]978; X64-NEXT: vcvtph2bf8 %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x7e,0x29,0x74,0xc1]979; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]980; X64-NEXT: retq # encoding: [0xc3]981;982; X86-LABEL: test_int_x86_avx10_mask_vcvtph2bf8256:983; X86: # %bb.0:984; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]985; X86-NEXT: vcvtph2bf8 %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf2,0x7e,0x29,0x74,0xc1]986; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]987; X86-NEXT: retl # encoding: [0xc3]988 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2bf8256(<16 x half> %A, <16 x i8> %B, i16 %C)989 ret <16 x i8> %ret990}991 992declare <16 x i8> @llvm.x86.avx10.mask.vcvtph2bf8256(<16 x half> %A, <16 x i8> %B, i16 %C)993 994define <16 x i8> @test_int_x86_avx10_maskz_vcvtph2bf8256(<16 x half> %A, i16 %B) nounwind {995; X64-LABEL: test_int_x86_avx10_maskz_vcvtph2bf8256:996; X64: # %bb.0:997; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]998; X64-NEXT: vcvtph2bf8 %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7e,0xa9,0x74,0xc0]999; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]1000; X64-NEXT: retq # encoding: [0xc3]1001;1002; X86-LABEL: test_int_x86_avx10_maskz_vcvtph2bf8256:1003; X86: # %bb.0:1004; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1005; X86-NEXT: vcvtph2bf8 %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf2,0x7e,0xa9,0x74,0xc0]1006; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]1007; X86-NEXT: retl # encoding: [0xc3]1008 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2bf8256(<16 x half> %A, <16 x i8> zeroinitializer, i16 %B)1009 ret <16 x i8> %ret1010}1011 1012define <16 x i8> @test_int_x86_avx10_vcvtph2bf8s128(<8 x half> %A) nounwind {1013; CHECK-LABEL: test_int_x86_avx10_vcvtph2bf8s128:1014; CHECK: # %bb.0:1015; CHECK-NEXT: vcvtph2bf8s %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7e,0x08,0x74,0xc0]1016; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]1017 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2bf8s128(<8 x half> %A, <16 x i8> undef, i8 -1)1018 ret <16 x i8> %ret1019}1020 1021define <16 x i8> @test_int_x86_avx10_mask_vcvtph2bf8s128(<16 x i8> %B, <8 x half> %A, i8 %C) nounwind {1022; X64-LABEL: test_int_x86_avx10_mask_vcvtph2bf8s128:1023; X64: # %bb.0:1024; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1025; X64-NEXT: vcvtph2bf8s %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x09,0x74,0xc1]1026; X64-NEXT: retq # encoding: [0xc3]1027;1028; X86-LABEL: test_int_x86_avx10_mask_vcvtph2bf8s128:1029; X86: # %bb.0:1030; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]1031; X86-NEXT: vcvtph2bf8s %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x09,0x74,0xc1]1032; X86-NEXT: retl # encoding: [0xc3]1033 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2bf8s128(<8 x half> %A, <16 x i8> %B, i8 %C)1034 ret <16 x i8> %ret1035}1036 1037declare <16 x i8> @llvm.x86.avx10.mask.vcvtph2bf8s128(<8 x half> %A, <16 x i8> %B, i8 %C)1038 1039define <16 x i8> @test_int_x86_avx10_maskz_vcvtph2bf8s128(<8 x half> %A, i8 %B) nounwind {1040; X64-LABEL: test_int_x86_avx10_maskz_vcvtph2bf8s128:1041; X64: # %bb.0:1042; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1043; X64-NEXT: vcvtph2bf8s %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0x89,0x74,0xc0]1044; X64-NEXT: retq # encoding: [0xc3]1045;1046; X86-LABEL: test_int_x86_avx10_maskz_vcvtph2bf8s128:1047; X86: # %bb.0:1048; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]1049; X86-NEXT: vcvtph2bf8s %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0x89,0x74,0xc0]1050; X86-NEXT: retl # encoding: [0xc3]1051 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2bf8s128(<8 x half> %A, <16 x i8> zeroinitializer, i8 %B)1052 ret <16 x i8> %ret1053}1054 1055define <16 x i8> @test_int_x86_avx10_vcvtph2bf8s256(<16 x half> %A) nounwind {1056; CHECK-LABEL: test_int_x86_avx10_vcvtph2bf8s256:1057; CHECK: # %bb.0:1058; CHECK-NEXT: vcvtph2bf8s %ymm0, %xmm0 # encoding: [0x62,0xf5,0x7e,0x28,0x74,0xc0]1059; CHECK-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]1060; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]1061 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2bf8s256(<16 x half> %A, <16 x i8> undef, i16 -1)1062 ret <16 x i8> %ret1063}1064 1065define <16 x i8> @test_int_x86_avx10_mask_vcvtph2bf8s256(<16 x i8> %B, <16 x half> %A, i16 %C) nounwind {1066; X64-LABEL: test_int_x86_avx10_mask_vcvtph2bf8s256:1067; X64: # %bb.0:1068; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1069; X64-NEXT: vcvtph2bf8s %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x29,0x74,0xc1]1070; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]1071; X64-NEXT: retq # encoding: [0xc3]1072;1073; X86-LABEL: test_int_x86_avx10_mask_vcvtph2bf8s256:1074; X86: # %bb.0:1075; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1076; X86-NEXT: vcvtph2bf8s %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x29,0x74,0xc1]1077; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]1078; X86-NEXT: retl # encoding: [0xc3]1079 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2bf8s256(<16 x half> %A, <16 x i8> %B, i16 %C)1080 ret <16 x i8> %ret1081}1082 1083declare <16 x i8> @llvm.x86.avx10.mask.vcvtph2bf8s256(<16 x half> %A, <16 x i8> %B, i16 %C)1084 1085define <16 x i8> @test_int_x86_avx10_maskz_vcvtph2bf8s256(<16 x half> %A, i16 %B) nounwind {1086; X64-LABEL: test_int_x86_avx10_maskz_vcvtph2bf8s256:1087; X64: # %bb.0:1088; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1089; X64-NEXT: vcvtph2bf8s %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xa9,0x74,0xc0]1090; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]1091; X64-NEXT: retq # encoding: [0xc3]1092;1093; X86-LABEL: test_int_x86_avx10_maskz_vcvtph2bf8s256:1094; X86: # %bb.0:1095; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1096; X86-NEXT: vcvtph2bf8s %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xa9,0x74,0xc0]1097; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]1098; X86-NEXT: retl # encoding: [0xc3]1099 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2bf8s256(<16 x half> %A, <16 x i8> zeroinitializer, i16 %B)1100 ret <16 x i8> %ret1101}1102 1103define <16 x i8> @test_int_x86_avx10_vcvtph2hf8128(<8 x half> %A) nounwind {1104; CHECK-LABEL: test_int_x86_avx10_vcvtph2hf8128:1105; CHECK: # %bb.0:1106; CHECK-NEXT: vcvtph2hf8 %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7e,0x08,0x18,0xc0]1107; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]1108 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2hf8128(<8 x half> %A, <16 x i8> undef, i8 -1)1109 ret <16 x i8> %ret1110}1111 1112define <16 x i8> @test_int_x86_avx10_mask_vcvtph2hf8128(<16 x i8> %B, <8 x half> %A, i8 %C) nounwind {1113; X64-LABEL: test_int_x86_avx10_mask_vcvtph2hf8128:1114; X64: # %bb.0:1115; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1116; X64-NEXT: vcvtph2hf8 %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x09,0x18,0xc1]1117; X64-NEXT: retq # encoding: [0xc3]1118;1119; X86-LABEL: test_int_x86_avx10_mask_vcvtph2hf8128:1120; X86: # %bb.0:1121; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]1122; X86-NEXT: vcvtph2hf8 %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x09,0x18,0xc1]1123; X86-NEXT: retl # encoding: [0xc3]1124 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2hf8128(<8 x half> %A, <16 x i8> %B, i8 %C)1125 ret <16 x i8> %ret1126}1127 1128declare <16 x i8> @llvm.x86.avx10.mask.vcvtph2hf8128(<8 x half> %A, <16 x i8> %B, i8 %C)1129 1130define <16 x i8> @test_int_x86_avx10_maskz_vcvtph2hf8128(<8 x half> %A, i8 %B) nounwind {1131; X64-LABEL: test_int_x86_avx10_maskz_vcvtph2hf8128:1132; X64: # %bb.0:1133; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1134; X64-NEXT: vcvtph2hf8 %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0x89,0x18,0xc0]1135; X64-NEXT: retq # encoding: [0xc3]1136;1137; X86-LABEL: test_int_x86_avx10_maskz_vcvtph2hf8128:1138; X86: # %bb.0:1139; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]1140; X86-NEXT: vcvtph2hf8 %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0x89,0x18,0xc0]1141; X86-NEXT: retl # encoding: [0xc3]1142 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2hf8128(<8 x half> %A, <16 x i8> zeroinitializer, i8 %B)1143 ret <16 x i8> %ret1144}1145 1146define <16 x i8> @test_int_x86_avx10_vcvtph2hf8256(<16 x half> %A) nounwind {1147; CHECK-LABEL: test_int_x86_avx10_vcvtph2hf8256:1148; CHECK: # %bb.0:1149; CHECK-NEXT: vcvtph2hf8 %ymm0, %xmm0 # encoding: [0x62,0xf5,0x7e,0x28,0x18,0xc0]1150; CHECK-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]1151; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]1152 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2hf8256(<16 x half> %A, <16 x i8> undef, i16 -1)1153 ret <16 x i8> %ret1154}1155 1156define <16 x i8> @test_int_x86_avx10_mask_vcvtph2hf8256(<16 x i8> %B, <16 x half> %A, i16 %C) nounwind {1157; X64-LABEL: test_int_x86_avx10_mask_vcvtph2hf8256:1158; X64: # %bb.0:1159; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1160; X64-NEXT: vcvtph2hf8 %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x29,0x18,0xc1]1161; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]1162; X64-NEXT: retq # encoding: [0xc3]1163;1164; X86-LABEL: test_int_x86_avx10_mask_vcvtph2hf8256:1165; X86: # %bb.0:1166; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1167; X86-NEXT: vcvtph2hf8 %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x29,0x18,0xc1]1168; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]1169; X86-NEXT: retl # encoding: [0xc3]1170 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2hf8256(<16 x half> %A, <16 x i8> %B, i16 %C)1171 ret <16 x i8> %ret1172}1173 1174declare <16 x i8> @llvm.x86.avx10.mask.vcvtph2hf8256(<16 x half> %A, <16 x i8> %B, i16 %C)1175 1176define <16 x i8> @test_int_x86_avx10_maskz_vcvtph2hf8256(<16 x half> %A, i16 %B) nounwind {1177; X64-LABEL: test_int_x86_avx10_maskz_vcvtph2hf8256:1178; X64: # %bb.0:1179; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1180; X64-NEXT: vcvtph2hf8 %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xa9,0x18,0xc0]1181; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]1182; X64-NEXT: retq # encoding: [0xc3]1183;1184; X86-LABEL: test_int_x86_avx10_maskz_vcvtph2hf8256:1185; X86: # %bb.0:1186; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1187; X86-NEXT: vcvtph2hf8 %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xa9,0x18,0xc0]1188; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]1189; X86-NEXT: retl # encoding: [0xc3]1190 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2hf8256(<16 x half> %A, <16 x i8> zeroinitializer, i16 %B)1191 ret <16 x i8> %ret1192}1193 1194define <16 x i8> @test_int_x86_avx10_vcvtph2hf8s128(<8 x half> %A) nounwind {1195; CHECK-LABEL: test_int_x86_avx10_vcvtph2hf8s128:1196; CHECK: # %bb.0:1197; CHECK-NEXT: vcvtph2hf8s %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7e,0x08,0x1b,0xc0]1198; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]1199 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2hf8s128(<8 x half> %A, <16 x i8> undef, i8 -1)1200 ret <16 x i8> %ret1201}1202 1203define <16 x i8> @test_int_x86_avx10_mask_vcvtph2hf8s128(<16 x i8> %B, <8 x half> %A, i8 %C) nounwind {1204; X64-LABEL: test_int_x86_avx10_mask_vcvtph2hf8s128:1205; X64: # %bb.0:1206; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1207; X64-NEXT: vcvtph2hf8s %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x09,0x1b,0xc1]1208; X64-NEXT: retq # encoding: [0xc3]1209;1210; X86-LABEL: test_int_x86_avx10_mask_vcvtph2hf8s128:1211; X86: # %bb.0:1212; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]1213; X86-NEXT: vcvtph2hf8s %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x09,0x1b,0xc1]1214; X86-NEXT: retl # encoding: [0xc3]1215 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2hf8s128(<8 x half> %A, <16 x i8> %B, i8 %C)1216 ret <16 x i8> %ret1217}1218 1219declare <16 x i8> @llvm.x86.avx10.mask.vcvtph2hf8s128(<8 x half> %A, <16 x i8> %B, i8 %C)1220 1221define <16 x i8> @test_int_x86_avx10_maskz_vcvtph2hf8s128(<8 x half> %A, i8 %B) nounwind {1222; X64-LABEL: test_int_x86_avx10_maskz_vcvtph2hf8s128:1223; X64: # %bb.0:1224; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1225; X64-NEXT: vcvtph2hf8s %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0x89,0x1b,0xc0]1226; X64-NEXT: retq # encoding: [0xc3]1227;1228; X86-LABEL: test_int_x86_avx10_maskz_vcvtph2hf8s128:1229; X86: # %bb.0:1230; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]1231; X86-NEXT: vcvtph2hf8s %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0x89,0x1b,0xc0]1232; X86-NEXT: retl # encoding: [0xc3]1233 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2hf8s128(<8 x half> %A, <16 x i8> zeroinitializer, i8 %B)1234 ret <16 x i8> %ret1235}1236 1237define <16 x i8> @test_int_x86_avx10_vcvtph2hf8s256(<16 x half> %A) nounwind {1238; CHECK-LABEL: test_int_x86_avx10_vcvtph2hf8s256:1239; CHECK: # %bb.0:1240; CHECK-NEXT: vcvtph2hf8s %ymm0, %xmm0 # encoding: [0x62,0xf5,0x7e,0x28,0x1b,0xc0]1241; CHECK-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]1242; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]1243 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2hf8s256(<16 x half> %A, <16 x i8> undef, i16 -1)1244 ret <16 x i8> %ret1245}1246 1247define <16 x i8> @test_int_x86_avx10_mask_vcvtph2hf8s256(<16 x i8> %B, <16 x half> %A, i16 %C) nounwind {1248; X64-LABEL: test_int_x86_avx10_mask_vcvtph2hf8s256:1249; X64: # %bb.0:1250; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1251; X64-NEXT: vcvtph2hf8s %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x29,0x1b,0xc1]1252; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]1253; X64-NEXT: retq # encoding: [0xc3]1254;1255; X86-LABEL: test_int_x86_avx10_mask_vcvtph2hf8s256:1256; X86: # %bb.0:1257; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1258; X86-NEXT: vcvtph2hf8s %ymm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7e,0x29,0x1b,0xc1]1259; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]1260; X86-NEXT: retl # encoding: [0xc3]1261 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2hf8s256(<16 x half> %A, <16 x i8> %B, i16 %C)1262 ret <16 x i8> %ret1263}1264 1265declare <16 x i8> @llvm.x86.avx10.mask.vcvtph2hf8s256(<16 x half> %A, <16 x i8> %B, i16 %C)1266 1267define <16 x i8> @test_int_x86_avx10_maskz_vcvtph2hf8s256(<16 x half> %A, i16 %B) nounwind {1268; X64-LABEL: test_int_x86_avx10_maskz_vcvtph2hf8s256:1269; X64: # %bb.0:1270; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1271; X64-NEXT: vcvtph2hf8s %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xa9,0x1b,0xc0]1272; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]1273; X64-NEXT: retq # encoding: [0xc3]1274;1275; X86-LABEL: test_int_x86_avx10_maskz_vcvtph2hf8s256:1276; X86: # %bb.0:1277; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]1278; X86-NEXT: vcvtph2hf8s %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7e,0xa9,0x1b,0xc0]1279; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]1280; X86-NEXT: retl # encoding: [0xc3]1281 %ret = call <16 x i8> @llvm.x86.avx10.mask.vcvtph2hf8s256(<16 x half> %A, <16 x i8> zeroinitializer, i16 %B)1282 ret <16 x i8> %ret1283}1284