mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Add arithmetic test cases for most of EVM->Ewasm translator
This commit is contained in:
		
							parent
							
								
									9a1cc027ce
								
							
						
					
					
						commit
						7d8c4c24ee
					
				| @ -138,6 +138,10 @@ function div(x1, x2, x3, x4, y1, y2, y3, y4) -> r1, r2, r3, r4 { | |||||||
| 	// TODO implement properly
 | 	// TODO implement properly
 | ||||||
| 	r4 := i64.div_u(x4, y4) | 	r4 := i64.div_u(x4, y4) | ||||||
| } | } | ||||||
|  | function sdiv(x1, x2, x3, x4, y1, y2, y3, y4) -> r1, r2, r3, r4 { | ||||||
|  | 	// TODO implement properly
 | ||||||
|  | 	unreachable() | ||||||
|  | } | ||||||
| function mod(x1, x2, x3, x4, y1, y2, y3, y4) -> r1, r2, r3, r4 { | function mod(x1, x2, x3, x4, y1, y2, y3, y4) -> r1, r2, r3, r4 { | ||||||
| 	// TODO implement properly
 | 	// TODO implement properly
 | ||||||
| 	r4 := i64.rem_u(x4, y4) | 	r4 := i64.rem_u(x4, y4) | ||||||
| @ -318,11 +322,11 @@ function sar(x1, x2, x3, x4, y1, y2, y3, y4) -> z1, z2, z3, z4 { | |||||||
| 	// TODO implement
 | 	// TODO implement
 | ||||||
| 	unreachable() | 	unreachable() | ||||||
| } | } | ||||||
| function addmod(x1, x2, x3, x4, y1, y2, y3, y4) -> z1, z2, z3, z4 { | function addmod(x1, x2, x3, x4, y1, y2, y3, y4, m1, m2, m3, m4) -> z1, z2, z3, z4 { | ||||||
| 	// TODO implement
 | 	// TODO implement
 | ||||||
| 	unreachable() | 	unreachable() | ||||||
| } | } | ||||||
| function mulmod(x1, x2, x3, x4, y1, y2, y3, y4) -> z1, z2, z3, z4 { | function mulmod(x1, x2, x3, x4, y1, y2, y3, y4, m1, m2, m3, m4) -> z1, z2, z3, z4 { | ||||||
| 	// TODO implement
 | 	// TODO implement
 | ||||||
| 	unreachable() | 	unreachable() | ||||||
| } | } | ||||||
|  | |||||||
| @ -131,7 +131,7 @@ string EWasmTranslationTest::interpret() | |||||||
| { | { | ||||||
| 	InterpreterState state; | 	InterpreterState state; | ||||||
| 	state.maxTraceSize = 10000; | 	state.maxTraceSize = 10000; | ||||||
| 	state.maxSteps = 10000; | 	state.maxSteps = 100000; | ||||||
| 	WasmDialect dialect; | 	WasmDialect dialect; | ||||||
| 	Interpreter interpreter(state, dialect); | 	Interpreter interpreter(state, dialect); | ||||||
| 	try | 	try | ||||||
|  | |||||||
							
								
								
									
										35
									
								
								test/libyul/ewasmTranslationTests/arithmetic_add.yul
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								test/libyul/ewasmTranslationTests/arithmetic_add.yul
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,35 @@ | |||||||
|  | { | ||||||
|  |   sstore(0, add(0, 1)) | ||||||
|  |   sstore(1, add(1, not(0))) | ||||||
|  |   sstore(2, add(0, 0)) | ||||||
|  |   sstore(3, add(1, 2)) | ||||||
|  |   sstore(4, add(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe, 1)) | ||||||
|  |   sstore(5, add( | ||||||
|  |     0x8000000000000000000000000000000000000000000000000000000000000000, 1 | ||||||
|  |   )) | ||||||
|  |   sstore(6, add(not(0), 1)) | ||||||
|  |   sstore(7, add(0xffffffffffffffffffffffffffffffff, 1)) | ||||||
|  |   sstore(8, add(0xffffffffffffffff, 1)) | ||||||
|  |   sstore(9, add(0xffffffffffffffffffffffffffffffff0000000000000000, 1)) | ||||||
|  |   sstore(10, add(0xffffffffffffffffffffffffffffffffffffffffffffffff, 3)) | ||||||
|  |   sstore(11, add(0xffffffffffffffffffffffffffffffff, 3)) | ||||||
|  |   sstore(12, add(0xffffffffffffffff, 3)) | ||||||
|  |   sstore(13, add(0xffffffffffffffffffffffffffffffff0000000000000000, 3)) | ||||||
|  | } | ||||||
|  | // ---- | ||||||
|  | // Trace: | ||||||
|  | // Memory dump: | ||||||
|  | //      0: 000000000000000000000000000000000000000000000000000000000000000d | ||||||
|  | //     20: 0000000000000000ffffffffffffffffffffffffffffffff0000000000000003 | ||||||
|  | // Storage dump: | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000000: 0000000000000000000000000000000000000000000000000000000000000001 | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000003: 0000000000000000000000000000000000000000000000000000000000000003 | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000004: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000005: 8000000000000000000000000000000000000000000000000000000000000001 | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000007: 0000000000000000000000000000000100000000000000000000000000000000 | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000008: 0000000000000000000000000000000000000000000000010000000000000000 | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000009: 0000000000000000ffffffffffffffffffffffffffffffff0000000000000001 | ||||||
|  | //   000000000000000000000000000000000000000000000000000000000000000a: 0000000000000001000000000000000000000000000000000000000000000002 | ||||||
|  | //   000000000000000000000000000000000000000000000000000000000000000b: 0000000000000000000000000000000100000000000000000000000000000002 | ||||||
|  | //   000000000000000000000000000000000000000000000000000000000000000c: 0000000000000000000000000000000000000000000000010000000000000002 | ||||||
|  | //   000000000000000000000000000000000000000000000000000000000000000d: 0000000000000000ffffffffffffffffffffffffffffffff0000000000000003 | ||||||
							
								
								
									
										20
									
								
								test/libyul/ewasmTranslationTests/arithmetic_addmod.yul
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								test/libyul/ewasmTranslationTests/arithmetic_addmod.yul
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | |||||||
|  | { | ||||||
|  |   sstore(0, addmod(0, 1, 1)) | ||||||
|  |   sstore(1, addmod(0, 1, 2)) | ||||||
|  |   sstore(2, addmod(3, 1, 2)) | ||||||
|  |   sstore(3, addmod(1, not(0), 5)) | ||||||
|  |   sstore(4, addmod(0, 0, 0)) | ||||||
|  |   sstore(5, addmod(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe, 1, 1)) | ||||||
|  |   sstore(6, addmod(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe, 1, 0)) | ||||||
|  |   sstore(7, addmod(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd, 1, 5)) | ||||||
|  |   sstore(8, addmod( | ||||||
|  |     0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, | ||||||
|  |     0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe, | ||||||
|  |     5 | ||||||
|  |   )) | ||||||
|  | } | ||||||
|  | // ---- | ||||||
|  | // Trace: | ||||||
|  | //   INVALID() | ||||||
|  | // Memory dump: | ||||||
|  | // Storage dump: | ||||||
							
								
								
									
										23
									
								
								test/libyul/ewasmTranslationTests/arithmetic_div.yul
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								test/libyul/ewasmTranslationTests/arithmetic_div.yul
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,23 @@ | |||||||
|  | { | ||||||
|  |   sstore(0, div(0, 1)) | ||||||
|  |   sstore(1, div(1, not(0))) | ||||||
|  |   sstore(2, div(0, 0)) | ||||||
|  |   sstore(3, div(1, 2)) | ||||||
|  |   sstore(4, div(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe, 1)) | ||||||
|  |   sstore(5, div( | ||||||
|  |     0x8000000000000000000000000000000000000000000000000000000000000000, 1 | ||||||
|  |   )) | ||||||
|  |   sstore(6, div(not(0), 1)) | ||||||
|  |   sstore(7, div(0xffffffffffffffffffffffffffffffff, 1)) | ||||||
|  |   sstore(8, div(0xffffffffffffffff, 1)) | ||||||
|  |   sstore(9, div(0xffffffffffffffffffffffffffffffff0000000000000000, 1)) | ||||||
|  |   sstore(10, div(0xffffffffffffffffffffffffffffffffffffffffffffffff, 3)) | ||||||
|  |   sstore(11, div(0xffffffffffffffffffffffffffffffff, 3)) | ||||||
|  |   sstore(12, div(0xffffffffffffffff, 3)) | ||||||
|  |   sstore(13, div(0xffffffffffffffffffffffffffffffff0000000000000000, 3)) | ||||||
|  | } | ||||||
|  | // ---- | ||||||
|  | // Trace: | ||||||
|  | // Memory dump: | ||||||
|  | //      0: 0000000000000000000000000000000000000000000000000000000000000001 | ||||||
|  | // Storage dump: | ||||||
							
								
								
									
										25
									
								
								test/libyul/ewasmTranslationTests/arithmetic_exp.yul
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								test/libyul/ewasmTranslationTests/arithmetic_exp.yul
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | |||||||
|  | { | ||||||
|  |   sstore(0, exp(0, 1)) | ||||||
|  |   sstore(1, exp(1, not(0))) | ||||||
|  |   sstore(2, exp(0, 0)) | ||||||
|  |   sstore(3, exp(1, 2)) | ||||||
|  |   sstore(4, exp(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe, 1)) | ||||||
|  |   sstore(5, exp( | ||||||
|  |     0x8000000000000000000000000000000000000000000000000000000000000000, 1 | ||||||
|  |   )) | ||||||
|  |   sstore(6, exp(not(0), 1)) | ||||||
|  |   sstore(7, exp(0xffffffffffffffffffffffffffffffff, 2)) | ||||||
|  |   sstore(8, exp(0xffffffffffffffff, 2)) | ||||||
|  |   sstore(9, exp(0xffffffffffffffffffffffffffffffff0000000000000000, 2)) | ||||||
|  |   sstore(10, exp(0xffffffffffffffffffffffffffffffffffffffffffffffff, 3)) | ||||||
|  |   sstore(11, exp(0xffffffffffffffffffffffffffffffff, 3)) | ||||||
|  |   sstore(12, exp(0xffffffffffffffff, 3)) | ||||||
|  |   sstore(13, exp(0xffffffffffffffffffffffffffffffff0000000000000000, 3)) | ||||||
|  |   sstore(14, exp(2, 256)) | ||||||
|  |   sstore(15, exp(2, 255)) | ||||||
|  | } | ||||||
|  | // ---- | ||||||
|  | // Trace: | ||||||
|  | //   INVALID() | ||||||
|  | // Memory dump: | ||||||
|  | // Storage dump: | ||||||
							
								
								
									
										25
									
								
								test/libyul/ewasmTranslationTests/arithmetic_mod.yul
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								test/libyul/ewasmTranslationTests/arithmetic_mod.yul
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | |||||||
|  | { | ||||||
|  |   sstore(0, mod(0, 1)) | ||||||
|  |   sstore(1, mod(1, not(0))) | ||||||
|  |   sstore(2, mod(0, 0)) | ||||||
|  |   sstore(3, mod(1, 2)) | ||||||
|  |   sstore(4, mod(not(0), 1)) | ||||||
|  |   sstore(5, mod( | ||||||
|  |     0x8000000000000000000000000000000000000000000000000000000000000000, 1 | ||||||
|  |   )) | ||||||
|  |   sstore(6, mod(not(0), 1)) | ||||||
|  |   sstore(7, mod(0xffffffffffffffffffffffffffffffff, 1)) | ||||||
|  |   sstore(8, mod(0xffffffffffffffffffffffffffffffffffffffffffffffff, 0xfffffffffffffffffffffffffffffffe)) | ||||||
|  |   sstore(9, mod(0xffffffffffffffffffffffffffffffffffffffffffffffff, 5)) | ||||||
|  |   sstore(10, mod(0xffffffffffffffffffffffffffffffffffffffffffffffff, 4)) | ||||||
|  |   sstore(11, mod(0xffffffffffffffffffffffffffffffff, 3)) | ||||||
|  |   sstore(12, mod(0xffffffffffffffff, 3)) | ||||||
|  |   sstore(13, mod(0xffffffffffffffffffffffffffffffff0000000000000000, 0xffffffffffffffff43342553000)) | ||||||
|  | } | ||||||
|  | // ---- | ||||||
|  | // Trace: | ||||||
|  | // Memory dump: | ||||||
|  | //      0: 0000000000000000000000000000000000000000000000000000000000000001 | ||||||
|  | //     20: 0000000000000000000000000000000000000000000000000000000000000001 | ||||||
|  | // Storage dump: | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000001: 0000000000000000000000000000000000000000000000000000000000000001 | ||||||
							
								
								
									
										36
									
								
								test/libyul/ewasmTranslationTests/arithmetic_mul.yul
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								test/libyul/ewasmTranslationTests/arithmetic_mul.yul
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | |||||||
|  | { | ||||||
|  |   sstore(0, mul(0, 1)) | ||||||
|  |   sstore(1, mul(1, not(0))) | ||||||
|  |   sstore(2, mul(0, 0)) | ||||||
|  |   sstore(3, mul(1, 2)) | ||||||
|  |   sstore(4, mul(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe, 1)) | ||||||
|  |   sstore(5, mul( | ||||||
|  |     0x8000000000000000000000000000000000000000000000000000000000000000, 1 | ||||||
|  |   )) | ||||||
|  |   sstore(6, mul(not(0), 1)) | ||||||
|  |   sstore(7, mul(0xffffffffffffffffffffffffffffffff, 1)) | ||||||
|  |   sstore(8, mul(0xffffffffffffffff, 1)) | ||||||
|  |   sstore(9, mul(0xffffffffffffffffffffffffffffffff0000000000000000, 1)) | ||||||
|  |   sstore(10, mul(0xffffffffffffffffffffffffffffffffffffffffffffffff, 3)) | ||||||
|  |   sstore(11, mul(0xffffffffffffffffffffffffffffffff, 3)) | ||||||
|  |   sstore(12, mul(0xffffffffffffffff, 3)) | ||||||
|  |   sstore(13, mul(0xffffffffffffffffffffffffffffffff0000000000000000, 3)) | ||||||
|  | } | ||||||
|  | // ---- | ||||||
|  | // Trace: | ||||||
|  | // Memory dump: | ||||||
|  | //      0: 000000000000000000000000000000000000000000000000000000000000000d | ||||||
|  | //     20: 0000000000000002fffffffffffffffffffffffffffffffd0000000000000000 | ||||||
|  | // Storage dump: | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000001: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000003: 0000000000000000000000000000000000000000000000000000000000000002 | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000004: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000005: 8000000000000000000000000000000000000000000000000000000000000000 | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000006: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000007: 00000000000000000000000000000000ffffffffffffffffffffffffffffffff | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000008: 000000000000000000000000000000000000000000000000ffffffffffffffff | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000009: 0000000000000000ffffffffffffffffffffffffffffffff0000000000000000 | ||||||
|  | //   000000000000000000000000000000000000000000000000000000000000000a: 0000000000000002fffffffffffffffffffffffffffffffffffffffffffffffd | ||||||
|  | //   000000000000000000000000000000000000000000000000000000000000000b: 00000000000000000000000000000002fffffffffffffffffffffffffffffffd | ||||||
|  | //   000000000000000000000000000000000000000000000000000000000000000c: 000000000000000000000000000000000000000000000002fffffffffffffffd | ||||||
|  | //   000000000000000000000000000000000000000000000000000000000000000d: 0000000000000002fffffffffffffffffffffffffffffffd0000000000000000 | ||||||
							
								
								
									
										22
									
								
								test/libyul/ewasmTranslationTests/arithmetic_mulmod.yul
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								test/libyul/ewasmTranslationTests/arithmetic_mulmod.yul
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | |||||||
|  | { | ||||||
|  |   sstore(0, mulmod(0, 1, 2)) | ||||||
|  |   sstore(1, mulmod(1, not(0), 5)) | ||||||
|  |   sstore(2, mulmod(0, 0, 5)) | ||||||
|  |   sstore(3, mulmod(1, 3, 2)) | ||||||
|  |   sstore(4, mulmod(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe, | ||||||
|  |     1, | ||||||
|  |     0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)) | ||||||
|  |   sstore(5, mulmod(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe, 1, 1)) | ||||||
|  |   sstore(6, mulmod(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe, 1, 0)) | ||||||
|  |   sstore(7, mulmod(0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd, 1, 5)) | ||||||
|  |   sstore(8, mulmod( | ||||||
|  |     not(0), | ||||||
|  |     0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe, | ||||||
|  |     25 | ||||||
|  |   )) | ||||||
|  | } | ||||||
|  | // ---- | ||||||
|  | // Trace: | ||||||
|  | //   INVALID() | ||||||
|  | // Memory dump: | ||||||
|  | // Storage dump: | ||||||
							
								
								
									
										25
									
								
								test/libyul/ewasmTranslationTests/arithmetic_sdiv.yul
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								test/libyul/ewasmTranslationTests/arithmetic_sdiv.yul
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | |||||||
|  | { | ||||||
|  |   sstore(0, sdiv(0, 1)) | ||||||
|  |   sstore(1, sdiv(0, not(0))) | ||||||
|  |   sstore(2, sdiv(0, 0)) | ||||||
|  |   sstore(3, sdiv(1, 2)) | ||||||
|  |   sstore(4, sdiv(not(0), 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe)) | ||||||
|  |   sstore(5, sdiv(0x8000000000000000000000000000000000000000000000000000000000000000, not(0))) | ||||||
|  |   sstore(6, sdiv(not(0), 0x8000000000000000000000000000000000000000000000000000000000000000)) | ||||||
|  |   sstore(7, sdiv(0x7000000000000000000000000000000000000000000000000000000000000000, 1)) | ||||||
|  |   sstore(8, sdiv(1, 0x7000000000000000000000000000000000000000000000000000000000000000)) | ||||||
|  |   sstore(9, sdiv(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, not(0))) | ||||||
|  |   sstore(10, sdiv(not(0), 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)) | ||||||
|  |   sstore(11, sdiv(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, 1)) | ||||||
|  |   sstore(12, sdiv(not(0), not(0))) | ||||||
|  |   sstore(13, sdiv( | ||||||
|  |     0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe, | ||||||
|  |     0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe | ||||||
|  |   )) | ||||||
|  |   sstore(14, sdiv(0x8000000000000000000000000000000000000000000000000000000000000001, not(0))) | ||||||
|  | } | ||||||
|  | // ---- | ||||||
|  | // Trace: | ||||||
|  | //   INVALID() | ||||||
|  | // Memory dump: | ||||||
|  | // Storage dump: | ||||||
							
								
								
									
										29
									
								
								test/libyul/ewasmTranslationTests/arithmetic_smod.yul
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								test/libyul/ewasmTranslationTests/arithmetic_smod.yul
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | |||||||
|  | { | ||||||
|  |   sstore(0, smod(0, 1)) | ||||||
|  |   sstore(1, smod(1, not(0))) | ||||||
|  |   sstore(2, smod(0, 0)) | ||||||
|  |   sstore(3, smod(1, 2)) | ||||||
|  |   sstore(4, smod(not(0), 1)) | ||||||
|  |   sstore(5, smod( | ||||||
|  |     0x8000000000000000000000000000000000000000000000000000000000000000, 1 | ||||||
|  |   )) | ||||||
|  |   sstore(6, smod(not(0), 1)) | ||||||
|  |   sstore(7, smod(0xffffffffffffffffffffffffffffffff, 1)) | ||||||
|  |   sstore(8, smod(0xffffffffffffffffffffffffffffffffffffffffffffffff, 0xfffffffffffffffffffffffffffffffe)) | ||||||
|  |   sstore(9, smod(0xffffffffffffffffffffffffffffffffffffffffffffffff, 5)) | ||||||
|  |   sstore(10, smod(0xffffffffffffffffffffffffffffffffffffffffffffffff, 4)) | ||||||
|  |   sstore(11, smod(0xffffffffffffffffffffffffffffffff, 3)) | ||||||
|  |   sstore(12, smod(0xffffffffffffffff, 3)) | ||||||
|  |   sstore(13, smod(0xffffffffffffffffffffffffffffffff0000000000000000, 0xffffffffffffffff43342553000)) | ||||||
|  |   sstore(14, smod( | ||||||
|  |     0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd, | ||||||
|  |     0xffffffffffffffff43342553000 | ||||||
|  |   )) | ||||||
|  | } | ||||||
|  | // ---- | ||||||
|  | // Trace: | ||||||
|  | // Memory dump: | ||||||
|  | //      0: 0000000000000000000000000000000000000000000000000000000000000001 | ||||||
|  | //     20: 0000000000000000000000000000000000000000000000000000000000000001 | ||||||
|  | // Storage dump: | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000001: 0000000000000000000000000000000000000000000000000000000000000001 | ||||||
							
								
								
									
										36
									
								
								test/libyul/ewasmTranslationTests/arithmetic_sub.yul
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								test/libyul/ewasmTranslationTests/arithmetic_sub.yul
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | |||||||
|  | { | ||||||
|  |   sstore(0, sub(0, 1)) | ||||||
|  |   sstore(1, sub(1, not(0))) | ||||||
|  |   sstore(2, sub(0, 0)) | ||||||
|  |   sstore(3, sub(1, 2)) | ||||||
|  |   sstore(4, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, 1)) | ||||||
|  |   sstore(5, sub( | ||||||
|  |     0x8000000000000000000000000000000000000000000000000000000000000000, 1 | ||||||
|  |   )) | ||||||
|  |   sstore(6, sub(not(0), 1)) | ||||||
|  |   sstore(7, sub(not(0), not(0))) | ||||||
|  |   sstore(8, sub(0x1000000000000000000000000000000000000000000000000, 1)) | ||||||
|  |   sstore(9, sub(0x100000000000000000000000000000000, 1)) | ||||||
|  |   sstore(10, sub(0x10000000000000000, 1)) | ||||||
|  |   sstore(11, sub(0x1000000000000000000000000000000000000000000000000, 3)) | ||||||
|  |   sstore(12, sub(0x100000000000000000000000000000000, 3)) | ||||||
|  |   sstore(13, sub(0x10000000000000000, 3)) | ||||||
|  | } | ||||||
|  | // ---- | ||||||
|  | // Trace: | ||||||
|  | // Memory dump: | ||||||
|  | //      0: 000000000000000000000000000000000000000000000000000000000000000d | ||||||
|  | //     20: 000000000000000000000000000000000000000000000000fffffffffffffffd | ||||||
|  | // Storage dump: | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000000: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000001: 0000000000000000000000000000000000000000000000000000000000000002 | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000003: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000004: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000005: 7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000006: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000008: 0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff | ||||||
|  | //   0000000000000000000000000000000000000000000000000000000000000009: 00000000000000000000000000000000ffffffffffffffffffffffffffffffff | ||||||
|  | //   000000000000000000000000000000000000000000000000000000000000000a: 000000000000000000000000000000000000000000000000ffffffffffffffff | ||||||
|  | //   000000000000000000000000000000000000000000000000000000000000000b: 0000000000000000fffffffffffffffffffffffffffffffffffffffffffffffd | ||||||
|  | //   000000000000000000000000000000000000000000000000000000000000000c: 00000000000000000000000000000000fffffffffffffffffffffffffffffffd | ||||||
|  | //   000000000000000000000000000000000000000000000000000000000000000d: 000000000000000000000000000000000000000000000000fffffffffffffffd | ||||||
| @ -4,11 +4,16 @@ | |||||||
|   let z := shr(136, y) |   let z := shr(136, y) | ||||||
|   sstore(0, y) |   sstore(0, y) | ||||||
|   sstore(1, z) |   sstore(1, z) | ||||||
|  |   sstore(2, sar(136, 0x801112131415161718191a1b1c1d1e1f20000000000000000000000000000000)) | ||||||
|  |   sstore(3, sar(256, 0x801112131415161718191a1b1c1d1e1f20000000000000000000000000000000)) | ||||||
|  |   sstore(4, sar(136, 0x701112131415161718191a1b1c1d1e1f20000000000000000000000000000000)) | ||||||
|  |   sstore(5, sar(256, 0x701112131415161718191a1b1c1d1e1f20000000000000000000000000000000)) | ||||||
| } | } | ||||||
| // ==== | // ==== | ||||||
| // EVMVersion: >=constantinople | // EVMVersion: >=constantinople | ||||||
| // ---- | // ---- | ||||||
| // Trace: | // Trace: | ||||||
|  | //   INVALID() | ||||||
| // Memory dump: | // Memory dump: | ||||||
| //      0: 0000000000000000000000000000000000000000000000000000000000000001 | //      0: 0000000000000000000000000000000000000000000000000000000000000001 | ||||||
| //     20: 0000000000000000000000000000000000101112131415161718191a1b1c1d1e | //     20: 0000000000000000000000000000000000101112131415161718191a1b1c1d1e | ||||||
|  | |||||||
							
								
								
									
										11
									
								
								test/libyul/ewasmTranslationTests/signextend.yul
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								test/libyul/ewasmTranslationTests/signextend.yul
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | |||||||
|  | { | ||||||
|  |   sstore(0, signextend(0, 0x86)) | ||||||
|  |   sstore(1, signextend(0, 0x76)) | ||||||
|  |   sstore(2, signextend(32, not(0))) | ||||||
|  |   sstore(3, signextend(5, 0xff8844553322)) | ||||||
|  | } | ||||||
|  | // ---- | ||||||
|  | // Trace: | ||||||
|  | //   INVALID() | ||||||
|  | // Memory dump: | ||||||
|  | // Storage dump: | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user