@@ -2740,6 +2740,60 @@ pub fn declare_intrinsics(llmod: ModuleRef) -> HashMap<&'static str, ValueRef> {
2740
2740
ifn ! ( "llvm.bswap.i32" , [ Type :: i32 ( ) ] , Type :: i32 ( ) ) ;
2741
2741
ifn ! ( "llvm.bswap.i64" , [ Type :: i64 ( ) ] , Type :: i64 ( ) ) ;
2742
2742
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
+
2743
2797
return intrinsics;
2744
2798
}
2745
2799
0 commit comments