@@ -2721,6 +2721,60 @@ pub fn declare_intrinsics(llmod: ModuleRef) -> HashMap<&'static str, ValueRef> {
27212721 ifn ! ( "llvm.bswap.i32" , [ Type :: i32 ( ) ] , Type :: i32 ( ) ) ;
27222722 ifn ! ( "llvm.bswap.i64" , [ Type :: i64 ( ) ] , Type :: i64 ( ) ) ;
27232723
2724+ ifn ! ( "llvm.sadd.with.overflow.i8" ,
2725+ [ Type :: i8 ( ) , Type :: i8 ( ) ] , Type :: struct_( [ Type :: i8 ( ) , Type :: i1( ) ] , false ) ) ;
2726+ ifn ! ( "llvm.sadd.with.overflow.i16" ,
2727+ [ Type :: i16 ( ) , Type :: i16 ( ) ] , Type :: struct_( [ Type :: i16 ( ) , Type :: i1( ) ] , false ) ) ;
2728+ ifn ! ( "llvm.sadd.with.overflow.i32" ,
2729+ [ Type :: i32 ( ) , Type :: i32 ( ) ] , Type :: struct_( [ Type :: i32 ( ) , Type :: i1( ) ] , false ) ) ;
2730+ ifn ! ( "llvm.sadd.with.overflow.i64" ,
2731+ [ Type :: i64 ( ) , Type :: i64 ( ) ] , Type :: struct_( [ Type :: i64 ( ) , Type :: i1( ) ] , false ) ) ;
2732+
2733+ ifn ! ( "llvm.uadd.with.overflow.i8" ,
2734+ [ Type :: i8 ( ) , Type :: i8 ( ) ] , Type :: struct_( [ Type :: i8 ( ) , Type :: i1( ) ] , false ) ) ;
2735+ ifn ! ( "llvm.uadd.with.overflow.i16" ,
2736+ [ Type :: i16 ( ) , Type :: i16 ( ) ] , Type :: struct_( [ Type :: i16 ( ) , Type :: i1( ) ] , false ) ) ;
2737+ ifn ! ( "llvm.uadd.with.overflow.i32" ,
2738+ [ Type :: i32 ( ) , Type :: i32 ( ) ] , Type :: struct_( [ Type :: i32 ( ) , Type :: i1( ) ] , false ) ) ;
2739+ ifn ! ( "llvm.uadd.with.overflow.i64" ,
2740+ [ Type :: i64 ( ) , Type :: i64 ( ) ] , Type :: struct_( [ Type :: i64 ( ) , Type :: i1( ) ] , false ) ) ;
2741+
2742+ ifn ! ( "llvm.ssub.with.overflow.i8" ,
2743+ [ Type :: i8 ( ) , Type :: i8 ( ) ] , Type :: struct_( [ Type :: i8 ( ) , Type :: i1( ) ] , false ) ) ;
2744+ ifn ! ( "llvm.ssub.with.overflow.i16" ,
2745+ [ Type :: i16 ( ) , Type :: i16 ( ) ] , Type :: struct_( [ Type :: i16 ( ) , Type :: i1( ) ] , false ) ) ;
2746+ ifn ! ( "llvm.ssub.with.overflow.i32" ,
2747+ [ Type :: i32 ( ) , Type :: i32 ( ) ] , Type :: struct_( [ Type :: i32 ( ) , Type :: i1( ) ] , false ) ) ;
2748+ ifn ! ( "llvm.ssub.with.overflow.i64" ,
2749+ [ Type :: i64 ( ) , Type :: i64 ( ) ] , Type :: struct_( [ Type :: i64 ( ) , Type :: i1( ) ] , false ) ) ;
2750+
2751+ ifn ! ( "llvm.usub.with.overflow.i8" ,
2752+ [ Type :: i8 ( ) , Type :: i8 ( ) ] , Type :: struct_( [ Type :: i8 ( ) , Type :: i1( ) ] , false ) ) ;
2753+ ifn ! ( "llvm.usub.with.overflow.i16" ,
2754+ [ Type :: i16 ( ) , Type :: i16 ( ) ] , Type :: struct_( [ Type :: i16 ( ) , Type :: i1( ) ] , false ) ) ;
2755+ ifn ! ( "llvm.usub.with.overflow.i32" ,
2756+ [ Type :: i32 ( ) , Type :: i32 ( ) ] , Type :: struct_( [ Type :: i32 ( ) , Type :: i1( ) ] , false ) ) ;
2757+ ifn ! ( "llvm.usub.with.overflow.i64" ,
2758+ [ Type :: i64 ( ) , Type :: i64 ( ) ] , Type :: struct_( [ Type :: i64 ( ) , Type :: i1( ) ] , false ) ) ;
2759+
2760+ ifn ! ( "llvm.smul.with.overflow.i8" ,
2761+ [ Type :: i8 ( ) , Type :: i8 ( ) ] , Type :: struct_( [ Type :: i8 ( ) , Type :: i1( ) ] , false ) ) ;
2762+ ifn ! ( "llvm.smul.with.overflow.i16" ,
2763+ [ Type :: i16 ( ) , Type :: i16 ( ) ] , Type :: struct_( [ Type :: i16 ( ) , Type :: i1( ) ] , false ) ) ;
2764+ ifn ! ( "llvm.smul.with.overflow.i32" ,
2765+ [ Type :: i32 ( ) , Type :: i32 ( ) ] , Type :: struct_( [ Type :: i32 ( ) , Type :: i1( ) ] , false ) ) ;
2766+ ifn ! ( "llvm.smul.with.overflow.i64" ,
2767+ [ Type :: i64 ( ) , Type :: i64 ( ) ] , Type :: struct_( [ Type :: i64 ( ) , Type :: i1( ) ] , false ) ) ;
2768+
2769+ ifn ! ( "llvm.umul.with.overflow.i8" ,
2770+ [ Type :: i8 ( ) , Type :: i8 ( ) ] , Type :: struct_( [ Type :: i8 ( ) , Type :: i1( ) ] , false ) ) ;
2771+ ifn ! ( "llvm.umul.with.overflow.i16" ,
2772+ [ Type :: i16 ( ) , Type :: i16 ( ) ] , Type :: struct_( [ Type :: i16 ( ) , Type :: i1( ) ] , false ) ) ;
2773+ ifn ! ( "llvm.umul.with.overflow.i32" ,
2774+ [ Type :: i32 ( ) , Type :: i32 ( ) ] , Type :: struct_( [ Type :: i32 ( ) , Type :: i1( ) ] , false ) ) ;
2775+ ifn ! ( "llvm.umul.with.overflow.i64" ,
2776+ [ Type :: i64 ( ) , Type :: i64 ( ) ] , Type :: struct_( [ Type :: i64 ( ) , Type :: i1( ) ] , false ) ) ;
2777+
27242778 return intrinsics;
27252779}
27262780
0 commit comments