udiv.js (1907B)
1 function test_i32_udiv_n2() { 2 return wasmEvalText( 3 `(module 4 (type (;0;) (func (param i32) (result i32))) 5 (func (;0;) (type 0) (param i32) (result i32) 6 local.get 0 7 i32.const -2 8 i32.div_u) 9 (export "main" (func 0)))` 10 ).exports["main"]; 11 } 12 function test_i32_udiv_n1() { 13 return wasmEvalText( 14 `(module 15 (type (;0;) (func (param i32) (result i32))) 16 (func (;0;) (type 0) (param i32) (result i32) 17 local.get 0 18 i32.const -1 19 i32.div_u) 20 (export "main" (func 0)))` 21 ).exports["main"]; 22 } 23 function test_i32_udiv_p2() { 24 return wasmEvalText( 25 `(module 26 (type (;0;) (func (param i32) (result i32))) 27 (func (;0;) (type 0) (param i32) (result i32) 28 local.get 0 29 i32.const 2 30 i32.div_u) 31 (export "main" (func 0)))` 32 ).exports["main"]; 33 } 34 function test_i32_udiv_p1() { 35 return wasmEvalText( 36 `(module 37 (type (;0;) (func (param i32) (result i32))) 38 (func (;0;) (type 0) (param i32) (result i32) 39 local.get 0 40 i32.const 1 41 i32.div_u) 42 (export "main" (func 0)))` 43 ).exports["main"]; 44 } 45 46 let udiv_p1 = test_i32_udiv_p1(); 47 assertEq(udiv_p1(1), 1); 48 assertEq(udiv_p1(2), 2); 49 assertEq(udiv_p1(0x7fffffff), 0x7fffffff); 50 assertEq(udiv_p1(-1), -1); // results are converted to i32. 51 52 let udiv_p2 = test_i32_udiv_p2(); 53 assertEq(udiv_p2(1), 0); 54 assertEq(udiv_p2(2), 1); 55 assertEq(udiv_p2(0x7fffffff), 0x7fffffff >> 1); 56 assertEq(udiv_p2(-1), 0x7fffffff); // -1 is converted to u32. 57 58 let udiv_n1 = test_i32_udiv_n1(); 59 assertEq(udiv_n1(1), 0); 60 assertEq(udiv_n1(2), 0); 61 assertEq(udiv_n1(0x7fffffff), 0); 62 assertEq(udiv_n1(-1), 1); 63 64 let udiv_n2 = test_i32_udiv_n2(); 65 assertEq(udiv_n2(1), 0); 66 assertEq(udiv_n2(2), 0); 67 assertEq(udiv_n2(0x7fffffff), 0); 68 assertEq(udiv_n2(-1), 1);