This is the x86-style of borrow flags. ARM uses subtract-with-carry which inverts the sense of the carry flag.
25 lines
815 B
Plaintext
25 lines
815 B
Plaintext
test cat
|
|
test verifier
|
|
|
|
function add_i96(i32, i32, i32, i32, i32, i32) -> i32, i32, i32 {
|
|
ebb1(v1: i32, v2: i32, v3: i32, v4: i32, v5: i32, v6: i32):
|
|
v10, v11 = iadd_cout v1, v4
|
|
;check: $v10, $v11 = iadd_cout $v1, $v4
|
|
v20, v21 = iadd_carry v2, v5, v11
|
|
; check: $v20, $v21 = iadd_carry $v2, $v5, $v11
|
|
v30 = iadd_cin v3, v6, v21
|
|
; check: $v30 = iadd_cin $v3, $v6, $v21
|
|
return v10, v20, v30
|
|
}
|
|
|
|
function sub_i96(i32, i32, i32, i32, i32, i32) -> i32, i32, i32 {
|
|
ebb1(v1: i32, v2: i32, v3: i32, v4: i32, v5: i32, v6: i32):
|
|
v10, v11 = isub_bout v1, v4
|
|
;check: $v10, $v11 = isub_bout $v1, $v4
|
|
v20, v21 = isub_borrow v2, v5, v11
|
|
; check: $v20, $v21 = isub_borrow $v2, $v5, $v11
|
|
v30 = isub_bin v3, v6, v21
|
|
; check: $v30 = isub_bin $v3, $v6, $v21
|
|
return v10, v20, v30
|
|
}
|