brintos

brintos / llvm-project-archived public Read only

0
0
Text · 50.9 KiB · 78dc44a Raw
1364 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s --mtriple=x86_64-unknown-unknown -mattr=avx512fp16,avx512vl | FileCheck %s3 4declare half @llvm.fma.f16(half, half, half)5declare <8 x half> @llvm.fma.v8f16(<8 x half>, <8 x half>, <8 x half>)6declare <16 x half> @llvm.fma.v16f16(<16 x half>, <16 x half>, <16 x half>)7declare <32 x half> @llvm.fma.v32f16(<32 x half>, <32 x half>, <32 x half>)8 9define half @fma_123_f16(half %x, half %y, half %z) {10; CHECK-LABEL: fma_123_f16:11; CHECK:       # %bb.0:12; CHECK-NEXT:    vfmadd213sh %xmm2, %xmm1, %xmm013; CHECK-NEXT:    retq14  %a = call half @llvm.fma.f16(half %x, half %y, half %z)15  ret half %a16}17 18define half @fma_213_f16(half %x, half %y, half %z) {19; CHECK-LABEL: fma_213_f16:20; CHECK:       # %bb.0:21; CHECK-NEXT:    vfmadd213sh %xmm2, %xmm1, %xmm022; CHECK-NEXT:    retq23  %a = call half @llvm.fma.f16(half %y, half %x, half %z)24  ret half %a25}26 27define half @fma_231_f16(half %x, half %y, half %z) {28; CHECK-LABEL: fma_231_f16:29; CHECK:       # %bb.0:30; CHECK-NEXT:    vfmadd231sh %xmm1, %xmm2, %xmm031; CHECK-NEXT:    retq32  %a = call half @llvm.fma.f16(half %y, half %z, half %x)33  ret half %a34}35 36define half @fma_321_f16(half %x, half %y, half %z) {37; CHECK-LABEL: fma_321_f16:38; CHECK:       # %bb.0:39; CHECK-NEXT:    vfmadd231sh %xmm1, %xmm2, %xmm040; CHECK-NEXT:    retq41  %a = call half @llvm.fma.f16(half %z, half %y, half %x)42  ret half %a43}44 45define half @fma_132_f16(half %x, half %y, half %z) {46; CHECK-LABEL: fma_132_f16:47; CHECK:       # %bb.0:48; CHECK-NEXT:    vfmadd213sh %xmm1, %xmm2, %xmm049; CHECK-NEXT:    retq50  %a = call half @llvm.fma.f16(half %x, half %z, half %y)51  ret half %a52}53 54define half @fma_312_f16(half %x, half %y, half %z) {55; CHECK-LABEL: fma_312_f16:56; CHECK:       # %bb.0:57; CHECK-NEXT:    vfmadd213sh %xmm1, %xmm2, %xmm058; CHECK-NEXT:    retq59  %a = call half @llvm.fma.f16(half %z, half %x, half %y)60  ret half %a61}62 63define half @fma_load_123_f16(half %x, half %y, ptr %zp) {64; CHECK-LABEL: fma_load_123_f16:65; CHECK:       # %bb.0:66; CHECK-NEXT:    vfmadd213sh (%rdi), %xmm1, %xmm067; CHECK-NEXT:    retq68  %z = load half, ptr %zp69  %a = call half @llvm.fma.f16(half %x, half %y, half %z)70  ret half %a71}72 73define half @fma_load_213_f16(half %x, half %y, ptr %zp) {74; CHECK-LABEL: fma_load_213_f16:75; CHECK:       # %bb.0:76; CHECK-NEXT:    vfmadd213sh (%rdi), %xmm1, %xmm077; CHECK-NEXT:    retq78  %z = load half, ptr %zp79  %a = call half @llvm.fma.f16(half %y, half %x, half %z)80  ret half %a81}82 83define half @fma_load_231_f16(half %x, half %y, ptr %zp) {84; CHECK-LABEL: fma_load_231_f16:85; CHECK:       # %bb.0:86; CHECK-NEXT:    vfmadd231sh (%rdi), %xmm1, %xmm087; CHECK-NEXT:    retq88  %z = load half, ptr %zp89  %a = call half @llvm.fma.f16(half %y, half %z, half %x)90  ret half %a91}92 93define half @fma_load_321_f16(half %x, half %y, ptr %zp) {94; CHECK-LABEL: fma_load_321_f16:95; CHECK:       # %bb.0:96; CHECK-NEXT:    vfmadd231sh (%rdi), %xmm1, %xmm097; CHECK-NEXT:    retq98  %z = load half, ptr %zp99  %a = call half @llvm.fma.f16(half %z, half %y, half %x)100  ret half %a101}102 103define half @fma_load_132_f16(half %x, half %y, ptr %zp) {104; CHECK-LABEL: fma_load_132_f16:105; CHECK:       # %bb.0:106; CHECK-NEXT:    vfmadd132sh (%rdi), %xmm1, %xmm0107; CHECK-NEXT:    retq108  %z = load half, ptr %zp109  %a = call half @llvm.fma.f16(half %x, half %z, half %y)110  ret half %a111}112 113define half @fma_load_312_f16(half %x, half %y, ptr %zp) {114; CHECK-LABEL: fma_load_312_f16:115; CHECK:       # %bb.0:116; CHECK-NEXT:    vfmadd132sh (%rdi), %xmm1, %xmm0117; CHECK-NEXT:    retq118  %z = load half, ptr %zp119  %a = call half @llvm.fma.f16(half %z, half %x, half %y)120  ret half %a121}122 123define <8 x half> @fma_123_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z) {124; CHECK-LABEL: fma_123_v8f16:125; CHECK:       # %bb.0:126; CHECK-NEXT:    vfmadd213ph %xmm2, %xmm1, %xmm0127; CHECK-NEXT:    retq128  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z)129  ret <8 x half> %a130}131 132define <8 x half> @fma_213_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z) {133; CHECK-LABEL: fma_213_v8f16:134; CHECK:       # %bb.0:135; CHECK-NEXT:    vfmadd213ph %xmm2, %xmm1, %xmm0136; CHECK-NEXT:    retq137  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %y, <8 x half> %x, <8 x half> %z)138  ret <8 x half> %a139}140 141define <8 x half> @fma_231_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z) {142; CHECK-LABEL: fma_231_v8f16:143; CHECK:       # %bb.0:144; CHECK-NEXT:    vfmadd231ph %xmm1, %xmm2, %xmm0145; CHECK-NEXT:    retq146  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %y, <8 x half> %z, <8 x half> %x)147  ret <8 x half> %a148}149 150define <8 x half> @fma_321_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z) {151; CHECK-LABEL: fma_321_v8f16:152; CHECK:       # %bb.0:153; CHECK-NEXT:    vfmadd231ph %xmm1, %xmm2, %xmm0154; CHECK-NEXT:    retq155  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %z, <8 x half> %y, <8 x half> %x)156  ret <8 x half> %a157}158 159define <8 x half> @fma_132_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z) {160; CHECK-LABEL: fma_132_v8f16:161; CHECK:       # %bb.0:162; CHECK-NEXT:    vfmadd213ph %xmm1, %xmm2, %xmm0163; CHECK-NEXT:    retq164  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %x, <8 x half> %z, <8 x half> %y)165  ret <8 x half> %a166}167 168define <8 x half> @fma_312_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z) {169; CHECK-LABEL: fma_312_v8f16:170; CHECK:       # %bb.0:171; CHECK-NEXT:    vfmadd213ph %xmm1, %xmm2, %xmm0172; CHECK-NEXT:    retq173  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %z, <8 x half> %x, <8 x half> %y)174  ret <8 x half> %a175}176 177define <8 x half> @fma_load_123_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp) {178; CHECK-LABEL: fma_load_123_v8f16:179; CHECK:       # %bb.0:180; CHECK-NEXT:    vfmadd213ph (%rdi), %xmm1, %xmm0181; CHECK-NEXT:    retq182  %z = load <8 x half>, ptr %zp183  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z)184  ret <8 x half> %a185}186 187define <8 x half> @fma_load_213_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp) {188; CHECK-LABEL: fma_load_213_v8f16:189; CHECK:       # %bb.0:190; CHECK-NEXT:    vfmadd213ph (%rdi), %xmm1, %xmm0191; CHECK-NEXT:    retq192  %z = load <8 x half>, ptr %zp193  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %y, <8 x half> %x, <8 x half> %z)194  ret <8 x half> %a195}196 197define <8 x half> @fma_load_231_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp) {198; CHECK-LABEL: fma_load_231_v8f16:199; CHECK:       # %bb.0:200; CHECK-NEXT:    vfmadd231ph (%rdi), %xmm1, %xmm0201; CHECK-NEXT:    retq202  %z = load <8 x half>, ptr %zp203  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %y, <8 x half> %z, <8 x half> %x)204  ret <8 x half> %a205}206 207define <8 x half> @fma_load_321_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp) {208; CHECK-LABEL: fma_load_321_v8f16:209; CHECK:       # %bb.0:210; CHECK-NEXT:    vfmadd231ph (%rdi), %xmm1, %xmm0211; CHECK-NEXT:    retq212  %z = load <8 x half>, ptr %zp213  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %z, <8 x half> %y, <8 x half> %x)214  ret <8 x half> %a215}216 217define <8 x half> @fma_load_132_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp) {218; CHECK-LABEL: fma_load_132_v8f16:219; CHECK:       # %bb.0:220; CHECK-NEXT:    vfmadd132ph (%rdi), %xmm1, %xmm0221; CHECK-NEXT:    retq222  %z = load <8 x half>, ptr %zp223  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %x, <8 x half> %z, <8 x half> %y)224  ret <8 x half> %a225}226 227define <8 x half> @fma_load_312_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp) {228; CHECK-LABEL: fma_load_312_v8f16:229; CHECK:       # %bb.0:230; CHECK-NEXT:    vfmadd132ph (%rdi), %xmm1, %xmm0231; CHECK-NEXT:    retq232  %z = load <8 x half>, ptr %zp233  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %z, <8 x half> %x, <8 x half> %y)234  ret <8 x half> %a235}236 237define <8 x half> @fma_mask_123_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z, i8 %mask) {238; CHECK-LABEL: fma_mask_123_v8f16:239; CHECK:       # %bb.0:240; CHECK-NEXT:    kmovd %edi, %k1241; CHECK-NEXT:    vfmadd132ph %xmm1, %xmm2, %xmm0 {%k1}242; CHECK-NEXT:    retq243  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z)244  %b = bitcast i8 %mask to <8 x i1>245  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> %x246  ret <8 x half> %c247}248 249define <8 x half> @fma_mask_213_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z, i8 %mask) {250; CHECK-LABEL: fma_mask_213_v8f16:251; CHECK:       # %bb.0:252; CHECK-NEXT:    kmovd %edi, %k1253; CHECK-NEXT:    vfmadd213ph %xmm2, %xmm1, %xmm0 {%k1}254; CHECK-NEXT:    retq255  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %y, <8 x half> %x, <8 x half> %z)256  %b = bitcast i8 %mask to <8 x i1>257  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> %x258  ret <8 x half> %c259}260 261define <8 x half> @fma_mask_231_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z, i8 %mask) {262; CHECK-LABEL: fma_mask_231_v8f16:263; CHECK:       # %bb.0:264; CHECK-NEXT:    kmovd %edi, %k1265; CHECK-NEXT:    vfmadd231ph %xmm2, %xmm1, %xmm0 {%k1}266; CHECK-NEXT:    retq267  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %y, <8 x half> %z, <8 x half> %x)268  %b = bitcast i8 %mask to <8 x i1>269  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> %x270  ret <8 x half> %c271}272 273define <8 x half> @fma_mask_321_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z, i8 %mask) {274; CHECK-LABEL: fma_mask_321_v8f16:275; CHECK:       # %bb.0:276; CHECK-NEXT:    kmovd %edi, %k1277; CHECK-NEXT:    vfmadd231ph %xmm1, %xmm2, %xmm0 {%k1}278; CHECK-NEXT:    retq279  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %z, <8 x half> %y, <8 x half> %x)280  %b = bitcast i8 %mask to <8 x i1>281  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> %x282  ret <8 x half> %c283}284 285define <8 x half> @fma_mask_132_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z, i8 %mask) {286; CHECK-LABEL: fma_mask_132_v8f16:287; CHECK:       # %bb.0:288; CHECK-NEXT:    kmovd %edi, %k1289; CHECK-NEXT:    vfmadd132ph %xmm2, %xmm1, %xmm0 {%k1}290; CHECK-NEXT:    retq291  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %x, <8 x half> %z, <8 x half> %y)292  %b = bitcast i8 %mask to <8 x i1>293  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> %x294  ret <8 x half> %c295}296 297define <8 x half> @fma_mask_312_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z, i8 %mask) {298; CHECK-LABEL: fma_mask_312_v8f16:299; CHECK:       # %bb.0:300; CHECK-NEXT:    kmovd %edi, %k1301; CHECK-NEXT:    vfmadd213ph %xmm1, %xmm2, %xmm0 {%k1}302; CHECK-NEXT:    retq303  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %z, <8 x half> %x, <8 x half> %y)304  %b = bitcast i8 %mask to <8 x i1>305  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> %x306  ret <8 x half> %c307}308 309define <8 x half> @fma_maskz_123_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z, i8 %mask) {310; CHECK-LABEL: fma_maskz_123_v8f16:311; CHECK:       # %bb.0:312; CHECK-NEXT:    kmovd %edi, %k1313; CHECK-NEXT:    vfmadd213ph %xmm2, %xmm1, %xmm0 {%k1} {z}314; CHECK-NEXT:    retq315  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z)316  %b = bitcast i8 %mask to <8 x i1>317  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> zeroinitializer318  ret <8 x half> %c319}320 321define <8 x half> @fma_maskz_213_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z, i8 %mask) {322; CHECK-LABEL: fma_maskz_213_v8f16:323; CHECK:       # %bb.0:324; CHECK-NEXT:    kmovd %edi, %k1325; CHECK-NEXT:    vfmadd213ph %xmm2, %xmm1, %xmm0 {%k1} {z}326; CHECK-NEXT:    retq327  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %y, <8 x half> %x, <8 x half> %z)328  %b = bitcast i8 %mask to <8 x i1>329  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> zeroinitializer330  ret <8 x half> %c331}332 333define <8 x half> @fma_maskz_231_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z, i8 %mask) {334; CHECK-LABEL: fma_maskz_231_v8f16:335; CHECK:       # %bb.0:336; CHECK-NEXT:    kmovd %edi, %k1337; CHECK-NEXT:    vfmadd231ph %xmm1, %xmm2, %xmm0 {%k1} {z}338; CHECK-NEXT:    retq339  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %y, <8 x half> %z, <8 x half> %x)340  %b = bitcast i8 %mask to <8 x i1>341  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> zeroinitializer342  ret <8 x half> %c343}344 345define <8 x half> @fma_maskz_321_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z, i8 %mask) {346; CHECK-LABEL: fma_maskz_321_v8f16:347; CHECK:       # %bb.0:348; CHECK-NEXT:    kmovd %edi, %k1349; CHECK-NEXT:    vfmadd231ph %xmm1, %xmm2, %xmm0 {%k1} {z}350; CHECK-NEXT:    retq351  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %z, <8 x half> %y, <8 x half> %x)352  %b = bitcast i8 %mask to <8 x i1>353  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> zeroinitializer354  ret <8 x half> %c355}356 357define <8 x half> @fma_maskz_132_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z, i8 %mask) {358; CHECK-LABEL: fma_maskz_132_v8f16:359; CHECK:       # %bb.0:360; CHECK-NEXT:    kmovd %edi, %k1361; CHECK-NEXT:    vfmadd213ph %xmm1, %xmm2, %xmm0 {%k1} {z}362; CHECK-NEXT:    retq363  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %x, <8 x half> %z, <8 x half> %y)364  %b = bitcast i8 %mask to <8 x i1>365  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> zeroinitializer366  ret <8 x half> %c367}368 369define <8 x half> @fma_maskz_312_v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z, i8 %mask) {370; CHECK-LABEL: fma_maskz_312_v8f16:371; CHECK:       # %bb.0:372; CHECK-NEXT:    kmovd %edi, %k1373; CHECK-NEXT:    vfmadd213ph %xmm1, %xmm2, %xmm0 {%k1} {z}374; CHECK-NEXT:    retq375  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %z, <8 x half> %x, <8 x half> %y)376  %b = bitcast i8 %mask to <8 x i1>377  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> zeroinitializer378  ret <8 x half> %c379}380 381define <8 x half> @fma_mask_load_123_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp, i8 %mask) {382; CHECK-LABEL: fma_mask_load_123_v8f16:383; CHECK:       # %bb.0:384; CHECK-NEXT:    kmovd %esi, %k1385; CHECK-NEXT:    vfmadd213ph (%rdi), %xmm1, %xmm0 {%k1}386; CHECK-NEXT:    retq387  %z = load <8 x half>, ptr %zp388  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z)389  %b = bitcast i8 %mask to <8 x i1>390  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> %x391  ret <8 x half> %c392}393 394define <8 x half> @fma_mask_load_213_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp, i8 %mask) {395; CHECK-LABEL: fma_mask_load_213_v8f16:396; CHECK:       # %bb.0:397; CHECK-NEXT:    kmovd %esi, %k1398; CHECK-NEXT:    vfmadd213ph (%rdi), %xmm1, %xmm0 {%k1}399; CHECK-NEXT:    retq400  %z = load <8 x half>, ptr %zp401  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %y, <8 x half> %x, <8 x half> %z)402  %b = bitcast i8 %mask to <8 x i1>403  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> %x404  ret <8 x half> %c405}406 407define <8 x half> @fma_mask_load_231_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp, i8 %mask) {408; CHECK-LABEL: fma_mask_load_231_v8f16:409; CHECK:       # %bb.0:410; CHECK-NEXT:    kmovd %esi, %k1411; CHECK-NEXT:    vfmadd231ph (%rdi), %xmm1, %xmm0 {%k1}412; CHECK-NEXT:    retq413  %z = load <8 x half>, ptr %zp414  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %y, <8 x half> %z, <8 x half> %x)415  %b = bitcast i8 %mask to <8 x i1>416  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> %x417  ret <8 x half> %c418}419 420define <8 x half> @fma_mask_load_321_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp, i8 %mask) {421; CHECK-LABEL: fma_mask_load_321_v8f16:422; CHECK:       # %bb.0:423; CHECK-NEXT:    kmovd %esi, %k1424; CHECK-NEXT:    vfmadd231ph (%rdi), %xmm1, %xmm0 {%k1}425; CHECK-NEXT:    retq426  %z = load <8 x half>, ptr %zp427  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %z, <8 x half> %y, <8 x half> %x)428  %b = bitcast i8 %mask to <8 x i1>429  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> %x430  ret <8 x half> %c431}432 433define <8 x half> @fma_mask_load_132_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp, i8 %mask) {434; CHECK-LABEL: fma_mask_load_132_v8f16:435; CHECK:       # %bb.0:436; CHECK-NEXT:    kmovd %esi, %k1437; CHECK-NEXT:    vfmadd132ph (%rdi), %xmm1, %xmm0 {%k1}438; CHECK-NEXT:    retq439  %z = load <8 x half>, ptr %zp440  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %x, <8 x half> %z, <8 x half> %y)441  %b = bitcast i8 %mask to <8 x i1>442  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> %x443  ret <8 x half> %c444}445 446define <8 x half> @fma_mask_load_312_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp, i8 %mask) {447; CHECK-LABEL: fma_mask_load_312_v8f16:448; CHECK:       # %bb.0:449; CHECK-NEXT:    kmovd %esi, %k1450; CHECK-NEXT:    vfmadd132ph (%rdi), %xmm1, %xmm0 {%k1}451; CHECK-NEXT:    retq452  %z = load <8 x half>, ptr %zp453  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %z, <8 x half> %x, <8 x half> %y)454  %b = bitcast i8 %mask to <8 x i1>455  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> %x456  ret <8 x half> %c457}458 459define <8 x half> @fma_maskz_load_123_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp, i8 %mask) {460; CHECK-LABEL: fma_maskz_load_123_v8f16:461; CHECK:       # %bb.0:462; CHECK-NEXT:    kmovd %esi, %k1463; CHECK-NEXT:    vfmadd213ph (%rdi), %xmm1, %xmm0 {%k1} {z}464; CHECK-NEXT:    retq465  %z = load <8 x half>, ptr %zp466  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %x, <8 x half> %y, <8 x half> %z)467  %b = bitcast i8 %mask to <8 x i1>468  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> zeroinitializer469  ret <8 x half> %c470}471 472define <8 x half> @fma_maskz_load_213_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp, i8 %mask) {473; CHECK-LABEL: fma_maskz_load_213_v8f16:474; CHECK:       # %bb.0:475; CHECK-NEXT:    kmovd %esi, %k1476; CHECK-NEXT:    vfmadd213ph (%rdi), %xmm1, %xmm0 {%k1} {z}477; CHECK-NEXT:    retq478  %z = load <8 x half>, ptr %zp479  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %y, <8 x half> %x, <8 x half> %z)480  %b = bitcast i8 %mask to <8 x i1>481  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> zeroinitializer482  ret <8 x half> %c483}484 485define <8 x half> @fma_maskz_load_231_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp, i8 %mask) {486; CHECK-LABEL: fma_maskz_load_231_v8f16:487; CHECK:       # %bb.0:488; CHECK-NEXT:    kmovd %esi, %k1489; CHECK-NEXT:    vfmadd231ph (%rdi), %xmm1, %xmm0 {%k1} {z}490; CHECK-NEXT:    retq491  %z = load <8 x half>, ptr %zp492  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %y, <8 x half> %z, <8 x half> %x)493  %b = bitcast i8 %mask to <8 x i1>494  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> zeroinitializer495  ret <8 x half> %c496}497 498define <8 x half> @fma_maskz_load_321_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp, i8 %mask) {499; CHECK-LABEL: fma_maskz_load_321_v8f16:500; CHECK:       # %bb.0:501; CHECK-NEXT:    kmovd %esi, %k1502; CHECK-NEXT:    vfmadd231ph (%rdi), %xmm1, %xmm0 {%k1} {z}503; CHECK-NEXT:    retq504  %z = load <8 x half>, ptr %zp505  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %z, <8 x half> %y, <8 x half> %x)506  %b = bitcast i8 %mask to <8 x i1>507  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> zeroinitializer508  ret <8 x half> %c509}510 511define <8 x half> @fma_maskz_load_132_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp, i8 %mask) {512; CHECK-LABEL: fma_maskz_load_132_v8f16:513; CHECK:       # %bb.0:514; CHECK-NEXT:    kmovd %esi, %k1515; CHECK-NEXT:    vfmadd132ph (%rdi), %xmm1, %xmm0 {%k1} {z}516; CHECK-NEXT:    retq517  %z = load <8 x half>, ptr %zp518  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %x, <8 x half> %z, <8 x half> %y)519  %b = bitcast i8 %mask to <8 x i1>520  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> zeroinitializer521  ret <8 x half> %c522}523 524define <8 x half> @fma_maskz_load_312_v8f16(<8 x half> %x, <8 x half> %y, ptr %zp, i8 %mask) {525; CHECK-LABEL: fma_maskz_load_312_v8f16:526; CHECK:       # %bb.0:527; CHECK-NEXT:    kmovd %esi, %k1528; CHECK-NEXT:    vfmadd132ph (%rdi), %xmm1, %xmm0 {%k1} {z}529; CHECK-NEXT:    retq530  %z = load <8 x half>, ptr %zp531  %a = call <8 x half> @llvm.fma.v8f16(<8 x half> %z, <8 x half> %x, <8 x half> %y)532  %b = bitcast i8 %mask to <8 x i1>533  %c = select <8 x i1> %b, <8 x half> %a, <8 x half> zeroinitializer534  ret <8 x half> %c535}536 537define <16 x half> @fma_123_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z) {538; CHECK-LABEL: fma_123_v16f16:539; CHECK:       # %bb.0:540; CHECK-NEXT:    vfmadd213ph %ymm2, %ymm1, %ymm0541; CHECK-NEXT:    retq542  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z)543  ret <16 x half> %a544}545 546define <16 x half> @fma_213_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z) {547; CHECK-LABEL: fma_213_v16f16:548; CHECK:       # %bb.0:549; CHECK-NEXT:    vfmadd213ph %ymm2, %ymm1, %ymm0550; CHECK-NEXT:    retq551  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %y, <16 x half> %x, <16 x half> %z)552  ret <16 x half> %a553}554 555define <16 x half> @fma_231_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z) {556; CHECK-LABEL: fma_231_v16f16:557; CHECK:       # %bb.0:558; CHECK-NEXT:    vfmadd231ph %ymm1, %ymm2, %ymm0559; CHECK-NEXT:    retq560  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %y, <16 x half> %z, <16 x half> %x)561  ret <16 x half> %a562}563 564define <16 x half> @fma_321_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z) {565; CHECK-LABEL: fma_321_v16f16:566; CHECK:       # %bb.0:567; CHECK-NEXT:    vfmadd231ph %ymm1, %ymm2, %ymm0568; CHECK-NEXT:    retq569  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %z, <16 x half> %y, <16 x half> %x)570  ret <16 x half> %a571}572 573define <16 x half> @fma_132_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z) {574; CHECK-LABEL: fma_132_v16f16:575; CHECK:       # %bb.0:576; CHECK-NEXT:    vfmadd213ph %ymm1, %ymm2, %ymm0577; CHECK-NEXT:    retq578  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %x, <16 x half> %z, <16 x half> %y)579  ret <16 x half> %a580}581 582define <16 x half> @fma_312_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z) {583; CHECK-LABEL: fma_312_v16f16:584; CHECK:       # %bb.0:585; CHECK-NEXT:    vfmadd213ph %ymm1, %ymm2, %ymm0586; CHECK-NEXT:    retq587  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %z, <16 x half> %x, <16 x half> %y)588  ret <16 x half> %a589}590 591define <16 x half> @fma_load_123_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp) {592; CHECK-LABEL: fma_load_123_v16f16:593; CHECK:       # %bb.0:594; CHECK-NEXT:    vfmadd213ph (%rdi), %ymm1, %ymm0595; CHECK-NEXT:    retq596  %z = load <16 x half>, ptr %zp597  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z)598  ret <16 x half> %a599}600 601define <16 x half> @fma_load_213_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp) {602; CHECK-LABEL: fma_load_213_v16f16:603; CHECK:       # %bb.0:604; CHECK-NEXT:    vfmadd213ph (%rdi), %ymm1, %ymm0605; CHECK-NEXT:    retq606  %z = load <16 x half>, ptr %zp607  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %y, <16 x half> %x, <16 x half> %z)608  ret <16 x half> %a609}610 611define <16 x half> @fma_load_231_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp) {612; CHECK-LABEL: fma_load_231_v16f16:613; CHECK:       # %bb.0:614; CHECK-NEXT:    vfmadd231ph (%rdi), %ymm1, %ymm0615; CHECK-NEXT:    retq616  %z = load <16 x half>, ptr %zp617  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %y, <16 x half> %z, <16 x half> %x)618  ret <16 x half> %a619}620 621define <16 x half> @fma_load_321_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp) {622; CHECK-LABEL: fma_load_321_v16f16:623; CHECK:       # %bb.0:624; CHECK-NEXT:    vfmadd231ph (%rdi), %ymm1, %ymm0625; CHECK-NEXT:    retq626  %z = load <16 x half>, ptr %zp627  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %z, <16 x half> %y, <16 x half> %x)628  ret <16 x half> %a629}630 631define <16 x half> @fma_load_132_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp) {632; CHECK-LABEL: fma_load_132_v16f16:633; CHECK:       # %bb.0:634; CHECK-NEXT:    vfmadd132ph (%rdi), %ymm1, %ymm0635; CHECK-NEXT:    retq636  %z = load <16 x half>, ptr %zp637  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %x, <16 x half> %z, <16 x half> %y)638  ret <16 x half> %a639}640 641define <16 x half> @fma_load_312_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp) {642; CHECK-LABEL: fma_load_312_v16f16:643; CHECK:       # %bb.0:644; CHECK-NEXT:    vfmadd132ph (%rdi), %ymm1, %ymm0645; CHECK-NEXT:    retq646  %z = load <16 x half>, ptr %zp647  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %z, <16 x half> %x, <16 x half> %y)648  ret <16 x half> %a649}650 651define <16 x half> @fma_mask_123_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z, i16 %mask) {652; CHECK-LABEL: fma_mask_123_v16f16:653; CHECK:       # %bb.0:654; CHECK-NEXT:    kmovd %edi, %k1655; CHECK-NEXT:    vfmadd132ph %ymm1, %ymm2, %ymm0 {%k1}656; CHECK-NEXT:    retq657  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z)658  %b = bitcast i16 %mask to <16 x i1>659  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> %x660  ret <16 x half> %c661}662 663define <16 x half> @fma_mask_213_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z, i16 %mask) {664; CHECK-LABEL: fma_mask_213_v16f16:665; CHECK:       # %bb.0:666; CHECK-NEXT:    kmovd %edi, %k1667; CHECK-NEXT:    vfmadd213ph %ymm2, %ymm1, %ymm0 {%k1}668; CHECK-NEXT:    retq669  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %y, <16 x half> %x, <16 x half> %z)670  %b = bitcast i16 %mask to <16 x i1>671  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> %x672  ret <16 x half> %c673}674 675define <16 x half> @fma_mask_231_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z, i16 %mask) {676; CHECK-LABEL: fma_mask_231_v16f16:677; CHECK:       # %bb.0:678; CHECK-NEXT:    kmovd %edi, %k1679; CHECK-NEXT:    vfmadd231ph %ymm2, %ymm1, %ymm0 {%k1}680; CHECK-NEXT:    retq681  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %y, <16 x half> %z, <16 x half> %x)682  %b = bitcast i16 %mask to <16 x i1>683  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> %x684  ret <16 x half> %c685}686 687define <16 x half> @fma_mask_321_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z, i16 %mask) {688; CHECK-LABEL: fma_mask_321_v16f16:689; CHECK:       # %bb.0:690; CHECK-NEXT:    kmovd %edi, %k1691; CHECK-NEXT:    vfmadd231ph %ymm1, %ymm2, %ymm0 {%k1}692; CHECK-NEXT:    retq693  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %z, <16 x half> %y, <16 x half> %x)694  %b = bitcast i16 %mask to <16 x i1>695  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> %x696  ret <16 x half> %c697}698 699define <16 x half> @fma_mask_132_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z, i16 %mask) {700; CHECK-LABEL: fma_mask_132_v16f16:701; CHECK:       # %bb.0:702; CHECK-NEXT:    kmovd %edi, %k1703; CHECK-NEXT:    vfmadd132ph %ymm2, %ymm1, %ymm0 {%k1}704; CHECK-NEXT:    retq705  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %x, <16 x half> %z, <16 x half> %y)706  %b = bitcast i16 %mask to <16 x i1>707  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> %x708  ret <16 x half> %c709}710 711define <16 x half> @fma_mask_312_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z, i16 %mask) {712; CHECK-LABEL: fma_mask_312_v16f16:713; CHECK:       # %bb.0:714; CHECK-NEXT:    kmovd %edi, %k1715; CHECK-NEXT:    vfmadd213ph %ymm1, %ymm2, %ymm0 {%k1}716; CHECK-NEXT:    retq717  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %z, <16 x half> %x, <16 x half> %y)718  %b = bitcast i16 %mask to <16 x i1>719  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> %x720  ret <16 x half> %c721}722 723define <16 x half> @fma_maskz_123_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z, i16 %mask) {724; CHECK-LABEL: fma_maskz_123_v16f16:725; CHECK:       # %bb.0:726; CHECK-NEXT:    kmovd %edi, %k1727; CHECK-NEXT:    vfmadd213ph %ymm2, %ymm1, %ymm0 {%k1} {z}728; CHECK-NEXT:    retq729  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z)730  %b = bitcast i16 %mask to <16 x i1>731  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> zeroinitializer732  ret <16 x half> %c733}734 735define <16 x half> @fma_maskz_213_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z, i16 %mask) {736; CHECK-LABEL: fma_maskz_213_v16f16:737; CHECK:       # %bb.0:738; CHECK-NEXT:    kmovd %edi, %k1739; CHECK-NEXT:    vfmadd213ph %ymm2, %ymm1, %ymm0 {%k1} {z}740; CHECK-NEXT:    retq741  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %y, <16 x half> %x, <16 x half> %z)742  %b = bitcast i16 %mask to <16 x i1>743  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> zeroinitializer744  ret <16 x half> %c745}746 747define <16 x half> @fma_maskz_231_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z, i16 %mask) {748; CHECK-LABEL: fma_maskz_231_v16f16:749; CHECK:       # %bb.0:750; CHECK-NEXT:    kmovd %edi, %k1751; CHECK-NEXT:    vfmadd231ph %ymm1, %ymm2, %ymm0 {%k1} {z}752; CHECK-NEXT:    retq753  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %y, <16 x half> %z, <16 x half> %x)754  %b = bitcast i16 %mask to <16 x i1>755  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> zeroinitializer756  ret <16 x half> %c757}758 759define <16 x half> @fma_maskz_321_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z, i16 %mask) {760; CHECK-LABEL: fma_maskz_321_v16f16:761; CHECK:       # %bb.0:762; CHECK-NEXT:    kmovd %edi, %k1763; CHECK-NEXT:    vfmadd231ph %ymm1, %ymm2, %ymm0 {%k1} {z}764; CHECK-NEXT:    retq765  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %z, <16 x half> %y, <16 x half> %x)766  %b = bitcast i16 %mask to <16 x i1>767  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> zeroinitializer768  ret <16 x half> %c769}770 771define <16 x half> @fma_maskz_132_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z, i16 %mask) {772; CHECK-LABEL: fma_maskz_132_v16f16:773; CHECK:       # %bb.0:774; CHECK-NEXT:    kmovd %edi, %k1775; CHECK-NEXT:    vfmadd213ph %ymm1, %ymm2, %ymm0 {%k1} {z}776; CHECK-NEXT:    retq777  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %x, <16 x half> %z, <16 x half> %y)778  %b = bitcast i16 %mask to <16 x i1>779  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> zeroinitializer780  ret <16 x half> %c781}782 783define <16 x half> @fma_maskz_312_v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z, i16 %mask) {784; CHECK-LABEL: fma_maskz_312_v16f16:785; CHECK:       # %bb.0:786; CHECK-NEXT:    kmovd %edi, %k1787; CHECK-NEXT:    vfmadd213ph %ymm1, %ymm2, %ymm0 {%k1} {z}788; CHECK-NEXT:    retq789  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %z, <16 x half> %x, <16 x half> %y)790  %b = bitcast i16 %mask to <16 x i1>791  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> zeroinitializer792  ret <16 x half> %c793}794 795define <16 x half> @fma_mask_load_123_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp, i16 %mask) {796; CHECK-LABEL: fma_mask_load_123_v16f16:797; CHECK:       # %bb.0:798; CHECK-NEXT:    kmovd %esi, %k1799; CHECK-NEXT:    vfmadd213ph (%rdi), %ymm1, %ymm0 {%k1}800; CHECK-NEXT:    retq801  %z = load <16 x half>, ptr %zp802  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z)803  %b = bitcast i16 %mask to <16 x i1>804  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> %x805  ret <16 x half> %c806}807 808define <16 x half> @fma_mask_load_213_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp, i16 %mask) {809; CHECK-LABEL: fma_mask_load_213_v16f16:810; CHECK:       # %bb.0:811; CHECK-NEXT:    kmovd %esi, %k1812; CHECK-NEXT:    vfmadd213ph (%rdi), %ymm1, %ymm0 {%k1}813; CHECK-NEXT:    retq814  %z = load <16 x half>, ptr %zp815  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %y, <16 x half> %x, <16 x half> %z)816  %b = bitcast i16 %mask to <16 x i1>817  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> %x818  ret <16 x half> %c819}820 821define <16 x half> @fma_mask_load_231_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp, i16 %mask) {822; CHECK-LABEL: fma_mask_load_231_v16f16:823; CHECK:       # %bb.0:824; CHECK-NEXT:    kmovd %esi, %k1825; CHECK-NEXT:    vfmadd231ph (%rdi), %ymm1, %ymm0 {%k1}826; CHECK-NEXT:    retq827  %z = load <16 x half>, ptr %zp828  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %y, <16 x half> %z, <16 x half> %x)829  %b = bitcast i16 %mask to <16 x i1>830  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> %x831  ret <16 x half> %c832}833 834define <16 x half> @fma_mask_load_321_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp, i16 %mask) {835; CHECK-LABEL: fma_mask_load_321_v16f16:836; CHECK:       # %bb.0:837; CHECK-NEXT:    kmovd %esi, %k1838; CHECK-NEXT:    vfmadd231ph (%rdi), %ymm1, %ymm0 {%k1}839; CHECK-NEXT:    retq840  %z = load <16 x half>, ptr %zp841  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %z, <16 x half> %y, <16 x half> %x)842  %b = bitcast i16 %mask to <16 x i1>843  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> %x844  ret <16 x half> %c845}846 847define <16 x half> @fma_mask_load_132_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp, i16 %mask) {848; CHECK-LABEL: fma_mask_load_132_v16f16:849; CHECK:       # %bb.0:850; CHECK-NEXT:    kmovd %esi, %k1851; CHECK-NEXT:    vfmadd132ph (%rdi), %ymm1, %ymm0 {%k1}852; CHECK-NEXT:    retq853  %z = load <16 x half>, ptr %zp854  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %x, <16 x half> %z, <16 x half> %y)855  %b = bitcast i16 %mask to <16 x i1>856  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> %x857  ret <16 x half> %c858}859 860define <16 x half> @fma_mask_load_312_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp, i16 %mask) {861; CHECK-LABEL: fma_mask_load_312_v16f16:862; CHECK:       # %bb.0:863; CHECK-NEXT:    kmovd %esi, %k1864; CHECK-NEXT:    vfmadd132ph (%rdi), %ymm1, %ymm0 {%k1}865; CHECK-NEXT:    retq866  %z = load <16 x half>, ptr %zp867  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %z, <16 x half> %x, <16 x half> %y)868  %b = bitcast i16 %mask to <16 x i1>869  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> %x870  ret <16 x half> %c871}872 873define <16 x half> @fma_maskz_load_123_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp, i16 %mask) {874; CHECK-LABEL: fma_maskz_load_123_v16f16:875; CHECK:       # %bb.0:876; CHECK-NEXT:    kmovd %esi, %k1877; CHECK-NEXT:    vfmadd213ph (%rdi), %ymm1, %ymm0 {%k1} {z}878; CHECK-NEXT:    retq879  %z = load <16 x half>, ptr %zp880  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %x, <16 x half> %y, <16 x half> %z)881  %b = bitcast i16 %mask to <16 x i1>882  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> zeroinitializer883  ret <16 x half> %c884}885 886define <16 x half> @fma_maskz_load_213_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp, i16 %mask) {887; CHECK-LABEL: fma_maskz_load_213_v16f16:888; CHECK:       # %bb.0:889; CHECK-NEXT:    kmovd %esi, %k1890; CHECK-NEXT:    vfmadd213ph (%rdi), %ymm1, %ymm0 {%k1} {z}891; CHECK-NEXT:    retq892  %z = load <16 x half>, ptr %zp893  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %y, <16 x half> %x, <16 x half> %z)894  %b = bitcast i16 %mask to <16 x i1>895  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> zeroinitializer896  ret <16 x half> %c897}898 899define <16 x half> @fma_maskz_load_231_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp, i16 %mask) {900; CHECK-LABEL: fma_maskz_load_231_v16f16:901; CHECK:       # %bb.0:902; CHECK-NEXT:    kmovd %esi, %k1903; CHECK-NEXT:    vfmadd231ph (%rdi), %ymm1, %ymm0 {%k1} {z}904; CHECK-NEXT:    retq905  %z = load <16 x half>, ptr %zp906  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %y, <16 x half> %z, <16 x half> %x)907  %b = bitcast i16 %mask to <16 x i1>908  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> zeroinitializer909  ret <16 x half> %c910}911 912define <16 x half> @fma_maskz_load_321_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp, i16 %mask) {913; CHECK-LABEL: fma_maskz_load_321_v16f16:914; CHECK:       # %bb.0:915; CHECK-NEXT:    kmovd %esi, %k1916; CHECK-NEXT:    vfmadd231ph (%rdi), %ymm1, %ymm0 {%k1} {z}917; CHECK-NEXT:    retq918  %z = load <16 x half>, ptr %zp919  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %z, <16 x half> %y, <16 x half> %x)920  %b = bitcast i16 %mask to <16 x i1>921  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> zeroinitializer922  ret <16 x half> %c923}924 925define <16 x half> @fma_maskz_load_132_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp, i16 %mask) {926; CHECK-LABEL: fma_maskz_load_132_v16f16:927; CHECK:       # %bb.0:928; CHECK-NEXT:    kmovd %esi, %k1929; CHECK-NEXT:    vfmadd132ph (%rdi), %ymm1, %ymm0 {%k1} {z}930; CHECK-NEXT:    retq931  %z = load <16 x half>, ptr %zp932  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %x, <16 x half> %z, <16 x half> %y)933  %b = bitcast i16 %mask to <16 x i1>934  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> zeroinitializer935  ret <16 x half> %c936}937 938define <16 x half> @fma_maskz_load_312_v16f16(<16 x half> %x, <16 x half> %y, ptr %zp, i16 %mask) {939; CHECK-LABEL: fma_maskz_load_312_v16f16:940; CHECK:       # %bb.0:941; CHECK-NEXT:    kmovd %esi, %k1942; CHECK-NEXT:    vfmadd132ph (%rdi), %ymm1, %ymm0 {%k1} {z}943; CHECK-NEXT:    retq944  %z = load <16 x half>, ptr %zp945  %a = call <16 x half> @llvm.fma.v16f16(<16 x half> %z, <16 x half> %x, <16 x half> %y)946  %b = bitcast i16 %mask to <16 x i1>947  %c = select <16 x i1> %b, <16 x half> %a, <16 x half> zeroinitializer948  ret <16 x half> %c949}950 951define <32 x half> @fma_123_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z) {952; CHECK-LABEL: fma_123_v32f16:953; CHECK:       # %bb.0:954; CHECK-NEXT:    vfmadd213ph %zmm2, %zmm1, %zmm0955; CHECK-NEXT:    retq956  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z)957  ret <32 x half> %a958}959 960define <32 x half> @fma_213_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z) {961; CHECK-LABEL: fma_213_v32f16:962; CHECK:       # %bb.0:963; CHECK-NEXT:    vfmadd213ph %zmm2, %zmm1, %zmm0964; CHECK-NEXT:    retq965  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %y, <32 x half> %x, <32 x half> %z)966  ret <32 x half> %a967}968 969define <32 x half> @fma_231_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z) {970; CHECK-LABEL: fma_231_v32f16:971; CHECK:       # %bb.0:972; CHECK-NEXT:    vfmadd231ph %zmm1, %zmm2, %zmm0973; CHECK-NEXT:    retq974  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %y, <32 x half> %z, <32 x half> %x)975  ret <32 x half> %a976}977 978define <32 x half> @fma_321_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z) {979; CHECK-LABEL: fma_321_v32f16:980; CHECK:       # %bb.0:981; CHECK-NEXT:    vfmadd231ph %zmm1, %zmm2, %zmm0982; CHECK-NEXT:    retq983  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %z, <32 x half> %y, <32 x half> %x)984  ret <32 x half> %a985}986 987define <32 x half> @fma_132_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z) {988; CHECK-LABEL: fma_132_v32f16:989; CHECK:       # %bb.0:990; CHECK-NEXT:    vfmadd213ph %zmm1, %zmm2, %zmm0991; CHECK-NEXT:    retq992  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %x, <32 x half> %z, <32 x half> %y)993  ret <32 x half> %a994}995 996define <32 x half> @fma_312_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z) {997; CHECK-LABEL: fma_312_v32f16:998; CHECK:       # %bb.0:999; CHECK-NEXT:    vfmadd213ph %zmm1, %zmm2, %zmm01000; CHECK-NEXT:    retq1001  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %z, <32 x half> %x, <32 x half> %y)1002  ret <32 x half> %a1003}1004 1005define <32 x half> @fma_load_123_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp) {1006; CHECK-LABEL: fma_load_123_v32f16:1007; CHECK:       # %bb.0:1008; CHECK-NEXT:    vfmadd213ph (%rdi), %zmm1, %zmm01009; CHECK-NEXT:    retq1010  %z = load <32 x half>, ptr %zp1011  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z)1012  ret <32 x half> %a1013}1014 1015define <32 x half> @fma_load_213_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp) {1016; CHECK-LABEL: fma_load_213_v32f16:1017; CHECK:       # %bb.0:1018; CHECK-NEXT:    vfmadd213ph (%rdi), %zmm1, %zmm01019; CHECK-NEXT:    retq1020  %z = load <32 x half>, ptr %zp1021  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %y, <32 x half> %x, <32 x half> %z)1022  ret <32 x half> %a1023}1024 1025define <32 x half> @fma_load_231_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp) {1026; CHECK-LABEL: fma_load_231_v32f16:1027; CHECK:       # %bb.0:1028; CHECK-NEXT:    vfmadd231ph (%rdi), %zmm1, %zmm01029; CHECK-NEXT:    retq1030  %z = load <32 x half>, ptr %zp1031  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %y, <32 x half> %z, <32 x half> %x)1032  ret <32 x half> %a1033}1034 1035define <32 x half> @fma_load_321_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp) {1036; CHECK-LABEL: fma_load_321_v32f16:1037; CHECK:       # %bb.0:1038; CHECK-NEXT:    vfmadd231ph (%rdi), %zmm1, %zmm01039; CHECK-NEXT:    retq1040  %z = load <32 x half>, ptr %zp1041  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %z, <32 x half> %y, <32 x half> %x)1042  ret <32 x half> %a1043}1044 1045define <32 x half> @fma_load_132_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp) {1046; CHECK-LABEL: fma_load_132_v32f16:1047; CHECK:       # %bb.0:1048; CHECK-NEXT:    vfmadd132ph (%rdi), %zmm1, %zmm01049; CHECK-NEXT:    retq1050  %z = load <32 x half>, ptr %zp1051  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %x, <32 x half> %z, <32 x half> %y)1052  ret <32 x half> %a1053}1054 1055define <32 x half> @fma_load_312_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp) {1056; CHECK-LABEL: fma_load_312_v32f16:1057; CHECK:       # %bb.0:1058; CHECK-NEXT:    vfmadd132ph (%rdi), %zmm1, %zmm01059; CHECK-NEXT:    retq1060  %z = load <32 x half>, ptr %zp1061  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %z, <32 x half> %x, <32 x half> %y)1062  ret <32 x half> %a1063}1064 1065define <32 x half> @fma_mask_123_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z, i32 %mask) {1066; CHECK-LABEL: fma_mask_123_v32f16:1067; CHECK:       # %bb.0:1068; CHECK-NEXT:    kmovd %edi, %k11069; CHECK-NEXT:    vfmadd132ph %zmm1, %zmm2, %zmm0 {%k1}1070; CHECK-NEXT:    retq1071  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z)1072  %b = bitcast i32 %mask to <32 x i1>1073  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> %x1074  ret <32 x half> %c1075}1076 1077define <32 x half> @fma_mask_213_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z, i32 %mask) {1078; CHECK-LABEL: fma_mask_213_v32f16:1079; CHECK:       # %bb.0:1080; CHECK-NEXT:    kmovd %edi, %k11081; CHECK-NEXT:    vfmadd213ph %zmm2, %zmm1, %zmm0 {%k1}1082; CHECK-NEXT:    retq1083  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %y, <32 x half> %x, <32 x half> %z)1084  %b = bitcast i32 %mask to <32 x i1>1085  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> %x1086  ret <32 x half> %c1087}1088 1089define <32 x half> @fma_mask_231_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z, i32 %mask) {1090; CHECK-LABEL: fma_mask_231_v32f16:1091; CHECK:       # %bb.0:1092; CHECK-NEXT:    kmovd %edi, %k11093; CHECK-NEXT:    vfmadd231ph %zmm2, %zmm1, %zmm0 {%k1}1094; CHECK-NEXT:    retq1095  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %y, <32 x half> %z, <32 x half> %x)1096  %b = bitcast i32 %mask to <32 x i1>1097  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> %x1098  ret <32 x half> %c1099}1100 1101define <32 x half> @fma_mask_321_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z, i32 %mask) {1102; CHECK-LABEL: fma_mask_321_v32f16:1103; CHECK:       # %bb.0:1104; CHECK-NEXT:    kmovd %edi, %k11105; CHECK-NEXT:    vfmadd231ph %zmm1, %zmm2, %zmm0 {%k1}1106; CHECK-NEXT:    retq1107  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %z, <32 x half> %y, <32 x half> %x)1108  %b = bitcast i32 %mask to <32 x i1>1109  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> %x1110  ret <32 x half> %c1111}1112 1113define <32 x half> @fma_mask_132_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z, i32 %mask) {1114; CHECK-LABEL: fma_mask_132_v32f16:1115; CHECK:       # %bb.0:1116; CHECK-NEXT:    kmovd %edi, %k11117; CHECK-NEXT:    vfmadd132ph %zmm2, %zmm1, %zmm0 {%k1}1118; CHECK-NEXT:    retq1119  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %x, <32 x half> %z, <32 x half> %y)1120  %b = bitcast i32 %mask to <32 x i1>1121  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> %x1122  ret <32 x half> %c1123}1124 1125define <32 x half> @fma_mask_312_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z, i32 %mask) {1126; CHECK-LABEL: fma_mask_312_v32f16:1127; CHECK:       # %bb.0:1128; CHECK-NEXT:    kmovd %edi, %k11129; CHECK-NEXT:    vfmadd213ph %zmm1, %zmm2, %zmm0 {%k1}1130; CHECK-NEXT:    retq1131  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %z, <32 x half> %x, <32 x half> %y)1132  %b = bitcast i32 %mask to <32 x i1>1133  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> %x1134  ret <32 x half> %c1135}1136 1137define <32 x half> @fma_maskz_123_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z, i32 %mask) {1138; CHECK-LABEL: fma_maskz_123_v32f16:1139; CHECK:       # %bb.0:1140; CHECK-NEXT:    kmovd %edi, %k11141; CHECK-NEXT:    vfmadd213ph %zmm2, %zmm1, %zmm0 {%k1} {z}1142; CHECK-NEXT:    retq1143  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z)1144  %b = bitcast i32 %mask to <32 x i1>1145  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> zeroinitializer1146  ret <32 x half> %c1147}1148 1149define <32 x half> @fma_maskz_213_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z, i32 %mask) {1150; CHECK-LABEL: fma_maskz_213_v32f16:1151; CHECK:       # %bb.0:1152; CHECK-NEXT:    kmovd %edi, %k11153; CHECK-NEXT:    vfmadd213ph %zmm2, %zmm1, %zmm0 {%k1} {z}1154; CHECK-NEXT:    retq1155  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %y, <32 x half> %x, <32 x half> %z)1156  %b = bitcast i32 %mask to <32 x i1>1157  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> zeroinitializer1158  ret <32 x half> %c1159}1160 1161define <32 x half> @fma_maskz_231_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z, i32 %mask) {1162; CHECK-LABEL: fma_maskz_231_v32f16:1163; CHECK:       # %bb.0:1164; CHECK-NEXT:    kmovd %edi, %k11165; CHECK-NEXT:    vfmadd231ph %zmm1, %zmm2, %zmm0 {%k1} {z}1166; CHECK-NEXT:    retq1167  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %y, <32 x half> %z, <32 x half> %x)1168  %b = bitcast i32 %mask to <32 x i1>1169  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> zeroinitializer1170  ret <32 x half> %c1171}1172 1173define <32 x half> @fma_maskz_321_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z, i32 %mask) {1174; CHECK-LABEL: fma_maskz_321_v32f16:1175; CHECK:       # %bb.0:1176; CHECK-NEXT:    kmovd %edi, %k11177; CHECK-NEXT:    vfmadd231ph %zmm1, %zmm2, %zmm0 {%k1} {z}1178; CHECK-NEXT:    retq1179  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %z, <32 x half> %y, <32 x half> %x)1180  %b = bitcast i32 %mask to <32 x i1>1181  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> zeroinitializer1182  ret <32 x half> %c1183}1184 1185define <32 x half> @fma_maskz_132_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z, i32 %mask) {1186; CHECK-LABEL: fma_maskz_132_v32f16:1187; CHECK:       # %bb.0:1188; CHECK-NEXT:    kmovd %edi, %k11189; CHECK-NEXT:    vfmadd213ph %zmm1, %zmm2, %zmm0 {%k1} {z}1190; CHECK-NEXT:    retq1191  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %x, <32 x half> %z, <32 x half> %y)1192  %b = bitcast i32 %mask to <32 x i1>1193  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> zeroinitializer1194  ret <32 x half> %c1195}1196 1197define <32 x half> @fma_maskz_312_v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z, i32 %mask) {1198; CHECK-LABEL: fma_maskz_312_v32f16:1199; CHECK:       # %bb.0:1200; CHECK-NEXT:    kmovd %edi, %k11201; CHECK-NEXT:    vfmadd213ph %zmm1, %zmm2, %zmm0 {%k1} {z}1202; CHECK-NEXT:    retq1203  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %z, <32 x half> %x, <32 x half> %y)1204  %b = bitcast i32 %mask to <32 x i1>1205  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> zeroinitializer1206  ret <32 x half> %c1207}1208 1209define <32 x half> @fma_mask_load_123_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp, i32 %mask) {1210; CHECK-LABEL: fma_mask_load_123_v32f16:1211; CHECK:       # %bb.0:1212; CHECK-NEXT:    kmovd %esi, %k11213; CHECK-NEXT:    vfmadd213ph (%rdi), %zmm1, %zmm0 {%k1}1214; CHECK-NEXT:    retq1215  %z = load <32 x half>, ptr %zp1216  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z)1217  %b = bitcast i32 %mask to <32 x i1>1218  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> %x1219  ret <32 x half> %c1220}1221 1222define <32 x half> @fma_mask_load_213_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp, i32 %mask) {1223; CHECK-LABEL: fma_mask_load_213_v32f16:1224; CHECK:       # %bb.0:1225; CHECK-NEXT:    kmovd %esi, %k11226; CHECK-NEXT:    vfmadd213ph (%rdi), %zmm1, %zmm0 {%k1}1227; CHECK-NEXT:    retq1228  %z = load <32 x half>, ptr %zp1229  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %y, <32 x half> %x, <32 x half> %z)1230  %b = bitcast i32 %mask to <32 x i1>1231  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> %x1232  ret <32 x half> %c1233}1234 1235define <32 x half> @fma_mask_load_231_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp, i32 %mask) {1236; CHECK-LABEL: fma_mask_load_231_v32f16:1237; CHECK:       # %bb.0:1238; CHECK-NEXT:    kmovd %esi, %k11239; CHECK-NEXT:    vfmadd231ph (%rdi), %zmm1, %zmm0 {%k1}1240; CHECK-NEXT:    retq1241  %z = load <32 x half>, ptr %zp1242  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %y, <32 x half> %z, <32 x half> %x)1243  %b = bitcast i32 %mask to <32 x i1>1244  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> %x1245  ret <32 x half> %c1246}1247 1248define <32 x half> @fma_mask_load_321_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp, i32 %mask) {1249; CHECK-LABEL: fma_mask_load_321_v32f16:1250; CHECK:       # %bb.0:1251; CHECK-NEXT:    kmovd %esi, %k11252; CHECK-NEXT:    vfmadd231ph (%rdi), %zmm1, %zmm0 {%k1}1253; CHECK-NEXT:    retq1254  %z = load <32 x half>, ptr %zp1255  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %z, <32 x half> %y, <32 x half> %x)1256  %b = bitcast i32 %mask to <32 x i1>1257  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> %x1258  ret <32 x half> %c1259}1260 1261define <32 x half> @fma_mask_load_132_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp, i32 %mask) {1262; CHECK-LABEL: fma_mask_load_132_v32f16:1263; CHECK:       # %bb.0:1264; CHECK-NEXT:    kmovd %esi, %k11265; CHECK-NEXT:    vfmadd132ph (%rdi), %zmm1, %zmm0 {%k1}1266; CHECK-NEXT:    retq1267  %z = load <32 x half>, ptr %zp1268  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %x, <32 x half> %z, <32 x half> %y)1269  %b = bitcast i32 %mask to <32 x i1>1270  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> %x1271  ret <32 x half> %c1272}1273 1274define <32 x half> @fma_mask_load_312_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp, i32 %mask) {1275; CHECK-LABEL: fma_mask_load_312_v32f16:1276; CHECK:       # %bb.0:1277; CHECK-NEXT:    kmovd %esi, %k11278; CHECK-NEXT:    vfmadd132ph (%rdi), %zmm1, %zmm0 {%k1}1279; CHECK-NEXT:    retq1280  %z = load <32 x half>, ptr %zp1281  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %z, <32 x half> %x, <32 x half> %y)1282  %b = bitcast i32 %mask to <32 x i1>1283  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> %x1284  ret <32 x half> %c1285}1286 1287define <32 x half> @fma_maskz_load_123_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp, i32 %mask) {1288; CHECK-LABEL: fma_maskz_load_123_v32f16:1289; CHECK:       # %bb.0:1290; CHECK-NEXT:    kmovd %esi, %k11291; CHECK-NEXT:    vfmadd213ph (%rdi), %zmm1, %zmm0 {%k1} {z}1292; CHECK-NEXT:    retq1293  %z = load <32 x half>, ptr %zp1294  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %x, <32 x half> %y, <32 x half> %z)1295  %b = bitcast i32 %mask to <32 x i1>1296  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> zeroinitializer1297  ret <32 x half> %c1298}1299 1300define <32 x half> @fma_maskz_load_213_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp, i32 %mask) {1301; CHECK-LABEL: fma_maskz_load_213_v32f16:1302; CHECK:       # %bb.0:1303; CHECK-NEXT:    kmovd %esi, %k11304; CHECK-NEXT:    vfmadd213ph (%rdi), %zmm1, %zmm0 {%k1} {z}1305; CHECK-NEXT:    retq1306  %z = load <32 x half>, ptr %zp1307  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %y, <32 x half> %x, <32 x half> %z)1308  %b = bitcast i32 %mask to <32 x i1>1309  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> zeroinitializer1310  ret <32 x half> %c1311}1312 1313define <32 x half> @fma_maskz_load_231_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp, i32 %mask) {1314; CHECK-LABEL: fma_maskz_load_231_v32f16:1315; CHECK:       # %bb.0:1316; CHECK-NEXT:    kmovd %esi, %k11317; CHECK-NEXT:    vfmadd231ph (%rdi), %zmm1, %zmm0 {%k1} {z}1318; CHECK-NEXT:    retq1319  %z = load <32 x half>, ptr %zp1320  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %y, <32 x half> %z, <32 x half> %x)1321  %b = bitcast i32 %mask to <32 x i1>1322  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> zeroinitializer1323  ret <32 x half> %c1324}1325 1326define <32 x half> @fma_maskz_load_321_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp, i32 %mask) {1327; CHECK-LABEL: fma_maskz_load_321_v32f16:1328; CHECK:       # %bb.0:1329; CHECK-NEXT:    kmovd %esi, %k11330; CHECK-NEXT:    vfmadd231ph (%rdi), %zmm1, %zmm0 {%k1} {z}1331; CHECK-NEXT:    retq1332  %z = load <32 x half>, ptr %zp1333  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %z, <32 x half> %y, <32 x half> %x)1334  %b = bitcast i32 %mask to <32 x i1>1335  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> zeroinitializer1336  ret <32 x half> %c1337}1338 1339define <32 x half> @fma_maskz_load_132_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp, i32 %mask) {1340; CHECK-LABEL: fma_maskz_load_132_v32f16:1341; CHECK:       # %bb.0:1342; CHECK-NEXT:    kmovd %esi, %k11343; CHECK-NEXT:    vfmadd132ph (%rdi), %zmm1, %zmm0 {%k1} {z}1344; CHECK-NEXT:    retq1345  %z = load <32 x half>, ptr %zp1346  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %x, <32 x half> %z, <32 x half> %y)1347  %b = bitcast i32 %mask to <32 x i1>1348  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> zeroinitializer1349  ret <32 x half> %c1350}1351 1352define <32 x half> @fma_maskz_load_312_v32f16(<32 x half> %x, <32 x half> %y, ptr %zp, i32 %mask) {1353; CHECK-LABEL: fma_maskz_load_312_v32f16:1354; CHECK:       # %bb.0:1355; CHECK-NEXT:    kmovd %esi, %k11356; CHECK-NEXT:    vfmadd132ph (%rdi), %zmm1, %zmm0 {%k1} {z}1357; CHECK-NEXT:    retq1358  %z = load <32 x half>, ptr %zp1359  %a = call <32 x half> @llvm.fma.v32f16(<32 x half> %z, <32 x half> %x, <32 x half> %y)1360  %b = bitcast i32 %mask to <32 x i1>1361  %c = select <32 x i1> %b, <32 x half> %a, <32 x half> zeroinitializer1362  ret <32 x half> %c1363}1364