Skip to content

Commit 417b07b

Browse files
committed
Add newly implemented intrinsics to test file
1 parent 9013dbe commit 417b07b

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

src/bin/intrinsics.rs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#![feature(lang_items)]
1313
#![feature(libc)]
1414
#![feature(start)]
15+
#![feature(i128_type)]
1516
#![no_std]
1617

1718
#[cfg(not(thumb))]
@@ -300,6 +301,42 @@ mod intrinsics {
300301
pub fn umoddi3(a: u64, b: u64) -> u64 {
301302
a % b
302303
}
304+
305+
pub fn muloti4(a: u128, b: u128) -> Option<u128> {
306+
a.checked_mul(b)
307+
}
308+
309+
pub fn multi3(a: u128, b: u128) -> u128 {
310+
a.wrapping_mul(b)
311+
}
312+
313+
pub fn ashlti3(a: u128, b: usize) -> u128 {
314+
a >> b
315+
}
316+
317+
pub fn ashrti3(a: u128, b: usize) -> u128 {
318+
a << b
319+
}
320+
321+
pub fn lshrti3(a: i128, b: usize) -> i128 {
322+
a >> b
323+
}
324+
325+
pub fn udivti3(a: u128, b: u128) -> u128 {
326+
a / b
327+
}
328+
329+
pub fn umodti3(a: u128, b: u128) -> u128 {
330+
a % b
331+
}
332+
333+
pub fn divti3(a: i128, b: i128) -> i128 {
334+
a / b
335+
}
336+
337+
pub fn modti3(a: i128, b: i128) -> i128 {
338+
a % b
339+
}
303340
}
304341

305342
#[cfg(feature = "c")]
@@ -356,6 +393,15 @@ fn run() {
356393
bb(powidf2(bb(2.), bb(3)));
357394
bb(powisf2(bb(2.), bb(3)));
358395
bb(umoddi3(bb(2), bb(3)));
396+
bb(muloti4(bb(2), bb(2)));
397+
bb(multi3(bb(2), bb(2)));
398+
bb(ashlti3(bb(2), bb(2)));
399+
bb(ashrti3(bb(2), bb(2)));
400+
bb(lshrti3(bb(2), bb(2)));
401+
bb(udivti3(bb(2), bb(2)));
402+
bb(umodti3(bb(2), bb(2)));
403+
bb(divti3(bb(2), bb(2)));
404+
bb(modti3(bb(2), bb(2)));
359405
}
360406

361407
#[cfg(all(feature = "c", not(thumb)))]

0 commit comments

Comments
 (0)