@@ -697,18 +697,12 @@ pub fn generic_simd_intrinsic<'a, 'gcc, 'tcx>(
697697 default : RValue < ' gcc > ,
698698 pointers : RValue < ' gcc > ,
699699 mask : RValue < ' gcc > ,
700- pointer_count : usize ,
701700 bx : & mut Builder < ' a , ' gcc , ' tcx > ,
702701 in_len : u64 ,
703- underlying_ty : Ty < ' tcx > ,
704702 invert : bool ,
705703 ) -> RValue < ' gcc > {
706- let vector_type = if pointer_count > 1 {
707- bx. context . new_vector_type ( bx. usize_type , in_len)
708- } else {
709- vector_ty ( bx, underlying_ty, in_len)
710- } ;
711- let elem_type = vector_type. dyncast_vector ( ) . expect ( "vector type" ) . get_element_type ( ) ;
704+ let vector_type = default. get_type ( ) ;
705+ let elem_type = vector_type. unqualified ( ) . dyncast_vector ( ) . expect ( "vector type" ) . get_element_type ( ) ;
712706
713707 let mut values = Vec :: with_capacity ( in_len as usize ) ;
714708 for i in 0 ..in_len {
@@ -737,12 +731,6 @@ pub fn generic_simd_intrinsic<'a, 'gcc, 'tcx>(
737731 let mask_type = bx. context . new_struct_type ( None , "mask_type" , & mask_types) ;
738732 let mask = bx. context . new_struct_constructor ( None , mask_type. as_type ( ) , None , & mask_values) ;
739733
740- // FIXME(antoyo): We sometimes need to bitcast here, since usize/isize sometimes (but not
741- // always) get canonicalized to their corresponding integer type (i.e. uint64_t/int64_t on
742- // 64-bit platforms). This causes the shuffle_vector call below to panic, since the types
743- // of the two vectors aren't the same. This is a workaround for now.
744- let vector = bx. bitcast_if_needed ( vector, default. get_type ( ) ) ;
745-
746734 if invert {
747735 bx. shuffle_vector ( vector, default, mask)
748736 } else {
@@ -865,10 +853,8 @@ pub fn generic_simd_intrinsic<'a, 'gcc, 'tcx>(
865853 args[ 0 ] . immediate ( ) ,
866854 args[ 1 ] . immediate ( ) ,
867855 args[ 2 ] . immediate ( ) ,
868- pointer_count,
869856 bx,
870857 in_len,
871- underlying_ty,
872858 false ,
873859 ) ) ;
874860 }
@@ -983,10 +969,8 @@ pub fn generic_simd_intrinsic<'a, 'gcc, 'tcx>(
983969 args[ 0 ] . immediate ( ) ,
984970 args[ 1 ] . immediate ( ) ,
985971 args[ 2 ] . immediate ( ) ,
986- pointer_count,
987972 bx,
988973 in_len,
989- underlying_ty,
990974 true ,
991975 ) ;
992976
0 commit comments