Skip to content

Commit

Permalink
Update existing tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
chriseth committed Sep 23, 2020
1 parent d286dfe commit 63c82c9
Show file tree
Hide file tree
Showing 19 changed files with 140 additions and 137 deletions.
37 changes: 21 additions & 16 deletions test/cmdlineTests/optimizer_array_sload/output
Original file line number Diff line number Diff line change
Expand Up @@ -20,30 +20,35 @@ object "Arraysum_33" {
code {
{
mstore(64, 128)
if iszero(lt(calldatasize(), 4))
let _1 := 4
if iszero(lt(calldatasize(), _1))
{
let _1 := 0
if eq(0x81d73423, shr(224, calldataload(_1)))
let _2 := 0
if eq(0x81d73423, shr(224, calldataload(_2)))
{
if callvalue() { revert(_1, _1) }
if slt(add(calldatasize(), not(3)), _1) { revert(_1, _1) }
let vloc_sum := _1
let vloc_i := _1
let _2 := sload(_1)
if callvalue() { revert(_2, _2) }
if slt(add(calldatasize(), not(3)), _2) { revert(_2, _2) }
let vloc_sum := _2
let vloc_i := _2
let _3 := sload(_2)
for { }
lt(vloc_i, _2)
lt(vloc_i, _3)
{
if gt(vloc_i, not(1)) { revert(_1, _1) }
if gt(vloc_i, not(1)) { revert(_2, _2) }
vloc_i := add(vloc_i, 1)
}
{
mstore(_1, _1)
let _3 := sload(add(keccak256(_1, 0x20), vloc_i))
if gt(vloc_sum, not(_3)) { revert(_1, _1) }
vloc_sum := add(vloc_sum, _3)
mstore(_2, _2)
let _4 := sload(add(keccak256(_2, 0x20), vloc_i))
if gt(vloc_sum, not(_4))
{
mstore(_2, shl(225, 0x0fc12e35))
revert(_2, _1)
}
vloc_sum := add(vloc_sum, _4)
}
let memPos := allocateMemory(_1)
return(memPos, sub(abi_encode_uint(memPos, _1), memPos))
let memPos := allocateMemory(_2)
return(memPos, sub(abi_encode_uint(memPos, _2), memPos))
}
}
revert(0, 0)
Expand Down
7 changes: 6 additions & 1 deletion test/cmdlineTests/recovery_ast_constructor/output
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,8 @@ JSON AST:
"statements":
[
null
]
],
"unchecked": false
},
"children": [],
"id": 8,
Expand Down Expand Up @@ -187,6 +188,10 @@ JSON AST:
"src": "433:6:0"
},
{
"attributes":
{
"unchecked": false
},
"children":
[
{
Expand Down
2 changes: 1 addition & 1 deletion test/cmdlineTests/standard_only_ast_requested/output.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"sources":{"A":{"ast":{"absolutePath":"A","exportedSymbols":{"C":[6]},"id":7,"license":"GPL-3.0","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.0"],"nodeType":"PragmaDirective","src":"36:22:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":6,"linearizedBaseContracts":[6],"name":"C","nodeType":"ContractDefinition","nodes":[{"body":{"id":4,"nodeType":"Block","src":"97:2:0","statements":[]},"functionSelector":"26121ff0","id":5,"implemented":true,"kind":"function","modifiers":[],"name":"f","nodeType":"FunctionDefinition","parameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"82:2:0"},"returnParameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"97:0:0"},"scope":6,"src":"72:27:0","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":7,"src":"59:42:0"}],"src":"36:65:0"},"id":0}}}
{"sources":{"A":{"ast":{"absolutePath":"A","exportedSymbols":{"C":[6]},"id":7,"license":"GPL-3.0","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.0"],"nodeType":"PragmaDirective","src":"36:22:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":6,"linearizedBaseContracts":[6],"name":"C","nodeType":"ContractDefinition","nodes":[{"body":{"id":4,"nodeType":"Block","src":"97:2:0","statements":[],"unchecked":false},"functionSelector":"26121ff0","id":5,"implemented":true,"kind":"function","modifiers":[],"name":"f","nodeType":"FunctionDefinition","parameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"82:2:0"},"returnParameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"97:0:0"},"scope":6,"src":"72:27:0","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":7,"src":"59:42:0"}],"src":"36:65:0"},"id":0}}}
56 changes: 29 additions & 27 deletions test/libsolidity/GasMeter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ BOOST_AUTO_TEST_CASE(function_calls)
uint data2;
function f(uint x) public {
if (x > 7)
data2 = g(x**8) + 1;
unchecked { data2 = g(x**8) + 1; }
else
data = 1;
}
Expand All @@ -245,7 +245,7 @@ BOOST_AUTO_TEST_CASE(multiple_external_functions)
uint data2;
function f(uint x) public {
if (x > 7)
data2 = g(x**8) + 1;
unchecked { data2 = g(x**8) + 1; }
else
data = 1;
}
Expand All @@ -264,10 +264,10 @@ BOOST_AUTO_TEST_CASE(exponent_size)
char const* sourceCode = R"(
contract A {
function f(uint x) public returns (uint) {
return x ** 0;
unchecked { return x ** 0; }
}
function g(uint x) public returns (uint) {
return x ** 0x100;
unchecked { return x ** 0x100; }
}
function h(uint x) public returns (uint) {
unchecked { return x ** 0x10000; }
Expand Down Expand Up @@ -330,29 +330,31 @@ BOOST_AUTO_TEST_CASE(complex_control_flow)
char const* sourceCode = R"(
contract log {
function ln(int128 x) public pure returns (int128 result) {
int128 t = x / 256;
int128 y = 5545177;
x = t;
t = x * 16; if (t <= 1000000) { x = t; y = y - 2772588; }
t = x * 4; if (t <= 1000000) { x = t; y = y - 1386294; }
t = x * 2; if (t <= 1000000) { x = t; y = y - 693147; }
t = x + x / 2; if (t <= 1000000) { x = t; y = y - 405465; }
t = x + x / 4; if (t <= 1000000) { x = t; y = y - 223144; }
t = x + x / 8; if (t <= 1000000) { x = t; y = y - 117783; }
t = x + x / 16; if (t <= 1000000) { x = t; y = y - 60624; }
t = x + x / 32; if (t <= 1000000) { x = t; y = y - 30771; }
t = x + x / 64; if (t <= 1000000) { x = t; y = y - 15504; }
t = x + x / 128; if (t <= 1000000) { x = t; y = y - 7782; }
t = x + x / 256; if (t <= 1000000) { x = t; y = y - 3898; }
t = x + x / 512; if (t <= 1000000) { x = t; y = y - 1951; }
t = x + x / 1024; if (t <= 1000000) { x = t; y = y - 976; }
t = x + x / 2048; if (t <= 1000000) { x = t; y = y - 488; }
t = x + x / 4096; if (t <= 1000000) { x = t; y = y - 244; }
t = x + x / 8192; if (t <= 1000000) { x = t; y = y - 122; }
t = x + x / 16384; if (t <= 1000000) { x = t; y = y - 61; }
t = x + x / 32768; if (t <= 1000000) { x = t; y = y - 31; }
t = x + x / 65536; if (t <= 1000000) { y = y - 15; }
return y;
unchecked {
int128 t = x / 256;
int128 y = 5545177;
x = t;
t = x * 16; if (t <= 1000000) { x = t; y = y - 2772588; }
t = x * 4; if (t <= 1000000) { x = t; y = y - 1386294; }
t = x * 2; if (t <= 1000000) { x = t; y = y - 693147; }
t = x + x / 2; if (t <= 1000000) { x = t; y = y - 405465; }
t = x + x / 4; if (t <= 1000000) { x = t; y = y - 223144; }
t = x + x / 8; if (t <= 1000000) { x = t; y = y - 117783; }
t = x + x / 16; if (t <= 1000000) { x = t; y = y - 60624; }
t = x + x / 32; if (t <= 1000000) { x = t; y = y - 30771; }
t = x + x / 64; if (t <= 1000000) { x = t; y = y - 15504; }
t = x + x / 128; if (t <= 1000000) { x = t; y = y - 7782; }
t = x + x / 256; if (t <= 1000000) { x = t; y = y - 3898; }
t = x + x / 512; if (t <= 1000000) { x = t; y = y - 1951; }
t = x + x / 1024; if (t <= 1000000) { x = t; y = y - 976; }
t = x + x / 2048; if (t <= 1000000) { x = t; y = y - 488; }
t = x + x / 4096; if (t <= 1000000) { x = t; y = y - 244; }
t = x + x / 8192; if (t <= 1000000) { x = t; y = y - 122; }
t = x + x / 16384; if (t <= 1000000) { x = t; y = y - 61; }
t = x + x / 32768; if (t <= 1000000) { x = t; y = y - 31; }
t = x + x / 65536; if (t <= 1000000) { y = y - 15; }
return y;
}
}
}
)";
Expand Down
2 changes: 1 addition & 1 deletion test/libsolidity/SolidityCompiler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ BOOST_AUTO_TEST_CASE(does_not_include_creation_time_only_internal_functions)
contract C {
uint x;
constructor() { f(); }
function f() internal { for (uint i = 0; i < 10; ++i) x += 3 + i; }
function f() internal { unchecked { for (uint i = 0; i < 10; ++i) x += 3 + i; } }
}
)";
compiler().setOptimiserSettings(solidity::test::CommonOptions::get().optimize);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ contract C {
// compileViaYul: also
// ----
// div(uint256,uint256): 7, 2 -> 3
// div(uint256,uint256): 7, 0 -> FAILURE # throws #
// div(uint256,uint256): 7, 0 -> FAILURE, hex"1f825c6a" # throws #
// mod(uint256,uint256): 7, 2 -> 1
// mod(uint256,uint256): 7, 0 -> FAILURE # throws #
// mod(uint256,uint256): 7, 0 -> FAILURE, hex"1f825c6a" # throws #
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ contract C {
uint16 b;

function f() public returns (uint256, uint256, uint256, uint256) {
a++;
unchecked { a++; }
uint256 c = b;
delete b;
unchecked { a -= 2; }
Expand Down
8 changes: 4 additions & 4 deletions test/libsolidity/semanticTests/viaYul/detect_add_overflow.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ contract C {
}
}
// ====
// compileViaYul: true
// compileViaYul: also
// ----
// f(uint256,uint256): 5, 6 -> 11
// f(uint256,uint256): -2, 1 -> -1
// f(uint256,uint256): -2, 2 -> FAILURE
// f(uint256,uint256): 2, -2 -> FAILURE
// f(uint256,uint256): -2, 2 -> FAILURE, hex"1f825c6a"
// f(uint256,uint256): 2, -2 -> FAILURE, hex"1f825c6a"
// g(uint8,uint8): 128, 64 -> 192
// g(uint8,uint8): 128, 127 -> 255
// g(uint8,uint8): 128, 128 -> FAILURE
// g(uint8,uint8): 128, 128 -> FAILURE, hex"1f825c6a"
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ contract C {
}
}
// ====
// compileViaYul: true
// compileViaYul: also
// ----
// f(int256,int256): 5, 6 -> 11
// f(int256,int256): -2, 1 -> -1
Expand All @@ -16,22 +16,22 @@ contract C {
// f(int256,int256): -5, -6 -> -11
// f(int256,int256): 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0, 0x0F -> 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
// f(int256,int256): 0x0F, 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 -> 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
// f(int256,int256): 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 1 -> FAILURE
// f(int256,int256): 1, 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> FAILURE
// f(int256,int256): 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 1 -> FAILURE, hex"1f825c6a"
// f(int256,int256): 1, 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> FAILURE, hex"1f825c6a"
// f(int256,int256): 0x8000000000000000000000000000000000000000000000000000000000000001, -1 -> 0x8000000000000000000000000000000000000000000000000000000000000000
// f(int256,int256): -1, 0x8000000000000000000000000000000000000000000000000000000000000001 -> 0x8000000000000000000000000000000000000000000000000000000000000000
// f(int256,int256): 0x8000000000000000000000000000000000000000000000000000000000000000, -1 -> FAILURE
// f(int256,int256): -1, 0x8000000000000000000000000000000000000000000000000000000000000000 -> FAILURE
// f(int256,int256): 0x8000000000000000000000000000000000000000000000000000000000000000, -1 -> FAILURE, hex"1f825c6a"
// f(int256,int256): -1, 0x8000000000000000000000000000000000000000000000000000000000000000 -> FAILURE, hex"1f825c6a"
// g(int8,int8): 5, 6 -> 11
// g(int8,int8): -2, 1 -> -1
// g(int8,int8): -2, 2 -> 0
// g(int8,int8): 2, -2 -> 0
// g(int8,int8): -5, -6 -> -11
// g(int8,int8): 126, 1 -> 127
// g(int8,int8): 1, 126 -> 127
// g(int8,int8): 127, 1 -> FAILURE
// g(int8,int8): 1, 127 -> FAILURE
// g(int8,int8): 127, 1 -> FAILURE, hex"1f825c6a"
// g(int8,int8): 1, 127 -> FAILURE, hex"1f825c6a"
// g(int8,int8): -127, -1 -> -128
// g(int8,int8): -1, -127 -> -128
// g(int8,int8): -127, -2 -> FAILURE
// g(int8,int8): -2, -127 -> FAILURE
// g(int8,int8): -127, -2 -> FAILURE, hex"1f825c6a"
// g(int8,int8): -2, -127 -> FAILURE, hex"1f825c6a"
10 changes: 5 additions & 5 deletions test/libsolidity/semanticTests/viaYul/detect_div_overflow.sol
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,18 @@ contract C {
}
}
// ====
// compileViaYul: true
// compileViaYul: also
// ----
// f(uint256,uint256): 10, 3 -> 3
// f(uint256,uint256): 1, 0 -> FAILURE
// f(uint256,uint256): 0, 0 -> FAILURE
// f(uint256,uint256): 1, 0 -> FAILURE, hex"1f825c6a"
// f(uint256,uint256): 0, 0 -> FAILURE, hex"1f825c6a"
// f(uint256,uint256): 0, 1 -> 0
// g(int8,int8): -10, 3 -> -3
// g(int8,int8): -10, -3 -> 3
// g(int8,int8): -10, 0 -> FAILURE
// g(int8,int8): -10, 0 -> FAILURE, hex"1f825c6a"
// g(int8,int8): -128, 1 -> -128
// g(int8,int8): -128, -2 -> 64
// g(int8,int8): -128, 2 -> -64
// g(int8,int8): -128, -1 -> FAILURE
// g(int8,int8): -128, -1 -> FAILURE, hex"1f825c6a"
// g(int8,int8): -127, -1 -> 127
// h(uint256,uint256): 0x8000000000000000000000000000000000000000000000000000000000000000, -1 -> 0
10 changes: 5 additions & 5 deletions test/libsolidity/semanticTests/viaYul/detect_mod_zero.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,19 @@ contract C {
}
}
// ====
// compileViaYul: true
// compileViaYul: also
// ----
// f(uint256,uint256): 10, 3 -> 1
// f(uint256,uint256): 10, 2 -> 0
// f(uint256,uint256): 11, 2 -> 1
// f(uint256,uint256): 2, 2 -> 0
// f(uint256,uint256): 1, 0 -> FAILURE
// f(uint256,uint256): 0, 0 -> FAILURE
// f(uint256,uint256): 1, 0 -> FAILURE, hex"1f825c6a"
// f(uint256,uint256): 0, 0 -> FAILURE, hex"1f825c6a"
// f(uint256,uint256): 0, 1 -> 0
// g(uint8,uint8): 10, 3 -> 1
// g(uint8,uint8): 10, 2 -> 0
// g(uint8,uint8): 11, 2 -> 1
// g(uint8,uint8): 2, 2 -> 0
// g(uint8,uint8): 1, 0 -> FAILURE
// g(uint8,uint8): 0, 0 -> FAILURE
// g(uint8,uint8): 1, 0 -> FAILURE, hex"1f825c6a"
// g(uint8,uint8): 0, 0 -> FAILURE, hex"1f825c6a"
// g(uint8,uint8): 0, 1 -> 0
14 changes: 7 additions & 7 deletions test/libsolidity/semanticTests/viaYul/detect_mod_zero_signed.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ contract C {
}
}
// ====
// compileViaYul: true
// compileViaYul: also
// ----
// f(int256,int256): 10, 3 -> 1
// f(int256,int256): 10, 2 -> 0
Expand All @@ -16,9 +16,9 @@ contract C {
// f(int256,int256): 10, -3 -> 1
// f(int256,int256): -10, -3 -> -1
// f(int256,int256): 2, 2 -> 0
// f(int256,int256): 1, 0 -> FAILURE
// f(int256,int256): -1, 0 -> FAILURE
// f(int256,int256): 0, 0 -> FAILURE
// f(int256,int256): 1, 0 -> FAILURE, hex"1f825c6a"
// f(int256,int256): -1, 0 -> FAILURE, hex"1f825c6a"
// f(int256,int256): 0, 0 -> FAILURE, hex"1f825c6a"
// f(int256,int256): 0, 1 -> 0
// f(int256,int256): 0, -1 -> 0
// g(int8,int8): 10, 3 -> 1
Expand All @@ -28,8 +28,8 @@ contract C {
// g(int8,int8): 10, -3 -> 1
// g(int8,int8): -10, -3 -> -1
// g(int8,int8): 2, 2 -> 0
// g(int8,int8): 1, 0 -> FAILURE
// g(int8,int8): -1, 0 -> FAILURE
// g(int8,int8): 0, 0 -> FAILURE
// g(int8,int8): 1, 0 -> FAILURE, hex"1f825c6a"
// g(int8,int8): -1, 0 -> FAILURE, hex"1f825c6a"
// g(int8,int8): 0, 0 -> FAILURE, hex"1f825c6a"
// g(int8,int8): 0, 1 -> 0
// g(int8,int8): 0, -1 -> 0
22 changes: 11 additions & 11 deletions test/libsolidity/semanticTests/viaYul/detect_mul_overflow.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,31 @@ contract C {
}
}
// ====
// compileViaYul: true
// compileViaYul: also
// ----
// f(uint256,uint256): 5, 6 -> 30
// f(uint256,uint256): -1, 1 -> -1
// f(uint256,uint256): -1, 2 -> FAILURE
// f(uint256,uint256): 0x8000000000000000000000000000000000000000000000000000000000000000, 2 -> FAILURE
// f(uint256,uint256): -1, 2 -> FAILURE, hex"1f825c6a"
// f(uint256,uint256): 0x8000000000000000000000000000000000000000000000000000000000000000, 2 -> FAILURE, hex"1f825c6a"
// f(uint256,uint256): 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 2 -> -2
// f(uint256,uint256): 2, 0x8000000000000000000000000000000000000000000000000000000000000000 -> FAILURE
// f(uint256,uint256): 2, 0x8000000000000000000000000000000000000000000000000000000000000000 -> FAILURE, hex"1f825c6a"
// f(uint256,uint256): 2, 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> -2
// f(uint256,uint256): 0x0100000000000000000000000000000000, 0x0100000000000000000000000000000000 -> FAILURE
// f(uint256,uint256): 0x0100000000000000000000000000000000, 0x0100000000000000000000000000000000 -> FAILURE, hex"1f825c6a"
// f(uint256,uint256): 0x0100000000000000000000000000000000, 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000
// f(uint256,uint256): 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 0x0100000000000000000000000000000000 -> 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000
// f(uint256,uint256): 0x0100000000000000000000000000000001, 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> -1
// f(uint256,uint256): 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 0x0100000000000000000000000000000001 -> -1
// f(uint256,uint256): 0x0100000000000000000000000000000002, 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> FAILURE
// f(uint256,uint256): 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 0x0100000000000000000000000000000002 -> FAILURE
// f(uint256,uint256): 0x0100000000000000000000000000000002, 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> FAILURE, hex"1f825c6a"
// f(uint256,uint256): 0x00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, 0x0100000000000000000000000000000002 -> FAILURE, hex"1f825c6a"
// f(uint256,uint256): -1, 0 -> 0
// f(uint256,uint256): 0, -1 -> 0
// g(uint8,uint8): 5, 6 -> 30
// g(uint8,uint8): 0x80, 2 -> FAILURE
// g(uint8,uint8): 0x80, 2 -> FAILURE, hex"1f825c6a"
// g(uint8,uint8): 0x7F, 2 -> 254
// g(uint8,uint8): 2, 0x7F -> 254
// g(uint8,uint8): 0x10, 0x10 -> FAILURE
// g(uint8,uint8): 0x10, 0x10 -> FAILURE, hex"1f825c6a"
// g(uint8,uint8): 0x0F, 0x11 -> 0xFF
// g(uint8,uint8): 0x0F, 0x12 -> FAILURE
// g(uint8,uint8): 0x12, 0x0F -> FAILURE
// g(uint8,uint8): 0x0F, 0x12 -> FAILURE, hex"1f825c6a"
// g(uint8,uint8): 0x12, 0x0F -> FAILURE, hex"1f825c6a"
// g(uint8,uint8): 0xFF, 0 -> 0
// g(uint8,uint8): 0, 0xFF -> 0
Loading

0 comments on commit 63c82c9

Please sign in to comment.