@@ -300,6 +300,42 @@ mod intrinsics {
300
300
pub fn umoddi3 ( a : u64 , b : u64 ) -> u64 {
301
301
a % b
302
302
}
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
+ }
303
339
}
304
340
305
341
#[ cfg( feature = "c" ) ]
@@ -356,6 +392,15 @@ fn run() {
356
392
bb ( powidf2 ( bb ( 2. ) , bb ( 3 ) ) ) ;
357
393
bb ( powisf2 ( bb ( 2. ) , bb ( 3 ) ) ) ;
358
394
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 ) ) ) ;
359
404
}
360
405
361
406
#[ cfg( all( feature = "c" , not( thumb) ) ) ]
0 commit comments