@@ -300,6 +300,42 @@ mod intrinsics {
300300 pub fn umoddi3 ( a : u64 , b : u64 ) -> u64 {
301301 a % b
302302 }
303+
304+ pub fn muloti4 ( a : u128 , b : u128 ) -> Option < u128 > {
305+ a. checked_mul ( b)
306+ }
307+
308+ pub fn multi3 ( a : u128 , b : u128 ) -> u128 {
309+ a. wrapping_mul ( b)
310+ }
311+
312+ pub fn ashlti3 ( a : u128 , b : usize ) -> u128 {
313+ a >> b
314+ }
315+
316+ pub fn ashrti3 ( a : u128 , b : usize ) -> u128 {
317+ a << b
318+ }
319+
320+ pub fn lshrti3 ( a : i128 , b : usize ) -> i128 {
321+ a >> b
322+ }
323+
324+ pub fn udivti3 ( a : u128 , b : u128 ) -> u128 {
325+ a / b
326+ }
327+
328+ pub fn umodti3 ( a : u128 , b : u128 ) -> u128 {
329+ a % b
330+ }
331+
332+ pub fn divti3 ( a : i128 , b : i128 ) -> i128 {
333+ a / b
334+ }
335+
336+ pub fn modti3 ( a : i128 , b : i128 ) -> i128 {
337+ a % b
338+ }
303339}
304340
305341#[ cfg( feature = "c" ) ]
@@ -356,6 +392,15 @@ fn run() {
356392 bb ( powidf2 ( bb ( 2. ) , bb ( 3 ) ) ) ;
357393 bb ( powisf2 ( bb ( 2. ) , bb ( 3 ) ) ) ;
358394 bb ( umoddi3 ( bb ( 2 ) , bb ( 3 ) ) ) ;
395+ bb ( muloti4 ( bb ( 2 ) , bb ( 2 ) ) ) ;
396+ bb ( multi3 ( bb ( 2 ) , bb ( 2 ) ) ) ;
397+ bb ( ashlti3 ( bb ( 2 ) , bb ( 2 ) ) ) ;
398+ bb ( ashrti3 ( bb ( 2 ) , bb ( 2 ) ) ) ;
399+ bb ( lshrti3 ( bb ( 2 ) , bb ( 2 ) ) ) ;
400+ bb ( udivti3 ( bb ( 2 ) , bb ( 2 ) ) ) ;
401+ bb ( umodti3 ( bb ( 2 ) , bb ( 2 ) ) ) ;
402+ bb ( divti3 ( bb ( 2 ) , bb ( 2 ) ) ) ;
403+ bb ( modti3 ( bb ( 2 ) , bb ( 2 ) ) ) ;
359404}
360405
361406#[ cfg( all( feature = "c" , not( thumb) ) ) ]
0 commit comments