|
|
|
@ -1,21 +1,3 @@ |
|
|
|
|
define void @mcl_fp_add$(bit)S(i$(bit)* %pz, i$(bit)* %px, i$(bit)* %py, i$(bit)* %pp) { |
|
|
|
|
entry: |
|
|
|
|
%x = load i$(bit)* %px |
|
|
|
|
%y = load i$(bit)* %py |
|
|
|
|
%p = load i$(bit)* %pp |
|
|
|
|
%x1 = zext i$(bit) %x to i$(bit+unit) |
|
|
|
|
%y1 = zext i$(bit) %y to i$(bit+unit) |
|
|
|
|
%p1 = zext i$(bit) %p to i$(bit+unit) |
|
|
|
|
%t0 = add i$(bit+unit) %x1, %y1 ; x + y |
|
|
|
|
%t1 = sub i$(bit+unit) %t0, %p1 ; x + y - p |
|
|
|
|
%t2 = lshr i$(bit+unit) %t1, $(bit) |
|
|
|
|
%t3 = trunc i$(bit+unit) %t2 to i1 |
|
|
|
|
%t4 = select i1 %t3, i$(bit+unit) %t0, i$(bit+unit) %t1 |
|
|
|
|
%t5 = trunc i$(bit+unit) %t4 to i$(bit) |
|
|
|
|
store i$(bit) %t5, i$(bit)* %pz |
|
|
|
|
ret void |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
define void @mcl_fp_sub$(bit)S(i$(bit)* %pz, i$(bit)* %px, i$(bit)* %py, i$(bit)* %pp) { |
|
|
|
|
%x = load i$(bit)* %px |
|
|
|
|
%y = load i$(bit)* %py |
|
|
|
|