Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions substrate/frame/revive/fixtures/contracts/Arithmetic.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Arithmetic {

function add(uint a, uint b) public view returns (uint) {
return a + b;
}

function mul(uint a, uint b) public view returns (uint) {
return a * b;
}

function sub(uint a, uint b) public view returns (uint) {
return a - b;
}

function div(uint a, uint b) public view returns (uint) {
return a / b;
}

function sdiv(int a, int b) public view returns (int) {
return a / b;
}

function rem(uint a, uint b) public view returns (uint) {
return a % b;
}

function smod(int a, int b) public view returns (int) {
return a % b;
}

// MOD instruction - unsigned modulo (alternative name to avoid Rust keyword conflict)
function umod(uint a, uint b) public view returns (uint) {
return a % b;
}

// ADDMOD instruction: (a + b) % n
function addmod(uint a, uint b, uint n) public view returns (uint) {
return (a + b) % n;
}

// MULMOD instruction: (a * b) % n
function mulmod(uint a, uint b, uint n) public view returns (uint) {
return (a * b) % n;
}

// EXP instruction: a ** b (exponentiation)
function exp(uint a, uint b) public view returns (uint) {
return a ** b;
}

// SIGNEXTEND instruction: sign-extend value from (i+1)*8 bits to 256 bits
function signextend(uint i, uint x) public pure returns (uint) {
assembly {
x := signextend(i, x)
}
return x;
}

}
1 change: 1 addition & 0 deletions substrate/frame/revive/src/tests/sol.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.

mod arithmetic;
mod block_info;
mod misc;
mod system;
Loading
Loading