@@ -382,26 +382,16 @@ impl<'ll, 'tcx> IntrinsicCallBuilderMethods<'tcx> for Builder<'_, 'll, 'tcx> {
382
382
let width = size. bits ( ) ;
383
383
let llty = self . type_ix ( width) ;
384
384
match name {
385
- sym:: ctlz | sym:: cttz => {
386
- let y = self . const_bool ( false ) ;
387
- let ret = self . call_intrinsic (
388
- format ! ( "llvm.{name}" ) ,
389
- & [ llty] ,
390
- & [ args[ 0 ] . immediate ( ) , y] ,
391
- ) ;
392
-
393
- self . intcast ( ret, result. layout . llvm_type ( self ) , false )
394
- }
395
- sym:: ctlz_nonzero => {
396
- let y = self . const_bool ( true ) ;
397
- let ret =
398
- self . call_intrinsic ( "llvm.ctlz" , & [ llty] , & [ args[ 0 ] . immediate ( ) , y] ) ;
399
- self . intcast ( ret, result. layout . llvm_type ( self ) , false )
400
- }
401
- sym:: cttz_nonzero => {
402
- let y = self . const_bool ( true ) ;
385
+ sym:: ctlz | sym:: ctlz_nonzero | sym:: cttz | sym:: cttz_nonzero => {
386
+ let y =
387
+ self . const_bool ( name == sym:: ctlz_nonzero || name == sym:: cttz_nonzero) ;
388
+ let llvm_name = if name == sym:: ctlz || name == sym:: ctlz_nonzero {
389
+ "llvm.ctlz"
390
+ } else {
391
+ "llvm.cttz"
392
+ } ;
403
393
let ret =
404
- self . call_intrinsic ( "llvm.cttz" , & [ llty] , & [ args[ 0 ] . immediate ( ) , y] ) ;
394
+ self . call_intrinsic ( llvm_name , & [ llty] , & [ args[ 0 ] . immediate ( ) , y] ) ;
405
395
self . intcast ( ret, result. layout . llvm_type ( self ) , false )
406
396
}
407
397
sym:: ctpop => {
0 commit comments