brintos

brintos / llvm-project-archived public Read only

0
0
Text · 57.7 KiB · 01b7618 Raw
1178 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 <16 x bfloat> @test_int_x86_avx10_add_bf16_256(<16 x bfloat> %x1, <16 x bfloat> %x2) {6; CHECK-LABEL: test_int_x86_avx10_add_bf16_256:7; CHECK:       # %bb.0:8; CHECK-NEXT:    vaddbf16 %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf5,0x7d,0x28,0x58,0xc1]9; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]10  %res = fadd <16 x bfloat> %x1, %x211  ret <16 x bfloat> %res12}13 14define <16 x bfloat> @test_int_x86_avx10_mask_add_bf16_256(<16 x bfloat> %src, <16 x bfloat> %x1, <16 x bfloat> %x2, i16 %msk, ptr %ptr) {15; X64-LABEL: test_int_x86_avx10_mask_add_bf16_256:16; X64:       # %bb.0:17; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]18; X64-NEXT:    vaddbf16 %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x75,0x29,0x58,0xc2]19; X64-NEXT:    retq # encoding: [0xc3]20;21; X86-LABEL: test_int_x86_avx10_mask_add_bf16_256:22; X86:       # %bb.0:23; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]24; X86-NEXT:    vaddbf16 %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x75,0x29,0x58,0xc2]25; X86-NEXT:    retl # encoding: [0xc3]26  %mask = bitcast i16 %msk to <16 x i1>27  %res0 = fadd <16 x bfloat> %x1, %x228  %res = select <16 x i1> %mask, <16 x bfloat> %res0, <16 x bfloat> %src29  ret <16 x bfloat> %res30}31define <16 x bfloat> @test_int_x86_avx10_maskz_add_bf16_256(<16 x bfloat> %src, <16 x bfloat> %x1, <16 x bfloat> %x2, i16 %msk, ptr %ptr) {32; X64-LABEL: test_int_x86_avx10_maskz_add_bf16_256:33; X64:       # %bb.0:34; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]35; X64-NEXT:    vaddbf16 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x75,0xa9,0x58,0xc2]36; X64-NEXT:    vaddbf16 (%rsi), %ymm1, %ymm1 {%k1} {z} # encoding: [0x62,0xf5,0x75,0xa9,0x58,0x0e]37; X64-NEXT:    vaddbf16 %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf5,0x7d,0x28,0x58,0xc1]38; X64-NEXT:    retq # encoding: [0xc3]39;40; X86-LABEL: test_int_x86_avx10_maskz_add_bf16_256:41; X86:       # %bb.0:42; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x08]43; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]44; X86-NEXT:    vaddbf16 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x75,0xa9,0x58,0xc2]45; X86-NEXT:    vaddbf16 (%eax), %ymm1, %ymm1 {%k1} {z} # encoding: [0x62,0xf5,0x75,0xa9,0x58,0x08]46; X86-NEXT:    vaddbf16 %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf5,0x7d,0x28,0x58,0xc1]47; X86-NEXT:    retl # encoding: [0xc3]48  %mask = bitcast i16 %msk to <16 x i1>49  %val = load <16 x bfloat>, ptr %ptr50  %res0 = fadd <16 x bfloat> %x1, %x251  %res1 = select <16 x i1> %mask, <16 x bfloat> %res0, <16 x bfloat> zeroinitializer52  %t2 = fadd <16 x bfloat> %x1, %val53  %res2 = select <16 x i1> %mask, <16 x bfloat> %t2, <16 x bfloat> zeroinitializer54  %res3  = fadd <16 x bfloat> %res1, %res255  ret <16 x bfloat> %res356}57 58define <8 x bfloat> @test_int_x86_avx10_add_bf16_128(<8 x bfloat> %x1, <8 x bfloat> %x2) {59; CHECK-LABEL: test_int_x86_avx10_add_bf16_128:60; CHECK:       # %bb.0:61; CHECK-NEXT:    vaddbf16 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7d,0x08,0x58,0xc1]62; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]63  %res = fadd <8 x bfloat> %x1, %x264  ret <8 x bfloat> %res65}66 67define <8 x bfloat> @test_int_x86_avx10_mask_add_bf16_128(<8 x bfloat> %src, <8 x bfloat> %x1, <8 x bfloat> %x2, i8 %msk, ptr %ptr) {68; X64-LABEL: test_int_x86_avx10_mask_add_bf16_128:69; X64:       # %bb.0:70; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]71; X64-NEXT:    vaddbf16 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x75,0x09,0x58,0xc2]72; X64-NEXT:    retq # encoding: [0xc3]73;74; X86-LABEL: test_int_x86_avx10_mask_add_bf16_128:75; X86:       # %bb.0:76; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]77; X86-NEXT:    vaddbf16 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x75,0x09,0x58,0xc2]78; X86-NEXT:    retl # encoding: [0xc3]79  %mask = bitcast i8 %msk to <8 x i1>80  %res0 = fadd <8 x bfloat> %x1, %x281  %res = select <8 x i1> %mask, <8 x bfloat> %res0, <8 x bfloat> %src82  ret <8 x bfloat> %res83}84 85define <8 x bfloat> @test_int_x86_avx10_maskz_add_bf16_128(<8 x bfloat> %src, <8 x bfloat> %x1, <8 x bfloat> %x2, i8 %msk, ptr %ptr) {86; X64-LABEL: test_int_x86_avx10_maskz_add_bf16_128:87; X64:       # %bb.0:88; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]89; X64-NEXT:    vaddbf16 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x75,0x89,0x58,0xc2]90; X64-NEXT:    vaddbf16 (%rsi), %xmm1, %xmm1 {%k1} {z} # encoding: [0x62,0xf5,0x75,0x89,0x58,0x0e]91; X64-NEXT:    vaddbf16 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7d,0x08,0x58,0xc1]92; X64-NEXT:    retq # encoding: [0xc3]93;94; X86-LABEL: test_int_x86_avx10_maskz_add_bf16_128:95; X86:       # %bb.0:96; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x08]97; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]98; X86-NEXT:    vaddbf16 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x75,0x89,0x58,0xc2]99; X86-NEXT:    vaddbf16 (%eax), %xmm1, %xmm1 {%k1} {z} # encoding: [0x62,0xf5,0x75,0x89,0x58,0x08]100; X86-NEXT:    vaddbf16 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7d,0x08,0x58,0xc1]101; X86-NEXT:    retl # encoding: [0xc3]102  %mask = bitcast i8 %msk to <8 x i1>103  %val = load <8 x bfloat>, ptr %ptr104  %res0 = fadd <8 x bfloat> %x1, %x2105  %res1 = select <8 x i1> %mask, <8 x bfloat> %res0, <8 x bfloat> zeroinitializer106  %t2 = fadd <8 x bfloat> %x1, %val107  %res2 = select <8 x i1> %mask, <8 x bfloat> %t2, <8 x bfloat> zeroinitializer108  %res3  = fadd <8 x bfloat> %res1, %res2109  ret <8 x bfloat> %res3110}111 112define <16 x bfloat> @test_int_x86_avx10_sub_bf16_256(<16 x bfloat> %x1, <16 x bfloat> %x2) {113; CHECK-LABEL: test_int_x86_avx10_sub_bf16_256:114; CHECK:       # %bb.0:115; CHECK-NEXT:    vsubbf16 %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf5,0x7d,0x28,0x5c,0xc1]116; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]117  %res = fsub <16 x bfloat> %x1, %x2118  ret <16 x bfloat> %res119}120 121define <16 x bfloat> @test_int_x86_avx10_mask_sub_bf16_256(<16 x bfloat> %src, <16 x bfloat> %x1, <16 x bfloat> %x2, i16 %msk, ptr %ptr) {122; X64-LABEL: test_int_x86_avx10_mask_sub_bf16_256:123; X64:       # %bb.0:124; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]125; X64-NEXT:    vsubbf16 %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x75,0x29,0x5c,0xc2]126; X64-NEXT:    retq # encoding: [0xc3]127;128; X86-LABEL: test_int_x86_avx10_mask_sub_bf16_256:129; X86:       # %bb.0:130; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]131; X86-NEXT:    vsubbf16 %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x75,0x29,0x5c,0xc2]132; X86-NEXT:    retl # encoding: [0xc3]133  %mask = bitcast i16 %msk to <16 x i1>134  %res0 = fsub <16 x bfloat> %x1, %x2135  %res = select <16 x i1> %mask, <16 x bfloat> %res0, <16 x bfloat> %src136  ret <16 x bfloat> %res137}138 139define <16 x bfloat> @test_int_x86_avx10_maskz_sub_bf16_256(<16 x bfloat> %src, <16 x bfloat> %x1, <16 x bfloat> %x2, i16 %msk, ptr %ptr) {140; X64-LABEL: test_int_x86_avx10_maskz_sub_bf16_256:141; X64:       # %bb.0:142; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]143; X64-NEXT:    vsubbf16 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x75,0xa9,0x5c,0xc2]144; X64-NEXT:    vsubbf16 (%rsi), %ymm1, %ymm1 # encoding: [0x62,0xf5,0x75,0x28,0x5c,0x0e]145; X64-NEXT:    vsubbf16 %ymm1, %ymm0, %ymm0 {%k1} # encoding: [0x62,0xf5,0x7d,0x29,0x5c,0xc1]146; X64-NEXT:    retq # encoding: [0xc3]147;148; X86-LABEL: test_int_x86_avx10_maskz_sub_bf16_256:149; X86:       # %bb.0:150; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x08]151; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]152; X86-NEXT:    vsubbf16 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x75,0xa9,0x5c,0xc2]153; X86-NEXT:    vsubbf16 (%eax), %ymm1, %ymm1 # encoding: [0x62,0xf5,0x75,0x28,0x5c,0x08]154; X86-NEXT:    vsubbf16 %ymm1, %ymm0, %ymm0 {%k1} # encoding: [0x62,0xf5,0x7d,0x29,0x5c,0xc1]155; X86-NEXT:    retl # encoding: [0xc3]156  %mask = bitcast i16 %msk to <16 x i1>157  %val = load <16 x bfloat>, ptr %ptr158  %res0 = fsub <16 x bfloat> %x1, %x2159  %res1 = select <16 x i1> %mask, <16 x bfloat> %res0, <16 x bfloat> zeroinitializer160  %t2 = fsub <16 x bfloat> %x1, %val161  %res2 = select <16 x i1> %mask, <16 x bfloat> %t2, <16 x bfloat> zeroinitializer162  %res3  = fsub <16 x bfloat> %res1, %res2163  ret <16 x bfloat> %res3164}165 166define <8 x bfloat> @test_int_x86_avx10_sub_bf16_128(<8 x bfloat> %x1, <8 x bfloat> %x2) {167; CHECK-LABEL: test_int_x86_avx10_sub_bf16_128:168; CHECK:       # %bb.0:169; CHECK-NEXT:    vsubbf16 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7d,0x08,0x5c,0xc1]170; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]171  %res = fsub <8 x bfloat> %x1, %x2172  ret <8 x bfloat> %res173}174 175define <8 x bfloat> @test_int_x86_avx10_mask_sub_bf16_128(<8 x bfloat> %src, <8 x bfloat> %x1, <8 x bfloat> %x2, i8 %msk, ptr %ptr) {176; X64-LABEL: test_int_x86_avx10_mask_sub_bf16_128:177; X64:       # %bb.0:178; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]179; X64-NEXT:    vsubbf16 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x75,0x09,0x5c,0xc2]180; X64-NEXT:    retq # encoding: [0xc3]181;182; X86-LABEL: test_int_x86_avx10_mask_sub_bf16_128:183; X86:       # %bb.0:184; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]185; X86-NEXT:    vsubbf16 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x75,0x09,0x5c,0xc2]186; X86-NEXT:    retl # encoding: [0xc3]187  %mask = bitcast i8 %msk to <8 x i1>188  %res0 = fsub <8 x bfloat> %x1, %x2189  %res = select <8 x i1> %mask, <8 x bfloat> %res0, <8 x bfloat> %src190  ret <8 x bfloat> %res191}192 193define <8 x bfloat> @test_int_x86_avx10_maskz_sub_bf16_128(<8 x bfloat> %src, <8 x bfloat> %x1, <8 x bfloat> %x2, i8 %msk, ptr %ptr) {194; X64-LABEL: test_int_x86_avx10_maskz_sub_bf16_128:195; X64:       # %bb.0:196; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]197; X64-NEXT:    vsubbf16 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x75,0x89,0x5c,0xc2]198; X64-NEXT:    vsubbf16 (%rsi), %xmm1, %xmm1 # encoding: [0x62,0xf5,0x75,0x08,0x5c,0x0e]199; X64-NEXT:    vsubbf16 %xmm1, %xmm0, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7d,0x09,0x5c,0xc1]200; X64-NEXT:    retq # encoding: [0xc3]201;202; X86-LABEL: test_int_x86_avx10_maskz_sub_bf16_128:203; X86:       # %bb.0:204; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x08]205; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]206; X86-NEXT:    vsubbf16 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x75,0x89,0x5c,0xc2]207; X86-NEXT:    vsubbf16 (%eax), %xmm1, %xmm1 # encoding: [0x62,0xf5,0x75,0x08,0x5c,0x08]208; X86-NEXT:    vsubbf16 %xmm1, %xmm0, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7d,0x09,0x5c,0xc1]209; X86-NEXT:    retl # encoding: [0xc3]210  %mask = bitcast i8 %msk to <8 x i1>211  %val = load <8 x bfloat>, ptr %ptr212  %res0 = fsub <8 x bfloat> %x1, %x2213  %res1 = select <8 x i1> %mask, <8 x bfloat> %res0, <8 x bfloat> zeroinitializer214  %t2 = fsub <8 x bfloat> %x1, %val215  %res2 = select <8 x i1> %mask, <8 x bfloat> %t2, <8 x bfloat> zeroinitializer216  %res3  = fsub <8 x bfloat> %res1, %res2217  ret <8 x bfloat> %res3218}219 220define <16 x bfloat> @test_int_x86_avx10_mul_bf16_256(<16 x bfloat> %x1, <16 x bfloat> %x2) {221; CHECK-LABEL: test_int_x86_avx10_mul_bf16_256:222; CHECK:       # %bb.0:223; CHECK-NEXT:    vmulbf16 %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf5,0x7d,0x28,0x59,0xc1]224; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]225  %res = fmul <16 x bfloat> %x1, %x2226  ret <16 x bfloat> %res227}228 229define <16 x bfloat> @test_int_x86_avx10_mask_mul_bf16_256(<16 x bfloat> %src, <16 x bfloat> %x1, <16 x bfloat> %x2, i16 %msk, ptr %ptr) {230; X64-LABEL: test_int_x86_avx10_mask_mul_bf16_256:231; X64:       # %bb.0:232; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]233; X64-NEXT:    vmulbf16 %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x75,0x29,0x59,0xc2]234; X64-NEXT:    retq # encoding: [0xc3]235;236; X86-LABEL: test_int_x86_avx10_mask_mul_bf16_256:237; X86:       # %bb.0:238; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]239; X86-NEXT:    vmulbf16 %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x75,0x29,0x59,0xc2]240; X86-NEXT:    retl # encoding: [0xc3]241  %mask = bitcast i16 %msk to <16 x i1>242  %res0 = fmul <16 x bfloat> %x1, %x2243  %res = select <16 x i1> %mask, <16 x bfloat> %res0, <16 x bfloat> %src244  ret <16 x bfloat> %res245}246 247define <16 x bfloat> @test_int_x86_avx10_maskz_mul_bf16_256(<16 x bfloat> %src, <16 x bfloat> %x1, <16 x bfloat> %x2, i16 %msk, ptr %ptr) {248; X64-LABEL: test_int_x86_avx10_maskz_mul_bf16_256:249; X64:       # %bb.0:250; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]251; X64-NEXT:    vmulbf16 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x75,0xa9,0x59,0xc2]252; X64-NEXT:    vmulbf16 (%rsi), %ymm1, %ymm1 {%k1} {z} # encoding: [0x62,0xf5,0x75,0xa9,0x59,0x0e]253; X64-NEXT:    vmulbf16 %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf5,0x7d,0x28,0x59,0xc1]254; X64-NEXT:    retq # encoding: [0xc3]255;256; X86-LABEL: test_int_x86_avx10_maskz_mul_bf16_256:257; X86:       # %bb.0:258; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x08]259; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]260; X86-NEXT:    vmulbf16 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x75,0xa9,0x59,0xc2]261; X86-NEXT:    vmulbf16 (%eax), %ymm1, %ymm1 {%k1} {z} # encoding: [0x62,0xf5,0x75,0xa9,0x59,0x08]262; X86-NEXT:    vmulbf16 %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf5,0x7d,0x28,0x59,0xc1]263; X86-NEXT:    retl # encoding: [0xc3]264  %mask = bitcast i16 %msk to <16 x i1>265  %val = load <16 x bfloat>, ptr %ptr266  %res0 = fmul <16 x bfloat> %x1, %x2267  %res1 = select <16 x i1> %mask, <16 x bfloat> %res0, <16 x bfloat> zeroinitializer268  %t2 = fmul <16 x bfloat> %x1, %val269  %res2 = select <16 x i1> %mask, <16 x bfloat> %t2, <16 x bfloat> zeroinitializer270  %res3  = fmul <16 x bfloat> %res1, %res2271  ret <16 x bfloat> %res3272}273 274define <8 x bfloat> @test_int_x86_avx10_mul_bf16_128(<8 x bfloat> %x1, <8 x bfloat> %x2) {275; CHECK-LABEL: test_int_x86_avx10_mul_bf16_128:276; CHECK:       # %bb.0:277; CHECK-NEXT:    vmulbf16 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7d,0x08,0x59,0xc1]278; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]279  %res = fmul <8 x bfloat> %x1, %x2280  ret <8 x bfloat> %res281}282 283define <8 x bfloat> @test_int_x86_avx10_mask_mul_bf16_128(<8 x bfloat> %src, <8 x bfloat> %x1, <8 x bfloat> %x2, i8 %msk, ptr %ptr) {284; X64-LABEL: test_int_x86_avx10_mask_mul_bf16_128:285; X64:       # %bb.0:286; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]287; X64-NEXT:    vmulbf16 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x75,0x09,0x59,0xc2]288; X64-NEXT:    retq # encoding: [0xc3]289;290; X86-LABEL: test_int_x86_avx10_mask_mul_bf16_128:291; X86:       # %bb.0:292; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]293; X86-NEXT:    vmulbf16 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x75,0x09,0x59,0xc2]294; X86-NEXT:    retl # encoding: [0xc3]295  %mask = bitcast i8 %msk to <8 x i1>296  %res0 = fmul <8 x bfloat> %x1, %x2297  %res = select <8 x i1> %mask, <8 x bfloat> %res0, <8 x bfloat> %src298  ret <8 x bfloat> %res299}300 301define <8 x bfloat> @test_int_x86_avx10_maskz_mul_bf16_128(<8 x bfloat> %src, <8 x bfloat> %x1, <8 x bfloat> %x2, i8 %msk, ptr %ptr) {302; X64-LABEL: test_int_x86_avx10_maskz_mul_bf16_128:303; X64:       # %bb.0:304; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]305; X64-NEXT:    vmulbf16 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x75,0x89,0x59,0xc2]306; X64-NEXT:    vmulbf16 (%rsi), %xmm1, %xmm1 {%k1} {z} # encoding: [0x62,0xf5,0x75,0x89,0x59,0x0e]307; X64-NEXT:    vmulbf16 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7d,0x08,0x59,0xc1]308; X64-NEXT:    retq # encoding: [0xc3]309;310; X86-LABEL: test_int_x86_avx10_maskz_mul_bf16_128:311; X86:       # %bb.0:312; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x08]313; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]314; X86-NEXT:    vmulbf16 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x75,0x89,0x59,0xc2]315; X86-NEXT:    vmulbf16 (%eax), %xmm1, %xmm1 {%k1} {z} # encoding: [0x62,0xf5,0x75,0x89,0x59,0x08]316; X86-NEXT:    vmulbf16 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7d,0x08,0x59,0xc1]317; X86-NEXT:    retl # encoding: [0xc3]318  %mask = bitcast i8 %msk to <8 x i1>319  %val = load <8 x bfloat>, ptr %ptr320  %res0 = fmul <8 x bfloat> %x1, %x2321  %res1 = select <8 x i1> %mask, <8 x bfloat> %res0, <8 x bfloat> zeroinitializer322  %t2 = fmul <8 x bfloat> %x1, %val323  %res2 = select <8 x i1> %mask, <8 x bfloat> %t2, <8 x bfloat> zeroinitializer324  %res3  = fmul <8 x bfloat> %res1, %res2325  ret <8 x bfloat> %res3326}327 328define <16 x bfloat> @test_int_x86_avx10_div_bf16_256(<16 x bfloat> %x1, <16 x bfloat> %x2) {329; CHECK-LABEL: test_int_x86_avx10_div_bf16_256:330; CHECK:       # %bb.0:331; CHECK-NEXT:    vdivbf16 %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf5,0x7d,0x28,0x5e,0xc1]332; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]333  %res = fdiv <16 x bfloat> %x1, %x2334  ret <16 x bfloat> %res335}336 337define <16 x bfloat> @test_int_x86_avx10_mask_div_bf16_256(<16 x bfloat> %src, <16 x bfloat> %x1, <16 x bfloat> %x2, i16 %msk, ptr %ptr) {338; X64-LABEL: test_int_x86_avx10_mask_div_bf16_256:339; X64:       # %bb.0:340; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]341; X64-NEXT:    vdivbf16 %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x75,0x29,0x5e,0xc2]342; X64-NEXT:    retq # encoding: [0xc3]343;344; X86-LABEL: test_int_x86_avx10_mask_div_bf16_256:345; X86:       # %bb.0:346; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]347; X86-NEXT:    vdivbf16 %ymm2, %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x75,0x29,0x5e,0xc2]348; X86-NEXT:    retl # encoding: [0xc3]349  %mask = bitcast i16 %msk to <16 x i1>350  %res0 = fdiv <16 x bfloat> %x1, %x2351  %res = select <16 x i1> %mask, <16 x bfloat> %res0, <16 x bfloat> %src352  ret <16 x bfloat> %res353}354 355; FIXME: assembly order is different from fp16 ones356define <16 x bfloat> @test_int_x86_avx10_maskz_div_bf16_256(<16 x bfloat> %src, <16 x bfloat> %x1, <16 x bfloat> %x2, i16 %msk, ptr %ptr) {357; X64-LABEL: test_int_x86_avx10_maskz_div_bf16_256:358; X64:       # %bb.0:359; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]360; X64-NEXT:    vdivbf16 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x75,0xa9,0x5e,0xc2]361; X64-NEXT:    vdivbf16 (%rsi), %ymm1, %ymm1 {%k1} {z} # encoding: [0x62,0xf5,0x75,0xa9,0x5e,0x0e]362; X64-NEXT:    vdivbf16 %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf5,0x7d,0x28,0x5e,0xc1]363; X64-NEXT:    retq # encoding: [0xc3]364;365; X86-LABEL: test_int_x86_avx10_maskz_div_bf16_256:366; X86:       # %bb.0:367; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x08]368; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]369; X86-NEXT:    vdivbf16 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x75,0xa9,0x5e,0xc2]370; X86-NEXT:    vdivbf16 (%eax), %ymm1, %ymm1 {%k1} {z} # encoding: [0x62,0xf5,0x75,0xa9,0x5e,0x08]371; X86-NEXT:    vdivbf16 %ymm1, %ymm0, %ymm0 # encoding: [0x62,0xf5,0x7d,0x28,0x5e,0xc1]372; X86-NEXT:    retl # encoding: [0xc3]373  %mask = bitcast i16 %msk to <16 x i1>374  %val = load <16 x bfloat>, ptr %ptr375  %res0 = fdiv <16 x bfloat> %x1, %x2376  %res1 = select <16 x i1> %mask, <16 x bfloat> %res0, <16 x bfloat> zeroinitializer377  %t2 = fdiv <16 x bfloat> %x1, %val378  %res2 = select <16 x i1> %mask, <16 x bfloat> %t2, <16 x bfloat> zeroinitializer379  %res3  = fdiv <16 x bfloat> %res1, %res2380  ret <16 x bfloat> %res3381}382 383define <8 x bfloat> @test_int_x86_avx10_div_bf16_128(<8 x bfloat> %x1, <8 x bfloat> %x2) {384; CHECK-LABEL: test_int_x86_avx10_div_bf16_128:385; CHECK:       # %bb.0:386; CHECK-NEXT:    vdivbf16 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7d,0x08,0x5e,0xc1]387; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]388  %res = fdiv <8 x bfloat> %x1, %x2389  ret <8 x bfloat> %res390}391 392define <8 x bfloat> @test_int_x86_avx10_mask_div_bf16_128(<8 x bfloat> %src, <8 x bfloat> %x1, <8 x bfloat> %x2, i8 %msk, ptr %ptr) {393; X64-LABEL: test_int_x86_avx10_mask_div_bf16_128:394; X64:       # %bb.0:395; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]396; X64-NEXT:    vdivbf16 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x75,0x09,0x5e,0xc2]397; X64-NEXT:    retq # encoding: [0xc3]398;399; X86-LABEL: test_int_x86_avx10_mask_div_bf16_128:400; X86:       # %bb.0:401; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]402; X86-NEXT:    vdivbf16 %xmm2, %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x75,0x09,0x5e,0xc2]403; X86-NEXT:    retl # encoding: [0xc3]404  %mask = bitcast i8 %msk to <8 x i1>405  %res0 = fdiv <8 x bfloat> %x1, %x2406  %res = select <8 x i1> %mask, <8 x bfloat> %res0, <8 x bfloat> %src407  ret <8 x bfloat> %res408}409 410; FIXME: assembly order is different from fp16 ones411define <8 x bfloat> @test_int_x86_avx10_maskz_div_bf16_128(<8 x bfloat> %src, <8 x bfloat> %x1, <8 x bfloat> %x2, i8 %msk, ptr %ptr) {412; X64-LABEL: test_int_x86_avx10_maskz_div_bf16_128:413; X64:       # %bb.0:414; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]415; X64-NEXT:    vdivbf16 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x75,0x89,0x5e,0xc2]416; X64-NEXT:    vdivbf16 (%rsi), %xmm1, %xmm1 {%k1} {z} # encoding: [0x62,0xf5,0x75,0x89,0x5e,0x0e]417; X64-NEXT:    vdivbf16 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7d,0x08,0x5e,0xc1]418; X64-NEXT:    retq # encoding: [0xc3]419;420; X86-LABEL: test_int_x86_avx10_maskz_div_bf16_128:421; X86:       # %bb.0:422; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x08]423; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]424; X86-NEXT:    vdivbf16 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x75,0x89,0x5e,0xc2]425; X86-NEXT:    vdivbf16 (%eax), %xmm1, %xmm1 {%k1} {z} # encoding: [0x62,0xf5,0x75,0x89,0x5e,0x08]426; X86-NEXT:    vdivbf16 %xmm1, %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7d,0x08,0x5e,0xc1]427; X86-NEXT:    retl # encoding: [0xc3]428  %mask = bitcast i8 %msk to <8 x i1>429  %val = load <8 x bfloat>, ptr %ptr430  %res0 = fdiv <8 x bfloat> %x1, %x2431  %res1 = select <8 x i1> %mask, <8 x bfloat> %res0, <8 x bfloat> zeroinitializer432  %t2 = fdiv <8 x bfloat> %x1, %val433  %res2 = select <8 x i1> %mask, <8 x bfloat> %t2, <8 x bfloat> zeroinitializer434  %res3  = fdiv <8 x bfloat> %res1, %res2435  ret <8 x bfloat> %res3436}437 438define i16 @test_int_x86_avx10_vcmpbf16256(<16 x bfloat> %x1, <16 x bfloat> %x2) {439; CHECK-LABEL: test_int_x86_avx10_vcmpbf16256:440; CHECK:       # %bb.0:441; CHECK-NEXT:    vcmpunordbf16 %ymm1, %ymm0, %k0 # encoding: [0x62,0xf3,0x7f,0x28,0xc2,0xc1,0x03]442; CHECK-NEXT:    kmovd %k0, %eax # encoding: [0xc5,0xfb,0x93,0xc0]443; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax444; CHECK-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]445; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]446  %1 = fcmp uno <16 x bfloat> %x1, %x2447  %res = bitcast <16 x i1> %1 to i16448  ret i16 %res449}450 451define i16 @test_int_x86_avx10_vcmpbf16256_mask2(<16 x bfloat> %x1, <16 x bfloat> %x2) {452; CHECK-LABEL: test_int_x86_avx10_vcmpbf16256_mask2:453; CHECK:       # %bb.0:454; CHECK-NEXT:    vcmpeqbf16 %ymm1, %ymm0, %k0 # encoding: [0x62,0xf3,0x7f,0x28,0xc2,0xc1,0x00]455; CHECK-NEXT:    kmovd %k0, %eax # encoding: [0xc5,0xfb,0x93,0xc0]456; CHECK-NEXT:    andl $3, %eax # encoding: [0x83,0xe0,0x03]457; CHECK-NEXT:    # kill: def $ax killed $ax killed $eax458; CHECK-NEXT:    vzeroupper # encoding: [0xc5,0xf8,0x77]459; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]460  %1 = fcmp oeq <16 x bfloat> %x1, %x2461  %2 = and <16 x i1> %1, <i1 true, i1 true, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false>462  %3 = bitcast <16 x i1> %2 to i16463  ret i16 %3464}465 466define i8 @test_int_x86_avx10_vcmpbf16128(<8 x bfloat> %x1, <8 x bfloat> %x2) {467; CHECK-LABEL: test_int_x86_avx10_vcmpbf16128:468; CHECK:       # %bb.0:469; CHECK-NEXT:    vcmpunordbf16 %xmm1, %xmm0, %k0 # encoding: [0x62,0xf3,0x7f,0x08,0xc2,0xc1,0x03]470; CHECK-NEXT:    kmovd %k0, %eax # encoding: [0xc5,0xfb,0x93,0xc0]471; CHECK-NEXT:    # kill: def $al killed $al killed $eax472; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]473  %1 = fcmp uno <8 x bfloat> %x1, %x2474  %res = bitcast <8 x i1> %1 to i8475  ret i8 %res476}477 478define i8 @test_int_x86_avx10_vcmpbf16128_mask2(<8 x bfloat> %x1, <8 x bfloat> %x2) {479; CHECK-LABEL: test_int_x86_avx10_vcmpbf16128_mask2:480; CHECK:       # %bb.0:481; CHECK-NEXT:    vcmpeqbf16 %xmm1, %xmm0, %k0 # encoding: [0x62,0xf3,0x7f,0x08,0xc2,0xc1,0x00]482; CHECK-NEXT:    kmovd %k0, %eax # encoding: [0xc5,0xfb,0x93,0xc0]483; CHECK-NEXT:    andb $3, %al # encoding: [0x24,0x03]484; CHECK-NEXT:    # kill: def $al killed $al killed $eax485; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]486  %1 = fcmp oeq <8 x bfloat> %x1, %x2487  %2 = and <8 x i1> %1, <i1 true, i1 true, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false>488  %3 = bitcast <8 x i1> %2 to i8489  ret i8 %3490}491 492define <16 x bfloat> @test_sqrt_bf16_256(<16 x bfloat> %a0) {493; CHECK-LABEL: test_sqrt_bf16_256:494; CHECK:       # %bb.0:495; CHECK-NEXT:    vsqrtbf16 %ymm0, %ymm0 # encoding: [0x62,0xf5,0x7d,0x28,0x51,0xc0]496; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]497  %1 = tail call <16 x bfloat> @llvm.sqrt.v16bf16(<16 x bfloat> %a0)498  ret <16 x bfloat> %1499}500 501define <16 x bfloat> @test_mm256_mask_sqrt_pbh(<16 x bfloat> %__W, i16 %__U, <16 x bfloat> %__A) {502; X64-LABEL: test_mm256_mask_sqrt_pbh:503; X64:       # %bb.0: # %entry504; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]505; X64-NEXT:    vsqrtbf16 %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x7d,0x29,0x51,0xc1]506; X64-NEXT:    retq # encoding: [0xc3]507;508; X86-LABEL: test_mm256_mask_sqrt_pbh:509; X86:       # %bb.0: # %entry510; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]511; X86-NEXT:    vsqrtbf16 %ymm1, %ymm0 {%k1} # encoding: [0x62,0xf5,0x7d,0x29,0x51,0xc1]512; X86-NEXT:    retl # encoding: [0xc3]513entry:514  %0 = tail call <16 x bfloat> @llvm.sqrt.v16bf16(<16 x bfloat> %__A)515  %1 = bitcast i16 %__U to <16 x i1>516  %2 = select <16 x i1> %1, <16 x bfloat> %0, <16 x bfloat> %__W517  ret <16 x bfloat> %2518}519 520define <16 x bfloat> @test_mm256_maskz_sqrt_pbh(i16 %__U, <16 x bfloat>%__A) {521; X64-LABEL: test_mm256_maskz_sqrt_pbh:522; X64:       # %bb.0: # %entry523; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]524; X64-NEXT:    vsqrtbf16 %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xa9,0x51,0xc0]525; X64-NEXT:    retq # encoding: [0xc3]526;527; X86-LABEL: test_mm256_maskz_sqrt_pbh:528; X86:       # %bb.0: # %entry529; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]530; X86-NEXT:    vsqrtbf16 %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xa9,0x51,0xc0]531; X86-NEXT:    retl # encoding: [0xc3]532entry:533  %0 = tail call <16 x bfloat> @llvm.sqrt.v16bf16(<16 x bfloat> %__A)534  %1 = bitcast i16 %__U to <16 x i1>535  %2 = select <16 x i1> %1, <16 x bfloat> %0, <16 x bfloat> zeroinitializer536  ret <16 x bfloat> %2537}538 539define <8 x bfloat> @test_sqrt_bf16_128(<8 x bfloat> %a0) {540; CHECK-LABEL: test_sqrt_bf16_128:541; CHECK:       # %bb.0:542; CHECK-NEXT:    vsqrtbf16 %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7d,0x08,0x51,0xc0]543; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]544  %1 = tail call <8 x bfloat> @llvm.sqrt.v8bf16(<8 x bfloat> %a0)545  ret <8 x bfloat> %1546}547 548define <8 x bfloat> @test_mm_mask_sqrt_pbh(<8 x bfloat> %__W, i8 %__U, <8 x bfloat> %__A) {549; X64-LABEL: test_mm_mask_sqrt_pbh:550; X64:       # %bb.0: # %entry551; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]552; X64-NEXT:    vsqrtbf16 %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7d,0x09,0x51,0xc1]553; X64-NEXT:    retq # encoding: [0xc3]554;555; X86-LABEL: test_mm_mask_sqrt_pbh:556; X86:       # %bb.0: # %entry557; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]558; X86-NEXT:    vsqrtbf16 %xmm1, %xmm0 {%k1} # encoding: [0x62,0xf5,0x7d,0x09,0x51,0xc1]559; X86-NEXT:    retl # encoding: [0xc3]560entry:561  %0 = tail call <8 x bfloat> @llvm.sqrt.v8bf16(<8 x bfloat> %__A)562  %1 = bitcast i8 %__U to <8 x i1>563  %2 = select <8 x i1> %1, <8 x bfloat> %0, <8 x bfloat> %__W564  ret <8 x bfloat> %2565}566 567define <8 x bfloat> @test_mm_maskz_sqrt_pbh(i8 %__U, <8 x bfloat>%__A) {568; X64-LABEL: test_mm_maskz_sqrt_pbh:569; X64:       # %bb.0: # %entry570; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]571; X64-NEXT:    vsqrtbf16 %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0x89,0x51,0xc0]572; X64-NEXT:    retq # encoding: [0xc3]573;574; X86-LABEL: test_mm_maskz_sqrt_pbh:575; X86:       # %bb.0: # %entry576; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]577; X86-NEXT:    vsqrtbf16 %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0x89,0x51,0xc0]578; X86-NEXT:    retl # encoding: [0xc3]579entry:580  %0 = tail call <8 x bfloat> @llvm.sqrt.v8bf16(<8 x bfloat> %__A)581  %1 = bitcast i8 %__U to <8 x i1>582  %2 = select <8 x i1> %1, <8 x bfloat> %0, <8 x bfloat> zeroinitializer583  ret <8 x bfloat> %2584}585 586define <16 x bfloat> @test_mm256_fmaddne_pbh(<16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %__C) {587; CHECK-LABEL: test_mm256_fmaddne_pbh:588; CHECK:       # %bb.0: # %entry589; CHECK-NEXT:    vfmadd213bf16 %ymm2, %ymm1, %ymm0 # encoding: [0x62,0xf6,0x74,0x28,0xa8,0xc2]590; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]591entry:592  %0 = tail call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %__C)593  ret <16 x bfloat> %0594}595 596define <16 x bfloat> @test_mm256_mask_fmaddne_pbh(<16 x bfloat> %__A, i16 zeroext %__U, <16 x bfloat> %__B, <16 x bfloat> %__C) {597; X64-LABEL: test_mm256_mask_fmaddne_pbh:598; X64:       # %bb.0: # %entry599; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]600; X64-NEXT:    vfmadd132bf16 %ymm1, %ymm2, %ymm0 {%k1} # encoding: [0x62,0xf6,0x6c,0x29,0x98,0xc1]601; X64-NEXT:    retq # encoding: [0xc3]602;603; X86-LABEL: test_mm256_mask_fmaddne_pbh:604; X86:       # %bb.0: # %entry605; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]606; X86-NEXT:    vfmadd132bf16 %ymm1, %ymm2, %ymm0 {%k1} # encoding: [0x62,0xf6,0x6c,0x29,0x98,0xc1]607; X86-NEXT:    retl # encoding: [0xc3]608entry:609  %0 = tail call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %__C)610  %1 = bitcast i16 %__U to <16 x i1>611  %2 = select <16 x i1> %1, <16 x bfloat> %0, <16 x bfloat> %__A612  ret <16 x bfloat> %2613}614 615define <16 x bfloat> @test_mm256_mask3_fmaddne_pbh(<16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %__C, i16 zeroext %__U) {616; X64-LABEL: test_mm256_mask3_fmaddne_pbh:617; X64:       # %bb.0: # %entry618; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]619; X64-NEXT:    vfmadd231bf16 %ymm1, %ymm0, %ymm2 {%k1} # encoding: [0x62,0xf6,0x7c,0x29,0xb8,0xd1]620; X64-NEXT:    vmovaps %ymm2, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc2]621; X64-NEXT:    retq # encoding: [0xc3]622;623; X86-LABEL: test_mm256_mask3_fmaddne_pbh:624; X86:       # %bb.0: # %entry625; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]626; X86-NEXT:    vfmadd231bf16 %ymm1, %ymm0, %ymm2 {%k1} # encoding: [0x62,0xf6,0x7c,0x29,0xb8,0xd1]627; X86-NEXT:    vmovaps %ymm2, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc2]628; X86-NEXT:    retl # encoding: [0xc3]629entry:630  %0 = tail call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %__C)631  %1 = bitcast i16 %__U to <16 x i1>632  %2 = select <16 x i1> %1, <16 x bfloat> %0, <16 x bfloat> %__C633  ret <16 x bfloat> %2634}635 636define <16 x bfloat> @test_mm256_maskz_fmaddne_pbh(i16 zeroext %__U, <16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %__C) {637; X64-LABEL: test_mm256_maskz_fmaddne_pbh:638; X64:       # %bb.0: # %entry639; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]640; X64-NEXT:    vfmadd213bf16 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf6,0x74,0xa9,0xa8,0xc2]641; X64-NEXT:    retq # encoding: [0xc3]642;643; X86-LABEL: test_mm256_maskz_fmaddne_pbh:644; X86:       # %bb.0: # %entry645; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]646; X86-NEXT:    vfmadd213bf16 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf6,0x74,0xa9,0xa8,0xc2]647; X86-NEXT:    retl # encoding: [0xc3]648entry:649  %0 = tail call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %__C)650  %1 = bitcast i16 %__U to <16 x i1>651  %2 = select <16 x i1> %1, <16 x bfloat> %0, <16 x bfloat> zeroinitializer652  ret <16 x bfloat> %2653}654 655define <16 x bfloat> @test_mm256_fmsubne_pbh(<16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %__C) {656; CHECK-LABEL: test_mm256_fmsubne_pbh:657; CHECK:       # %bb.0: # %entry658; CHECK-NEXT:    vfmsub213bf16 %ymm2, %ymm1, %ymm0 # encoding: [0x62,0xf6,0x74,0x28,0xaa,0xc2]659; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]660entry:661  %fneg.i = fneg <16 x bfloat> %__C662  %0 = tail call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %fneg.i)663  ret <16 x bfloat> %0664}665 666define <16 x bfloat> @test_mm256_mask_fmsubne_pbh(<16 x bfloat> %__A, i16 zeroext %__U, <16 x bfloat> %__B, <16 x bfloat> %__C) {667; X64-LABEL: test_mm256_mask_fmsubne_pbh:668; X64:       # %bb.0: # %entry669; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]670; X64-NEXT:    vfmsub132bf16 %ymm1, %ymm2, %ymm0 {%k1} # encoding: [0x62,0xf6,0x6c,0x29,0x9a,0xc1]671; X64-NEXT:    retq # encoding: [0xc3]672;673; X86-LABEL: test_mm256_mask_fmsubne_pbh:674; X86:       # %bb.0: # %entry675; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]676; X86-NEXT:    vfmsub132bf16 %ymm1, %ymm2, %ymm0 {%k1} # encoding: [0x62,0xf6,0x6c,0x29,0x9a,0xc1]677; X86-NEXT:    retl # encoding: [0xc3]678entry:679  %fneg.i.i = fneg <16 x bfloat> %__C680  %0 = tail call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %fneg.i.i)681  %1 = bitcast i16 %__U to <16 x i1>682  %2 = select <16 x i1> %1, <16 x bfloat> %0, <16 x bfloat> %__A683  ret <16 x bfloat> %2684}685 686define <16 x bfloat> @test_mm256_mask3_fmsubne_pbh(<16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %__C, i16 zeroext %__U) {687; X64-LABEL: test_mm256_mask3_fmsubne_pbh:688; X64:       # %bb.0: # %entry689; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]690; X64-NEXT:    vfmsub231bf16 %ymm1, %ymm0, %ymm2 {%k1} # encoding: [0x62,0xf6,0x7c,0x29,0xba,0xd1]691; X64-NEXT:    vmovaps %ymm2, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc2]692; X64-NEXT:    retq # encoding: [0xc3]693;694; X86-LABEL: test_mm256_mask3_fmsubne_pbh:695; X86:       # %bb.0: # %entry696; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]697; X86-NEXT:    vfmsub231bf16 %ymm1, %ymm0, %ymm2 {%k1} # encoding: [0x62,0xf6,0x7c,0x29,0xba,0xd1]698; X86-NEXT:    vmovaps %ymm2, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc2]699; X86-NEXT:    retl # encoding: [0xc3]700entry:701  %fneg.i.i = fneg <16 x bfloat> %__C702  %0 = tail call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %fneg.i.i)703  %1 = bitcast i16 %__U to <16 x i1>704  %2 = select <16 x i1> %1, <16 x bfloat> %0, <16 x bfloat> %__C705  ret <16 x bfloat> %2706}707 708define <16 x bfloat> @test_mm256_maskz_fmsubne_pbh(i16 zeroext %__U, <16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %__C) {709; X64-LABEL: test_mm256_maskz_fmsubne_pbh:710; X64:       # %bb.0: # %entry711; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]712; X64-NEXT:    vfmsub213bf16 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf6,0x74,0xa9,0xaa,0xc2]713; X64-NEXT:    retq # encoding: [0xc3]714;715; X86-LABEL: test_mm256_maskz_fmsubne_pbh:716; X86:       # %bb.0: # %entry717; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]718; X86-NEXT:    vfmsub213bf16 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf6,0x74,0xa9,0xaa,0xc2]719; X86-NEXT:    retl # encoding: [0xc3]720entry:721  %fneg.i.i = fneg <16 x bfloat> %__C722  %0 = tail call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %fneg.i.i)723  %1 = bitcast i16 %__U to <16 x i1>724  %2 = select <16 x i1> %1, <16 x bfloat> %0, <16 x bfloat> zeroinitializer725  ret <16 x bfloat> %2726}727 728define <16 x bfloat> @test_mm256_fnmaddne_pbh(<16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %__C) {729; CHECK-LABEL: test_mm256_fnmaddne_pbh:730; CHECK:       # %bb.0: # %entry731; CHECK-NEXT:    vfnmadd213bf16 %ymm2, %ymm1, %ymm0 # encoding: [0x62,0xf6,0x74,0x28,0xac,0xc2]732; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]733entry:734  %fneg.i = fneg <16 x bfloat> %__B735  %0 = tail call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %__A, <16 x bfloat> %fneg.i, <16 x bfloat> %__C)736  ret <16 x bfloat> %0737}738 739define <16 x bfloat> @test_mm256_mask_fnmaddne_pbh(<16 x bfloat> %__A, i16 zeroext %__U, <16 x bfloat> %__B, <16 x bfloat> %__C) {740; X64-LABEL: test_mm256_mask_fnmaddne_pbh:741; X64:       # %bb.0: # %entry742; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]743; X64-NEXT:    vfnmadd132bf16 %ymm1, %ymm2, %ymm0 {%k1} # encoding: [0x62,0xf6,0x6c,0x29,0x9c,0xc1]744; X64-NEXT:    retq # encoding: [0xc3]745;746; X86-LABEL: test_mm256_mask_fnmaddne_pbh:747; X86:       # %bb.0: # %entry748; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]749; X86-NEXT:    vfnmadd132bf16 %ymm1, %ymm2, %ymm0 {%k1} # encoding: [0x62,0xf6,0x6c,0x29,0x9c,0xc1]750; X86-NEXT:    retl # encoding: [0xc3]751entry:752  %fneg.i.i = fneg <16 x bfloat> %__B753  %0 = tail call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %__A, <16 x bfloat> %fneg.i.i, <16 x bfloat> %__C)754  %1 = bitcast i16 %__U to <16 x i1>755  %2 = select <16 x i1> %1, <16 x bfloat> %0, <16 x bfloat> %__A756  ret <16 x bfloat> %2757}758 759define <16 x bfloat> @test_mm256_mask3_fnmaddne_pbh(<16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %__C, i16 zeroext %__U) {760; X64-LABEL: test_mm256_mask3_fnmaddne_pbh:761; X64:       # %bb.0: # %entry762; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]763; X64-NEXT:    vfnmadd231bf16 %ymm1, %ymm0, %ymm2 {%k1} # encoding: [0x62,0xf6,0x7c,0x29,0xbc,0xd1]764; X64-NEXT:    vmovaps %ymm2, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc2]765; X64-NEXT:    retq # encoding: [0xc3]766;767; X86-LABEL: test_mm256_mask3_fnmaddne_pbh:768; X86:       # %bb.0: # %entry769; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]770; X86-NEXT:    vfnmadd231bf16 %ymm1, %ymm0, %ymm2 {%k1} # encoding: [0x62,0xf6,0x7c,0x29,0xbc,0xd1]771; X86-NEXT:    vmovaps %ymm2, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc2]772; X86-NEXT:    retl # encoding: [0xc3]773entry:774  %fneg.i.i = fneg <16 x bfloat> %__B775  %0 = tail call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %__A, <16 x bfloat> %fneg.i.i, <16 x bfloat> %__C)776  %1 = bitcast i16 %__U to <16 x i1>777  %2 = select <16 x i1> %1, <16 x bfloat> %0, <16 x bfloat> %__C778  ret <16 x bfloat> %2779}780 781define <16 x bfloat> @test_mm256_maskz_fnmaddne_pbh(i16 zeroext %__U, <16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %__C) {782; X64-LABEL: test_mm256_maskz_fnmaddne_pbh:783; X64:       # %bb.0: # %entry784; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]785; X64-NEXT:    vfnmadd213bf16 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf6,0x74,0xa9,0xac,0xc2]786; X64-NEXT:    retq # encoding: [0xc3]787;788; X86-LABEL: test_mm256_maskz_fnmaddne_pbh:789; X86:       # %bb.0: # %entry790; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]791; X86-NEXT:    vfnmadd213bf16 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf6,0x74,0xa9,0xac,0xc2]792; X86-NEXT:    retl # encoding: [0xc3]793entry:794  %fneg.i.i = fneg <16 x bfloat> %__B795  %0 = tail call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %__A, <16 x bfloat> %fneg.i.i, <16 x bfloat> %__C)796  %1 = bitcast i16 %__U to <16 x i1>797  %2 = select <16 x i1> %1, <16 x bfloat> %0, <16 x bfloat> zeroinitializer798  ret <16 x bfloat> %2799}800 801define <16 x bfloat> @test_mm256_fnmsubne_pbh(<16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %__C) {802; CHECK-LABEL: test_mm256_fnmsubne_pbh:803; CHECK:       # %bb.0: # %entry804; CHECK-NEXT:    vfnmsub213bf16 %ymm2, %ymm1, %ymm0 # encoding: [0x62,0xf6,0x74,0x28,0xae,0xc2]805; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]806entry:807  %fneg.i = fneg <16 x bfloat> %__B808  %fneg1.i = fneg <16 x bfloat> %__C809  %0 = tail call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %__A, <16 x bfloat> %fneg.i, <16 x bfloat> %fneg1.i)810  ret <16 x bfloat> %0811}812 813define <16 x bfloat> @test_mm256_mask_fnmsubne_pbh(<16 x bfloat> %__A, i16 zeroext %__U, <16 x bfloat> %__B, <16 x bfloat> %__C) {814; X64-LABEL: test_mm256_mask_fnmsubne_pbh:815; X64:       # %bb.0: # %entry816; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]817; X64-NEXT:    vfnmsub132bf16 %ymm1, %ymm2, %ymm0 {%k1} # encoding: [0x62,0xf6,0x6c,0x29,0x9e,0xc1]818; X64-NEXT:    retq # encoding: [0xc3]819;820; X86-LABEL: test_mm256_mask_fnmsubne_pbh:821; X86:       # %bb.0: # %entry822; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]823; X86-NEXT:    vfnmsub132bf16 %ymm1, %ymm2, %ymm0 {%k1} # encoding: [0x62,0xf6,0x6c,0x29,0x9e,0xc1]824; X86-NEXT:    retl # encoding: [0xc3]825entry:826  %fneg.i.i = fneg <16 x bfloat> %__B827  %fneg1.i.i = fneg <16 x bfloat> %__C828  %0 = tail call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %__A, <16 x bfloat> %fneg.i.i, <16 x bfloat> %fneg1.i.i)829  %1 = bitcast i16 %__U to <16 x i1>830  %2 = select <16 x i1> %1, <16 x bfloat> %0, <16 x bfloat> %__A831  ret <16 x bfloat> %2832}833 834define <16 x bfloat> @test_mm256_mask3_fnmsubne_pbh(<16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %__C, i16 zeroext %__U) {835; X64-LABEL: test_mm256_mask3_fnmsubne_pbh:836; X64:       # %bb.0: # %entry837; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]838; X64-NEXT:    vfnmsub231bf16 %ymm1, %ymm0, %ymm2 {%k1} # encoding: [0x62,0xf6,0x7c,0x29,0xbe,0xd1]839; X64-NEXT:    vmovaps %ymm2, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc2]840; X64-NEXT:    retq # encoding: [0xc3]841;842; X86-LABEL: test_mm256_mask3_fnmsubne_pbh:843; X86:       # %bb.0: # %entry844; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]845; X86-NEXT:    vfnmsub231bf16 %ymm1, %ymm0, %ymm2 {%k1} # encoding: [0x62,0xf6,0x7c,0x29,0xbe,0xd1]846; X86-NEXT:    vmovaps %ymm2, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc2]847; X86-NEXT:    retl # encoding: [0xc3]848entry:849  %fneg.i.i = fneg <16 x bfloat> %__B850  %fneg1.i.i = fneg <16 x bfloat> %__C851  %0 = tail call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %__A, <16 x bfloat> %fneg.i.i, <16 x bfloat> %fneg1.i.i)852  %1 = bitcast i16 %__U to <16 x i1>853  %2 = select <16 x i1> %1, <16 x bfloat> %0, <16 x bfloat> %__C854  ret <16 x bfloat> %2855}856 857define <16 x bfloat> @test_mm256_maskz_fnmsubne_pbh(i16 zeroext %__U, <16 x bfloat> %__A, <16 x bfloat> %__B, <16 x bfloat> %__C) {858; X64-LABEL: test_mm256_maskz_fnmsubne_pbh:859; X64:       # %bb.0: # %entry860; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]861; X64-NEXT:    vfnmsub213bf16 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf6,0x74,0xa9,0xae,0xc2]862; X64-NEXT:    retq # encoding: [0xc3]863;864; X86-LABEL: test_mm256_maskz_fnmsubne_pbh:865; X86:       # %bb.0: # %entry866; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]867; X86-NEXT:    vfnmsub213bf16 %ymm2, %ymm1, %ymm0 {%k1} {z} # encoding: [0x62,0xf6,0x74,0xa9,0xae,0xc2]868; X86-NEXT:    retl # encoding: [0xc3]869entry:870  %fneg.i.i = fneg <16 x bfloat> %__B871  %fneg1.i.i = fneg <16 x bfloat> %__C872  %0 = tail call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %__A, <16 x bfloat> %fneg.i.i, <16 x bfloat> %fneg1.i.i)873  %1 = bitcast i16 %__U to <16 x i1>874  %2 = select <16 x i1> %1, <16 x bfloat> %0, <16 x bfloat> zeroinitializer875  ret <16 x bfloat> %2876}877 878define <8 x bfloat> @test_mm_fmaddne_pbh(<8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %__C) {879; CHECK-LABEL: test_mm_fmaddne_pbh:880; CHECK:       # %bb.0: # %entry881; CHECK-NEXT:    vfmadd213bf16 %xmm2, %xmm1, %xmm0 # encoding: [0x62,0xf6,0x74,0x08,0xa8,0xc2]882; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]883entry:884  %0 = tail call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %__C)885  ret <8 x bfloat> %0886}887 888define <8 x bfloat> @test_mm_mask_fmaddne_pbh(<8 x bfloat> %__A, i8 zeroext %__U, <8 x bfloat> %__B, <8 x bfloat> %__C) {889; X64-LABEL: test_mm_mask_fmaddne_pbh:890; X64:       # %bb.0: # %entry891; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]892; X64-NEXT:    vfmadd132bf16 %xmm1, %xmm2, %xmm0 {%k1} # encoding: [0x62,0xf6,0x6c,0x09,0x98,0xc1]893; X64-NEXT:    retq # encoding: [0xc3]894;895; X86-LABEL: test_mm_mask_fmaddne_pbh:896; X86:       # %bb.0: # %entry897; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]898; X86-NEXT:    vfmadd132bf16 %xmm1, %xmm2, %xmm0 {%k1} # encoding: [0x62,0xf6,0x6c,0x09,0x98,0xc1]899; X86-NEXT:    retl # encoding: [0xc3]900entry:901  %0 = tail call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %__C)902  %1 = bitcast i8 %__U to <8 x i1>903  %2 = select <8 x i1> %1, <8 x bfloat> %0, <8 x bfloat> %__A904  ret <8 x bfloat> %2905}906 907define <8 x bfloat> @test_mm_mask3_fmaddne_pbh(<8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %__C, i8 zeroext %__U) {908; X64-LABEL: test_mm_mask3_fmaddne_pbh:909; X64:       # %bb.0: # %entry910; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]911; X64-NEXT:    vfmadd231bf16 %xmm1, %xmm0, %xmm2 {%k1} # encoding: [0x62,0xf6,0x7c,0x09,0xb8,0xd1]912; X64-NEXT:    vmovaps %xmm2, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc2]913; X64-NEXT:    retq # encoding: [0xc3]914;915; X86-LABEL: test_mm_mask3_fmaddne_pbh:916; X86:       # %bb.0: # %entry917; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]918; X86-NEXT:    vfmadd231bf16 %xmm1, %xmm0, %xmm2 {%k1} # encoding: [0x62,0xf6,0x7c,0x09,0xb8,0xd1]919; X86-NEXT:    vmovaps %xmm2, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc2]920; X86-NEXT:    retl # encoding: [0xc3]921entry:922  %0 = tail call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %__C)923  %1 = bitcast i8 %__U to <8 x i1>924  %2 = select <8 x i1> %1, <8 x bfloat> %0, <8 x bfloat> %__C925  ret <8 x bfloat> %2926}927 928define <8 x bfloat> @test_mm_maskz_fmaddne_pbh(i8 zeroext %__U, <8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %__C) {929; X64-LABEL: test_mm_maskz_fmaddne_pbh:930; X64:       # %bb.0: # %entry931; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]932; X64-NEXT:    vfmadd213bf16 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf6,0x74,0x89,0xa8,0xc2]933; X64-NEXT:    retq # encoding: [0xc3]934;935; X86-LABEL: test_mm_maskz_fmaddne_pbh:936; X86:       # %bb.0: # %entry937; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]938; X86-NEXT:    vfmadd213bf16 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf6,0x74,0x89,0xa8,0xc2]939; X86-NEXT:    retl # encoding: [0xc3]940entry:941  %0 = tail call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %__C)942  %1 = bitcast i8 %__U to <8 x i1>943  %2 = select <8 x i1> %1, <8 x bfloat> %0, <8 x bfloat> zeroinitializer944  ret <8 x bfloat> %2945}946 947define <8 x bfloat> @test_mm_fmsubne_pbh(<8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %__C) {948; CHECK-LABEL: test_mm_fmsubne_pbh:949; CHECK:       # %bb.0: # %entry950; CHECK-NEXT:    vfmsub213bf16 %xmm2, %xmm1, %xmm0 # encoding: [0x62,0xf6,0x74,0x08,0xaa,0xc2]951; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]952entry:953  %fneg.i = fneg <8 x bfloat> %__C954  %0 = tail call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %fneg.i)955  ret <8 x bfloat> %0956}957 958define <8 x bfloat> @test_mm_mask_fmsubne_pbh(<8 x bfloat> %__A, i8 zeroext %__U, <8 x bfloat> %__B, <8 x bfloat> %__C) {959; X64-LABEL: test_mm_mask_fmsubne_pbh:960; X64:       # %bb.0: # %entry961; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]962; X64-NEXT:    vfmsub132bf16 %xmm1, %xmm2, %xmm0 {%k1} # encoding: [0x62,0xf6,0x6c,0x09,0x9a,0xc1]963; X64-NEXT:    retq # encoding: [0xc3]964;965; X86-LABEL: test_mm_mask_fmsubne_pbh:966; X86:       # %bb.0: # %entry967; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]968; X86-NEXT:    vfmsub132bf16 %xmm1, %xmm2, %xmm0 {%k1} # encoding: [0x62,0xf6,0x6c,0x09,0x9a,0xc1]969; X86-NEXT:    retl # encoding: [0xc3]970entry:971  %fneg.i.i = fneg <8 x bfloat> %__C972  %0 = tail call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %fneg.i.i)973  %1 = bitcast i8 %__U to <8 x i1>974  %2 = select <8 x i1> %1, <8 x bfloat> %0, <8 x bfloat> %__A975  ret <8 x bfloat> %2976}977 978define <8 x bfloat> @test_mm_mask3_fmsubne_pbh(<8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %__C, i8 zeroext %__U) {979; X64-LABEL: test_mm_mask3_fmsubne_pbh:980; X64:       # %bb.0: # %entry981; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]982; X64-NEXT:    vfmsub231bf16 %xmm1, %xmm0, %xmm2 {%k1} # encoding: [0x62,0xf6,0x7c,0x09,0xba,0xd1]983; X64-NEXT:    vmovaps %xmm2, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc2]984; X64-NEXT:    retq # encoding: [0xc3]985;986; X86-LABEL: test_mm_mask3_fmsubne_pbh:987; X86:       # %bb.0: # %entry988; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]989; X86-NEXT:    vfmsub231bf16 %xmm1, %xmm0, %xmm2 {%k1} # encoding: [0x62,0xf6,0x7c,0x09,0xba,0xd1]990; X86-NEXT:    vmovaps %xmm2, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc2]991; X86-NEXT:    retl # encoding: [0xc3]992entry:993  %fneg.i.i = fneg <8 x bfloat> %__C994  %0 = tail call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %fneg.i.i)995  %1 = bitcast i8 %__U to <8 x i1>996  %2 = select <8 x i1> %1, <8 x bfloat> %0, <8 x bfloat> %__C997  ret <8 x bfloat> %2998}999 1000define <8 x bfloat> @test_mm_maskz_fmsubne_pbh(i8 zeroext %__U, <8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %__C) {1001; X64-LABEL: test_mm_maskz_fmsubne_pbh:1002; X64:       # %bb.0: # %entry1003; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1004; X64-NEXT:    vfmsub213bf16 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf6,0x74,0x89,0xaa,0xc2]1005; X64-NEXT:    retq # encoding: [0xc3]1006;1007; X86-LABEL: test_mm_maskz_fmsubne_pbh:1008; X86:       # %bb.0: # %entry1009; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]1010; X86-NEXT:    vfmsub213bf16 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf6,0x74,0x89,0xaa,0xc2]1011; X86-NEXT:    retl # encoding: [0xc3]1012entry:1013  %fneg.i.i = fneg <8 x bfloat> %__C1014  %0 = tail call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %fneg.i.i)1015  %1 = bitcast i8 %__U to <8 x i1>1016  %2 = select <8 x i1> %1, <8 x bfloat> %0, <8 x bfloat> zeroinitializer1017  ret <8 x bfloat> %21018}1019 1020define <8 x bfloat> @test_mm_fnmaddne_pbh(<8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %__C) {1021; CHECK-LABEL: test_mm_fnmaddne_pbh:1022; CHECK:       # %bb.0: # %entry1023; CHECK-NEXT:    vfnmadd213bf16 %xmm2, %xmm1, %xmm0 # encoding: [0x62,0xf6,0x74,0x08,0xac,0xc2]1024; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1025entry:1026  %fneg.i = fneg <8 x bfloat> %__B1027  %0 = tail call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %__A, <8 x bfloat> %fneg.i, <8 x bfloat> %__C)1028  ret <8 x bfloat> %01029}1030 1031define <8 x bfloat> @test_mm_mask_fnmaddne_pbh(<8 x bfloat> %__A, i8 zeroext %__U, <8 x bfloat> %__B, <8 x bfloat> %__C) {1032; X64-LABEL: test_mm_mask_fnmaddne_pbh:1033; X64:       # %bb.0: # %entry1034; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1035; X64-NEXT:    vfnmadd132bf16 %xmm1, %xmm2, %xmm0 {%k1} # encoding: [0x62,0xf6,0x6c,0x09,0x9c,0xc1]1036; X64-NEXT:    retq # encoding: [0xc3]1037;1038; X86-LABEL: test_mm_mask_fnmaddne_pbh:1039; X86:       # %bb.0: # %entry1040; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]1041; X86-NEXT:    vfnmadd132bf16 %xmm1, %xmm2, %xmm0 {%k1} # encoding: [0x62,0xf6,0x6c,0x09,0x9c,0xc1]1042; X86-NEXT:    retl # encoding: [0xc3]1043entry:1044  %fneg.i.i = fneg <8 x bfloat> %__B1045  %0 = tail call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %__A, <8 x bfloat> %fneg.i.i, <8 x bfloat> %__C)1046  %1 = bitcast i8 %__U to <8 x i1>1047  %2 = select <8 x i1> %1, <8 x bfloat> %0, <8 x bfloat> %__A1048  ret <8 x bfloat> %21049}1050 1051define <8 x bfloat> @test_mm_mask3_fnmaddne_pbh(<8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %__C, i8 zeroext %__U) {1052; X64-LABEL: test_mm_mask3_fnmaddne_pbh:1053; X64:       # %bb.0: # %entry1054; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1055; X64-NEXT:    vfnmadd231bf16 %xmm1, %xmm0, %xmm2 {%k1} # encoding: [0x62,0xf6,0x7c,0x09,0xbc,0xd1]1056; X64-NEXT:    vmovaps %xmm2, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc2]1057; X64-NEXT:    retq # encoding: [0xc3]1058;1059; X86-LABEL: test_mm_mask3_fnmaddne_pbh:1060; X86:       # %bb.0: # %entry1061; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]1062; X86-NEXT:    vfnmadd231bf16 %xmm1, %xmm0, %xmm2 {%k1} # encoding: [0x62,0xf6,0x7c,0x09,0xbc,0xd1]1063; X86-NEXT:    vmovaps %xmm2, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc2]1064; X86-NEXT:    retl # encoding: [0xc3]1065entry:1066  %fneg.i.i = fneg <8 x bfloat> %__B1067  %0 = tail call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %__A, <8 x bfloat> %fneg.i.i, <8 x bfloat> %__C)1068  %1 = bitcast i8 %__U to <8 x i1>1069  %2 = select <8 x i1> %1, <8 x bfloat> %0, <8 x bfloat> %__C1070  ret <8 x bfloat> %21071}1072 1073define <8 x bfloat> @test_mm_maskz_fnmaddne_pbh(i8 zeroext %__U, <8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %__C) {1074; X64-LABEL: test_mm_maskz_fnmaddne_pbh:1075; X64:       # %bb.0: # %entry1076; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1077; X64-NEXT:    vfnmadd213bf16 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf6,0x74,0x89,0xac,0xc2]1078; X64-NEXT:    retq # encoding: [0xc3]1079;1080; X86-LABEL: test_mm_maskz_fnmaddne_pbh:1081; X86:       # %bb.0: # %entry1082; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]1083; X86-NEXT:    vfnmadd213bf16 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf6,0x74,0x89,0xac,0xc2]1084; X86-NEXT:    retl # encoding: [0xc3]1085entry:1086  %fneg.i.i = fneg <8 x bfloat> %__B1087  %0 = tail call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %__A, <8 x bfloat> %fneg.i.i, <8 x bfloat> %__C)1088  %1 = bitcast i8 %__U to <8 x i1>1089  %2 = select <8 x i1> %1, <8 x bfloat> %0, <8 x bfloat> zeroinitializer1090  ret <8 x bfloat> %21091}1092 1093define <8 x bfloat> @test_mm_fnmsubne_pbh(<8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %__C) {1094; CHECK-LABEL: test_mm_fnmsubne_pbh:1095; CHECK:       # %bb.0: # %entry1096; CHECK-NEXT:    vfnmsub213bf16 %xmm2, %xmm1, %xmm0 # encoding: [0x62,0xf6,0x74,0x08,0xae,0xc2]1097; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1098entry:1099  %fneg.i = fneg <8 x bfloat> %__B1100  %fneg1.i = fneg <8 x bfloat> %__C1101  %0 = tail call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %__A, <8 x bfloat> %fneg.i, <8 x bfloat> %fneg1.i)1102  ret <8 x bfloat> %01103}1104 1105define <8 x bfloat> @test_mm_mask_fnmsubne_pbh(<8 x bfloat> %__A, i8 zeroext %__U, <8 x bfloat> %__B, <8 x bfloat> %__C) {1106; X64-LABEL: test_mm_mask_fnmsubne_pbh:1107; X64:       # %bb.0: # %entry1108; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1109; X64-NEXT:    vfnmsub132bf16 %xmm1, %xmm2, %xmm0 {%k1} # encoding: [0x62,0xf6,0x6c,0x09,0x9e,0xc1]1110; X64-NEXT:    retq # encoding: [0xc3]1111;1112; X86-LABEL: test_mm_mask_fnmsubne_pbh:1113; X86:       # %bb.0: # %entry1114; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]1115; X86-NEXT:    vfnmsub132bf16 %xmm1, %xmm2, %xmm0 {%k1} # encoding: [0x62,0xf6,0x6c,0x09,0x9e,0xc1]1116; X86-NEXT:    retl # encoding: [0xc3]1117entry:1118  %fneg.i.i = fneg <8 x bfloat> %__B1119  %fneg1.i.i = fneg <8 x bfloat> %__C1120  %0 = tail call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %__A, <8 x bfloat> %fneg.i.i, <8 x bfloat> %fneg1.i.i)1121  %1 = bitcast i8 %__U to <8 x i1>1122  %2 = select <8 x i1> %1, <8 x bfloat> %0, <8 x bfloat> %__A1123  ret <8 x bfloat> %21124}1125 1126define <8 x bfloat> @test_mm_mask3_fnmsubne_pbh(<8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %__C, i8 zeroext %__U) {1127; X64-LABEL: test_mm_mask3_fnmsubne_pbh:1128; X64:       # %bb.0: # %entry1129; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1130; X64-NEXT:    vfnmsub231bf16 %xmm1, %xmm0, %xmm2 {%k1} # encoding: [0x62,0xf6,0x7c,0x09,0xbe,0xd1]1131; X64-NEXT:    vmovaps %xmm2, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc2]1132; X64-NEXT:    retq # encoding: [0xc3]1133;1134; X86-LABEL: test_mm_mask3_fnmsubne_pbh:1135; X86:       # %bb.0: # %entry1136; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]1137; X86-NEXT:    vfnmsub231bf16 %xmm1, %xmm0, %xmm2 {%k1} # encoding: [0x62,0xf6,0x7c,0x09,0xbe,0xd1]1138; X86-NEXT:    vmovaps %xmm2, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc2]1139; X86-NEXT:    retl # encoding: [0xc3]1140entry:1141  %fneg.i.i = fneg <8 x bfloat> %__B1142  %fneg1.i.i = fneg <8 x bfloat> %__C1143  %0 = tail call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %__A, <8 x bfloat> %fneg.i.i, <8 x bfloat> %fneg1.i.i)1144  %1 = bitcast i8 %__U to <8 x i1>1145  %2 = select <8 x i1> %1, <8 x bfloat> %0, <8 x bfloat> %__C1146  ret <8 x bfloat> %21147}1148 1149define <8 x bfloat> @test_mm_maskz_fnmsubne_pbh(i8 zeroext %__U, <8 x bfloat> %__A, <8 x bfloat> %__B, <8 x bfloat> %__C) {1150; X64-LABEL: test_mm_maskz_fnmsubne_pbh:1151; X64:       # %bb.0: # %entry1152; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]1153; X64-NEXT:    vfnmsub213bf16 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf6,0x74,0x89,0xae,0xc2]1154; X64-NEXT:    retq # encoding: [0xc3]1155;1156; X86-LABEL: test_mm_maskz_fnmsubne_pbh:1157; X86:       # %bb.0: # %entry1158; X86-NEXT:    kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]1159; X86-NEXT:    vfnmsub213bf16 %xmm2, %xmm1, %xmm0 {%k1} {z} # encoding: [0x62,0xf6,0x74,0x89,0xae,0xc2]1160; X86-NEXT:    retl # encoding: [0xc3]1161entry:1162  %fneg.i.i = fneg <8 x bfloat> %__B1163  %fneg1.i.i = fneg <8 x bfloat> %__C1164  %0 = tail call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %__A, <8 x bfloat> %fneg.i.i, <8 x bfloat> %fneg1.i.i)1165  %1 = bitcast i8 %__U to <8 x i1>1166  %2 = select <8 x i1> %1, <8 x bfloat> %0, <8 x bfloat> zeroinitializer1167  ret <8 x bfloat> %21168}1169 1170define <32 x bfloat> @addv(<32 x bfloat> %a, <32 x bfloat> %b) nounwind {1171; CHECK-LABEL: addv:1172; CHECK:       # %bb.0:1173; CHECK-NEXT:    vaddbf16 %zmm1, %zmm0, %zmm0 # encoding: [0x62,0xf5,0x7d,0x48,0x58,0xc1]1174; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]1175  %add = fadd <32 x bfloat> %a, %b1176  ret <32 x bfloat> %add1177}1178