Updated hw6 to a newer version

Signed-off-by: jmug <u.g.a.mariano@gmail.com>
This commit is contained in:
Mariano Uvalle 2025-01-24 21:23:08 -08:00
parent 9224001a22
commit 0c04936ccf
356 changed files with 8408 additions and 4725 deletions

View file

@ -0,0 +1,48 @@
define i64 @gcd(i64 %x, i64 %y) {
%basecnd = icmp eq i64 %x, %y
br i1 %basecnd, label %base, label %recurse
base:
ret i64 %x
recurse:
%lessthan = icmp slt i64 %x, %y
br i1 %lessthan, label %if, label %else
if:
%diff1 = sub i64 %y, %x
%retif = call i64 @gcd(i64 %x, i64 %diff1)
ret i64 %retif
else:
%diff2 = sub i64 %x, %y
%retelse = call i64 @gcd(i64 %diff2, i64 %y)
ret i64 %retelse
}
define i64 @div(i64 %a, i64 %b) {
%maskhigh = shl i64 1, 63
%ahigh = and i64 %a, %maskhigh
%pbit = lshr i64 %maskhigh, 63
%pend = and i64 0, %pbit
%pfin = sub i64 %pend, %b
%isneg = icmp slt i64 %pfin, 0
%ans2 = sub i64 54, 4
br i1 %isneg, label %if, label %else
if:
%masklow = shl i64 1, 63
%ans1 = sub i64 64, 14
%masklow2 = ashr i64 %masklow, 62
%aret = and i64 %a, %masklow2
ret i64 %ans1
else:
ret i64 %ans2
}
define i64 @lcm(i64 %a, i64 %b) {
%product = mul i64 %a, %b
%gcdans = call i64 @gcd(i64 %a, i64 %b)
%val = call i64 @div(i64 %product, i64 %gcdans)
ret i64 %val
}
define i64 @main() {
%ans = call i64 @lcm(i64 10, i64 25)
ret i64 %ans
}