@@ -418,6 +418,27 @@ pub fn adjust_intrinsic_arguments<'a, 'b, 'gcc, 'tcx>(
418
418
new_args. push ( old_args. swap_remove ( 0 ) ) ;
419
419
args = new_args. into ( ) ;
420
420
}
421
+ "__builtin_ia32_addph512_mask_round"
422
+ | "__builtin_ia32_subph512_mask_round"
423
+ | "__builtin_ia32_mulph512_mask_round"
424
+ | "__builtin_ia32_divph512_mask_round" => {
425
+ let mut new_args = args. to_vec ( ) ;
426
+ let last_arg = new_args. pop ( ) . expect ( "last arg" ) ;
427
+
428
+ let arg3_type = gcc_func. get_param_type ( 2 ) ;
429
+ let vector_type = arg3_type. dyncast_vector ( ) . expect ( "vector type" ) ;
430
+ let zero = builder. context . new_rvalue_zero ( vector_type. get_element_type ( ) ) ;
431
+ let num_units = vector_type. get_num_units ( ) ;
432
+ let first_arg =
433
+ builder. context . new_rvalue_from_vector ( None , arg3_type, & vec ! [ zero; num_units] ) ;
434
+ new_args. push ( first_arg) ;
435
+
436
+ let arg4_type = gcc_func. get_param_type ( 3 ) ;
437
+ let minus_one = builder. context . new_rvalue_from_int ( arg4_type, -1 ) ;
438
+ new_args. push ( minus_one) ;
439
+ new_args. push ( last_arg) ;
440
+ args = new_args. into ( ) ;
441
+ }
421
442
_ => ( ) ,
422
443
}
423
444
} else {
@@ -1094,6 +1115,23 @@ pub fn intrinsic<'gcc, 'tcx>(name: &str, cx: &CodegenCx<'gcc, 'tcx>) -> Function
1094
1115
"llvm.x86.avx512.mask.load.q.256" => "__builtin_ia32_movdqa64load256_mask" ,
1095
1116
"llvm.x86.avx512fp16.mask.cmp.sh" => "__builtin_ia32_cmpsh_mask_round" ,
1096
1117
"llvm.x86.avx512fp16.vcomi.sh" => "__builtin_ia32_cmpsh_mask_round" ,
1118
+ "llvm.x86.avx512fp16.add.ph.512" => "__builtin_ia32_addph512_mask_round" ,
1119
+ "llvm.x86.avx512fp16.sub.ph.512" => "__builtin_ia32_subph512_mask_round" ,
1120
+ "llvm.x86.avx512fp16.mul.ph.512" => "__builtin_ia32_mulph512_mask_round" ,
1121
+ "llvm.x86.avx512fp16.div.ph.512" => "__builtin_ia32_divph512_mask_round" ,
1122
+ "llvm.x86.avx512fp16.mask.vfmul.cph.512" => "__builtin_ia32_vfmulcph512_mask_round" ,
1123
+ "llvm.x86.avx512fp16.mask.vfmul.csh" => "__builtin_ia32_vfmulcsh_mask_round" ,
1124
+ "llvm.x86.avx512fp16.mask.vfcmul.cph.512" => "__builtin_ia32_vfcmulcph512_mask_round" ,
1125
+ "llvm.x86.avx512fp16.mask.vfcmul.csh" => "__builtin_ia32_vfcmulcsh_mask_round" ,
1126
+ "llvm.x86.avx512fp16.mask.vfmadd.cph.512" => "__builtin_ia32_vfmaddcph512_mask3_round" ,
1127
+ "llvm.x86.avx512fp16.maskz.vfmadd.cph.512" => "__builtin_ia32_vfmaddcph512_maskz_round" ,
1128
+ "llvm.x86.avx512fp16.mask.vfmadd.csh" => "__builtin_ia32_vfmaddcsh_mask3_round" ,
1129
+ "llvm.x86.avx512fp16.maskz.vfmadd.csh" => "__builtin_ia32_vfmaddcsh_maskz_round" ,
1130
+ "llvm.x86.avx512fp16.mask.vfcmadd.cph.512" => "__builtin_ia32_vfcmaddcph512_mask3_round" ,
1131
+ "llvm.x86.avx512fp16.maskz.vfcmadd.cph.512" => "__builtin_ia32_vfcmaddcph512_maskz_round" ,
1132
+ "llvm.x86.avx512fp16.mask.vfcmadd.csh" => "__builtin_ia32_vfcmaddcsh_mask_round" ,
1133
+ "llvm.x86.avx512fp16.maskz.vfcmadd.csh" => "__builtin_ia32_vfcmaddcsh_maskz_round" ,
1134
+
1097
1135
// TODO: support the tile builtins:
1098
1136
"llvm.x86.ldtilecfg" => "__builtin_trap" ,
1099
1137
"llvm.x86.sttilecfg" => "__builtin_trap" ,
@@ -1103,6 +1141,13 @@ pub fn intrinsic<'gcc, 'tcx>(name: &str, cx: &CodegenCx<'gcc, 'tcx>) -> Function
1103
1141
"llvm.x86.tileloaddt164" => "__builtin_trap" ,
1104
1142
"llvm.x86.tilezero" => "__builtin_trap" ,
1105
1143
"llvm.x86.tdpbf16ps" => "__builtin_trap" ,
1144
+ "llvm.x86.tdpbssd" => "__builtin_trap" ,
1145
+ "llvm.x86.tdpbsud" => "__builtin_trap" ,
1146
+ "llvm.x86.tdpbusd" => "__builtin_trap" ,
1147
+ "llvm.x86.tdpbuud" => "__builtin_trap" ,
1148
+ "llvm.x86.tdpfp16ps" => "__builtin_trap" ,
1149
+ "llvm.x86.tcmmimfp16ps" => "__builtin_trap" ,
1150
+ "llvm.x86.tcmmrlfp16ps" => "__builtin_trap" ,
1106
1151
1107
1152
// NOTE: this file is generated by https://github.com/GuillaumeGomez/llvmint/blob/master/generate_list.py
1108
1153
_ => include ! ( "archs.rs" ) ,
0 commit comments