Index: test/mjsunit/wasm/asm-wasm.js |
diff --git a/test/mjsunit/wasm/asm-wasm.js b/test/mjsunit/wasm/asm-wasm.js |
index 2efb006436a23333c7bf5bb48d92a46022a7d2d5..b7e866eeb8675a021ccc06633d3dfea4f362a176 100644 |
--- a/test/mjsunit/wasm/asm-wasm.js |
+++ b/test/mjsunit/wasm/asm-wasm.js |
@@ -1493,3 +1493,134 @@ assertWasm(1, TestXor); |
assertEquals(0x80000000, wasm.u0x80000000()); |
assertEquals(0x87654321, wasm.u0x87654321()); |
})(); |
+ |
+(function TestSwitchWithBrTable() { |
+ function asmModule() { |
+ "use asm"; |
+ function main(x) { |
+ x = x|0; |
+ switch(x|0) { |
+ case 14: return 14; |
+ case 12: return 12; |
+ case 15: return 15; |
+ case 19: return 19; |
+ case 18: return 18; |
+ case 16: return 16; |
+ default: return -1; |
+ } |
+ return 0; |
+ } |
+ return { |
+ main: main, |
+ }; |
+ } |
+ var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); |
+ assertEquals(12, wasm.main(12)); |
+ assertEquals(14, wasm.main(14)); |
+ assertEquals(15, wasm.main(15)); |
+ assertEquals(16, wasm.main(16)); |
+ assertEquals(18, wasm.main(18)); |
+ assertEquals(19, wasm.main(19)); |
+ assertEquals(-1, wasm.main(21)); |
+})(); |
+ |
+(function TestSwitchWithBalancedTree() { |
+ function asmModule() { |
+ "use asm"; |
+ function main(x) { |
+ x = x|0; |
+ switch(x|0) { |
+ case 5: return 5; |
+ case 1: return 1; |
+ case 6: return 6; |
+ case 9: return 9; |
+ case -4: return -4; |
+ } |
+ return 0; |
+ } |
+ return { |
+ main: main, |
+ }; |
+ } |
+ var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); |
+ assertEquals(-4, wasm.main(-4)); |
+ assertEquals(1, wasm.main(1)); |
+ assertEquals(5, wasm.main(5)); |
+ assertEquals(6, wasm.main(6)); |
+ assertEquals(9, wasm.main(9)); |
+ assertEquals(0, wasm.main(11)); |
+})(); |
+ |
+(function TestSwitchHybrid() { |
+ function asmModule() { |
+ "use asm"; |
+ function main(x) { |
+ x = x|0; |
+ switch(x|0) { |
+ case 1: return 1; |
+ case 2: return 2; |
+ case 3: return 3; |
+ case 4: return 4; |
+ case 7: return 7; |
+ case 10: return 10; |
+ case 11: return 11; |
+ case 12: return 12; |
+ case 13: return 13; |
+ case 16: return 16; |
+ default: return -1; |
+ } |
+ return 0; |
+ } |
+ return { |
+ main: main, |
+ }; |
+ } |
+ var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); |
+ assertEquals(1, wasm.main(1)); |
+ assertEquals(2, wasm.main(2)); |
+ assertEquals(3, wasm.main(3)); |
+ assertEquals(4, wasm.main(4)); |
+ assertEquals(7, wasm.main(7)); |
+ assertEquals(10, wasm.main(10)); |
+ assertEquals(11, wasm.main(11)); |
+ assertEquals(12, wasm.main(12)); |
+ assertEquals(13, wasm.main(13)); |
+ assertEquals(16, wasm.main(16)); |
+ assertEquals(-1, wasm.main(20)); |
+})(); |
+ |
+(function TestSwitchWithDefaultOnly() { |
+ function asmModule() { |
+ "use asm"; |
+ function main(x) { |
+ x = x|0; |
+ switch(x|0) { |
+ default: return -10; |
+ } |
+ return 0; |
+ } |
+ return { |
+ main: main, |
+ }; |
+ } |
+ var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); |
+ assertEquals(-10, wasm.main(2)); |
+ assertEquals(-10, wasm.main(54)); |
+})(); |
+ |
+(function TestEmptySwitch() { |
+ function asmModule() { |
+ "use asm"; |
+ function main(x) { |
+ x = x|0; |
+ switch(x|0) { |
+ } |
+ return 73; |
+ } |
+ return { |
+ main: main, |
+ }; |
+ } |
+ var wasm = Wasm.instantiateModuleFromAsm(asmModule.toString()); |
+ assertEquals(73, wasm.main(7)); |
+})(); |