@@ -182,7 +182,10 @@ pub fn adjust_intrinsic_arguments<'a, 'b, 'gcc, 'tcx>(
182
182
| "__builtin_ia32_vplzcntd_128_mask"
183
183
| "__builtin_ia32_vplzcntq_512_mask"
184
184
| "__builtin_ia32_vplzcntq_256_mask"
185
- | "__builtin_ia32_vplzcntq_128_mask" => {
185
+ | "__builtin_ia32_vplzcntq_128_mask"
186
+ | "__builtin_ia32_cvtqq2pd128_mask"
187
+ | "__builtin_ia32_cvtqq2pd256_mask"
188
+ | "__builtin_ia32_cvtqq2ps256_mask" => {
186
189
let mut new_args = args. to_vec ( ) ;
187
190
// Remove last arg as it doesn't seem to be used in GCC and is always false.
188
191
new_args. pop ( ) ;
@@ -378,6 +381,23 @@ pub fn adjust_intrinsic_arguments<'a, 'b, 'gcc, 'tcx>(
378
381
) ;
379
382
args = vec ! [ arg. get_address( None ) ] . into ( ) ;
380
383
}
384
+ "__builtin_ia32_cvtqq2pd512_mask" | "__builtin_ia32_cvtqq2ps512_mask" => {
385
+ let mut old_args = args. to_vec ( ) ;
386
+ let mut new_args = vec ! [ ] ;
387
+ new_args. push ( old_args. swap_remove ( 0 ) ) ;
388
+ let arg2_type = gcc_func. get_param_type ( 1 ) ;
389
+ let vector_type = arg2_type. dyncast_vector ( ) . expect ( "vector type" ) ;
390
+ let zero = builder. context . new_rvalue_zero ( vector_type. get_element_type ( ) ) ;
391
+ let num_units = vector_type. get_num_units ( ) ;
392
+ let first_arg =
393
+ builder. context . new_rvalue_from_vector ( None , arg2_type, & vec ! [ zero; num_units] ) ;
394
+ new_args. push ( first_arg) ;
395
+ let arg3_type = gcc_func. get_param_type ( 2 ) ;
396
+ let minus_one = builder. context . new_rvalue_from_int ( arg3_type, -1 ) ;
397
+ new_args. push ( minus_one) ;
398
+ new_args. push ( old_args. swap_remove ( 0 ) ) ;
399
+ args = new_args. into ( ) ;
400
+ }
381
401
_ => ( ) ,
382
402
}
383
403
} else {
@@ -987,6 +1007,29 @@ pub fn intrinsic<'gcc, 'tcx>(name: &str, cx: &CodegenCx<'gcc, 'tcx>) -> Function
987
1007
"llvm.x86.avx512.vpdpbusds.128" => "__builtin_ia32_vpdpbusds_v4si" ,
988
1008
"llvm.x86.xsave" => "__builtin_ia32_xsave" ,
989
1009
"llvm.x86.xsaveopt" => "__builtin_ia32_xsaveopt" ,
1010
+ "llvm.x86.avx512.mask.loadu.w.512" => "__builtin_ia32_loaddquhi512_mask" ,
1011
+ "llvm.x86.avx512.mask.loadu.b.512" => "__builtin_ia32_loaddquqi512_mask" ,
1012
+ "llvm.x86.avx512.mask.loadu.w.256" => "__builtin_ia32_loaddquhi256_mask" ,
1013
+ "llvm.x86.avx512.mask.loadu.b.256" => "__builtin_ia32_loaddquqi256_mask" ,
1014
+ "llvm.x86.avx512.mask.loadu.w.128" => "__builtin_ia32_loaddquhi128_mask" ,
1015
+ "llvm.x86.avx512.mask.loadu.b.128" => "__builtin_ia32_loaddquqi128_mask" ,
1016
+ "llvm.x86.avx512.mask.storeu.w.512" => "__builtin_ia32_storedquhi512_mask" ,
1017
+ "llvm.x86.avx512.mask.storeu.b.512" => "__builtin_ia32_storedquqi512_mask" ,
1018
+ "llvm.x86.avx512.mask.storeu.w.256" => "__builtin_ia32_storedquhi256_mask" ,
1019
+ "llvm.x86.avx512.mask.storeu.b.256" => "__builtin_ia32_storedquqi256_mask" ,
1020
+ "llvm.x86.avx512.mask.storeu.w.128" => "__builtin_ia32_storedquhi128_mask" ,
1021
+ "llvm.x86.avx512.mask.storeu.b.128" => "__builtin_ia32_storedquqi128_mask" ,
1022
+ "llvm.x86.avx512.mask.expand.load.w.512" => "__builtin_ia32_expandloadhi512_mask" ,
1023
+ "llvm.x86.avx512.mask.expand.load.w.256" => "__builtin_ia32_expandloadhi256_mask" ,
1024
+ "llvm.x86.avx512.mask.expand.load.w.128" => "__builtin_ia32_expandloadhi128_mask" ,
1025
+ "llvm.x86.avx512.mask.expand.load.b.512" => "__builtin_ia32_expandloadqi512_mask" ,
1026
+ "llvm.x86.avx512.mask.expand.load.b.256" => "__builtin_ia32_expandloadqi256_mask" ,
1027
+ "llvm.x86.avx512.mask.expand.load.b.128" => "__builtin_ia32_expandloadqi128_mask" ,
1028
+ "llvm.x86.avx512.sitofp.round.v8f64.v8i64" => "__builtin_ia32_cvtqq2pd512_mask" ,
1029
+ "llvm.x86.avx512.sitofp.round.v2f64.v2i64" => "__builtin_ia32_cvtqq2pd128_mask" ,
1030
+ "llvm.x86.avx512.sitofp.round.v4f64.v4i64" => "__builtin_ia32_cvtqq2pd256_mask" ,
1031
+ "llvm.x86.avx512.sitofp.round.v8f32.v8i64" => "__builtin_ia32_cvtqq2ps512_mask" ,
1032
+ "llvm.x86.avx512.sitofp.round.v4f32.v4i64" => "__builtin_ia32_cvtqq2ps256_mask" ,
990
1033
991
1034
// NOTE: this file is generated by https://github.com/GuillaumeGomez/llvmint/blob/master/generate_list.py
992
1035
_ => include ! ( "archs.rs" ) ,
0 commit comments