@@ -2740,6 +2740,60 @@ pub fn declare_intrinsics(llmod: ModuleRef) -> HashMap<&'static str, ValueRef> {
27402740 ifn ! ( "llvm.bswap.i32" , [ Type :: i32 ( ) ] , Type :: i32 ( ) ) ;
27412741 ifn ! ( "llvm.bswap.i64" , [ Type :: i64 ( ) ] , Type :: i64 ( ) ) ;
27422742
2743+ ifn ! ( "llvm.sadd.with.overflow.i8" ,
2744+ [ Type :: i8 ( ) , Type :: i8 ( ) ] , Type :: struct_( [ Type :: i8 ( ) , Type :: i1( ) ] , false ) ) ;
2745+ ifn ! ( "llvm.sadd.with.overflow.i16" ,
2746+ [ Type :: i16 ( ) , Type :: i16 ( ) ] , Type :: struct_( [ Type :: i16 ( ) , Type :: i1( ) ] , false ) ) ;
2747+ ifn ! ( "llvm.sadd.with.overflow.i32" ,
2748+ [ Type :: i32 ( ) , Type :: i32 ( ) ] , Type :: struct_( [ Type :: i32 ( ) , Type :: i1( ) ] , false ) ) ;
2749+ ifn ! ( "llvm.sadd.with.overflow.i64" ,
2750+ [ Type :: i64 ( ) , Type :: i64 ( ) ] , Type :: struct_( [ Type :: i64 ( ) , Type :: i1( ) ] , false ) ) ;
2751+
2752+ ifn ! ( "llvm.uadd.with.overflow.i8" ,
2753+ [ Type :: i8 ( ) , Type :: i8 ( ) ] , Type :: struct_( [ Type :: i8 ( ) , Type :: i1( ) ] , false ) ) ;
2754+ ifn ! ( "llvm.uadd.with.overflow.i16" ,
2755+ [ Type :: i16 ( ) , Type :: i16 ( ) ] , Type :: struct_( [ Type :: i16 ( ) , Type :: i1( ) ] , false ) ) ;
2756+ ifn ! ( "llvm.uadd.with.overflow.i32" ,
2757+ [ Type :: i32 ( ) , Type :: i32 ( ) ] , Type :: struct_( [ Type :: i32 ( ) , Type :: i1( ) ] , false ) ) ;
2758+ ifn ! ( "llvm.uadd.with.overflow.i64" ,
2759+ [ Type :: i64 ( ) , Type :: i64 ( ) ] , Type :: struct_( [ Type :: i64 ( ) , Type :: i1( ) ] , false ) ) ;
2760+
2761+ ifn ! ( "llvm.ssub.with.overflow.i8" ,
2762+ [ Type :: i8 ( ) , Type :: i8 ( ) ] , Type :: struct_( [ Type :: i8 ( ) , Type :: i1( ) ] , false ) ) ;
2763+ ifn ! ( "llvm.ssub.with.overflow.i16" ,
2764+ [ Type :: i16 ( ) , Type :: i16 ( ) ] , Type :: struct_( [ Type :: i16 ( ) , Type :: i1( ) ] , false ) ) ;
2765+ ifn ! ( "llvm.ssub.with.overflow.i32" ,
2766+ [ Type :: i32 ( ) , Type :: i32 ( ) ] , Type :: struct_( [ Type :: i32 ( ) , Type :: i1( ) ] , false ) ) ;
2767+ ifn ! ( "llvm.ssub.with.overflow.i64" ,
2768+ [ Type :: i64 ( ) , Type :: i64 ( ) ] , Type :: struct_( [ Type :: i64 ( ) , Type :: i1( ) ] , false ) ) ;
2769+
2770+ ifn ! ( "llvm.usub.with.overflow.i8" ,
2771+ [ Type :: i8 ( ) , Type :: i8 ( ) ] , Type :: struct_( [ Type :: i8 ( ) , Type :: i1( ) ] , false ) ) ;
2772+ ifn ! ( "llvm.usub.with.overflow.i16" ,
2773+ [ Type :: i16 ( ) , Type :: i16 ( ) ] , Type :: struct_( [ Type :: i16 ( ) , Type :: i1( ) ] , false ) ) ;
2774+ ifn ! ( "llvm.usub.with.overflow.i32" ,
2775+ [ Type :: i32 ( ) , Type :: i32 ( ) ] , Type :: struct_( [ Type :: i32 ( ) , Type :: i1( ) ] , false ) ) ;
2776+ ifn ! ( "llvm.usub.with.overflow.i64" ,
2777+ [ Type :: i64 ( ) , Type :: i64 ( ) ] , Type :: struct_( [ Type :: i64 ( ) , Type :: i1( ) ] , false ) ) ;
2778+
2779+ ifn ! ( "llvm.smul.with.overflow.i8" ,
2780+ [ Type :: i8 ( ) , Type :: i8 ( ) ] , Type :: struct_( [ Type :: i8 ( ) , Type :: i1( ) ] , false ) ) ;
2781+ ifn ! ( "llvm.smul.with.overflow.i16" ,
2782+ [ Type :: i16 ( ) , Type :: i16 ( ) ] , Type :: struct_( [ Type :: i16 ( ) , Type :: i1( ) ] , false ) ) ;
2783+ ifn ! ( "llvm.smul.with.overflow.i32" ,
2784+ [ Type :: i32 ( ) , Type :: i32 ( ) ] , Type :: struct_( [ Type :: i32 ( ) , Type :: i1( ) ] , false ) ) ;
2785+ ifn ! ( "llvm.smul.with.overflow.i64" ,
2786+ [ Type :: i64 ( ) , Type :: i64 ( ) ] , Type :: struct_( [ Type :: i64 ( ) , Type :: i1( ) ] , false ) ) ;
2787+
2788+ ifn ! ( "llvm.umul.with.overflow.i8" ,
2789+ [ Type :: i8 ( ) , Type :: i8 ( ) ] , Type :: struct_( [ Type :: i8 ( ) , Type :: i1( ) ] , false ) ) ;
2790+ ifn ! ( "llvm.umul.with.overflow.i16" ,
2791+ [ Type :: i16 ( ) , Type :: i16 ( ) ] , Type :: struct_( [ Type :: i16 ( ) , Type :: i1( ) ] , false ) ) ;
2792+ ifn ! ( "llvm.umul.with.overflow.i32" ,
2793+ [ Type :: i32 ( ) , Type :: i32 ( ) ] , Type :: struct_( [ Type :: i32 ( ) , Type :: i1( ) ] , false ) ) ;
2794+ ifn ! ( "llvm.umul.with.overflow.i64" ,
2795+ [ Type :: i64 ( ) , Type :: i64 ( ) ] , Type :: struct_( [ Type :: i64 ( ) , Type :: i1( ) ] , false ) ) ;
2796+
27432797 return intrinsics;
27442798}
27452799
0 commit comments