diff options
Diffstat (limited to 'testsuite/tests/cps/cps012.cmm')
-rw-r--r-- | testsuite/tests/cps/cps012.cmm | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/testsuite/tests/cps/cps012.cmm b/testsuite/tests/cps/cps012.cmm new file mode 100644 index 0000000000..6d828dca27 --- /dev/null +++ b/testsuite/tests/cps/cps012.cmm @@ -0,0 +1,23 @@ +// A real world example from the RTS +// Should be checked later to see if it is right + +stg_ap_0_fast ("ptr" bits32 fun, "ptr" bits32 arg) { + bits32 _c8; + c6: goto c7; + c7: _c8 = bits32[x]; // TODO: allow I32 or print bits32 + switch [0 .. 71] (bits16[_c8 - 4]) { + case 0,1,2,3,4,5,6,7,8 : { goto c9; } + case 9,10,11,12,13,14,15 : { goto ca; } + case 16,17,18,19,20,21,22,23 : { goto c9; } + case 24 : {goto ca;} + case 25 : {goto c9;} + case 26 : {goto ca;} + case 27 : {goto c9;} + case 28,29,30,31,32 : {goto cb;} + case 33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71 : {goto c9;} + } + c9: jump _c8 (); + cb: R1 = bits32[fun + 4 + 0]; + goto c7; + ca: jump (bits32[arg + 0 * 4]) (); +} |