@@ -494,20 +494,26 @@ defm : vinsert_for_size_lowering<"VINSERTI32x4Z256", v16i8x_info, v32i8x_info,
494
494
vinsert128_insert, INSERT_get_vinsert128_imm, [HasVLX]>;
495
495
defm : vinsert_for_size_lowering<"VINSERTF32x4Z256", v8f16x_info, v16f16x_info,
496
496
vinsert128_insert, INSERT_get_vinsert128_imm, [HasVLX]>;
497
+ defm : vinsert_for_size_lowering<"VINSERTF32x4Z256", v8bf16x_info, v16bf16x_info,
498
+ vinsert128_insert, INSERT_get_vinsert128_imm, [HasVLX]>;
497
499
// Codegen pattern with the alternative types insert VEC128 into VEC512
498
500
defm : vinsert_for_size_lowering<"VINSERTI32x4Z", v8i16x_info, v32i16_info,
499
501
vinsert128_insert, INSERT_get_vinsert128_imm, [HasAVX512]>;
500
502
defm : vinsert_for_size_lowering<"VINSERTI32x4Z", v16i8x_info, v64i8_info,
501
503
vinsert128_insert, INSERT_get_vinsert128_imm, [HasAVX512]>;
502
504
defm : vinsert_for_size_lowering<"VINSERTF32x4Z", v8f16x_info, v32f16_info,
503
505
vinsert128_insert, INSERT_get_vinsert128_imm, [HasAVX512]>;
506
+ defm : vinsert_for_size_lowering<"VINSERTF32x4Z", v8bf16x_info, v32bf16_info,
507
+ vinsert128_insert, INSERT_get_vinsert128_imm, [HasAVX512]>;
504
508
// Codegen pattern with the alternative types insert VEC256 into VEC512
505
509
defm : vinsert_for_size_lowering<"VINSERTI64x4Z", v16i16x_info, v32i16_info,
506
510
vinsert256_insert, INSERT_get_vinsert256_imm, [HasAVX512]>;
507
511
defm : vinsert_for_size_lowering<"VINSERTI64x4Z", v32i8x_info, v64i8_info,
508
512
vinsert256_insert, INSERT_get_vinsert256_imm, [HasAVX512]>;
509
513
defm : vinsert_for_size_lowering<"VINSERTF64x4Z", v16f16x_info, v32f16_info,
510
514
vinsert256_insert, INSERT_get_vinsert256_imm, [HasAVX512]>;
515
+ defm : vinsert_for_size_lowering<"VINSERTF64x4Z", v16bf16x_info, v32bf16_info,
516
+ vinsert256_insert, INSERT_get_vinsert256_imm, [HasAVX512]>;
511
517
512
518
513
519
multiclass vinsert_for_mask_cast<string InstrStr, X86VectorVTInfo From,
@@ -795,6 +801,8 @@ defm : vextract_for_size_lowering<"VEXTRACTI32x4Z256", v32i8x_info, v16i8x_info,
795
801
vextract128_extract, EXTRACT_get_vextract128_imm, [HasVLX]>;
796
802
defm : vextract_for_size_lowering<"VEXTRACTF32x4Z256", v16f16x_info, v8f16x_info,
797
803
vextract128_extract, EXTRACT_get_vextract128_imm, [HasVLX]>;
804
+ defm : vextract_for_size_lowering<"VEXTRACTF32x4Z256", v16bf16x_info, v8bf16x_info,
805
+ vextract128_extract, EXTRACT_get_vextract128_imm, [HasVLX]>;
798
806
799
807
// Codegen pattern with the alternative types extract VEC128 from VEC512
800
808
defm : vextract_for_size_lowering<"VEXTRACTI32x4Z", v32i16_info, v8i16x_info,
@@ -803,13 +811,17 @@ defm : vextract_for_size_lowering<"VEXTRACTI32x4Z", v64i8_info, v16i8x_info,
803
811
vextract128_extract, EXTRACT_get_vextract128_imm, [HasAVX512]>;
804
812
defm : vextract_for_size_lowering<"VEXTRACTF32x4Z", v32f16_info, v8f16x_info,
805
813
vextract128_extract, EXTRACT_get_vextract128_imm, [HasAVX512]>;
814
+ defm : vextract_for_size_lowering<"VEXTRACTF32x4Z", v32bf16_info, v8bf16x_info,
815
+ vextract128_extract, EXTRACT_get_vextract128_imm, [HasAVX512]>;
806
816
// Codegen pattern with the alternative types extract VEC256 from VEC512
807
817
defm : vextract_for_size_lowering<"VEXTRACTI64x4Z", v32i16_info, v16i16x_info,
808
818
vextract256_extract, EXTRACT_get_vextract256_imm, [HasAVX512]>;
809
819
defm : vextract_for_size_lowering<"VEXTRACTI64x4Z", v64i8_info, v32i8x_info,
810
820
vextract256_extract, EXTRACT_get_vextract256_imm, [HasAVX512]>;
811
821
defm : vextract_for_size_lowering<"VEXTRACTF64x4Z", v32f16_info, v16f16x_info,
812
822
vextract256_extract, EXTRACT_get_vextract256_imm, [HasAVX512]>;
823
+ defm : vextract_for_size_lowering<"VEXTRACTF64x4Z", v32bf16_info, v16bf16x_info,
824
+ vextract256_extract, EXTRACT_get_vextract256_imm, [HasAVX512]>;
813
825
814
826
815
827
// A 128-bit extract from bits [255:128] of a 512-bit vector should use a
0 commit comments