fix generated assembly
authorJacob Lifshay <programmerjake@gmail.com>
Mon, 28 Nov 2022 07:58:13 +0000 (23:58 -0800)
committerJacob Lifshay <programmerjake@gmail.com>
Mon, 28 Nov 2022 07:58:13 +0000 (23:58 -0800)
src/bigint_presentation_code/_tests/test_toom_cook.py

index 42ab769e037207982d0b83fc77ce50d2fe023656..eadc0809afa4edb60705021033ef54affbae2489 100644 (file)
@@ -1146,447 +1146,298 @@ class TestToomCook(unittest.TestCase):
         gen_asm_state = GenAsmState(assigned_registers)
         fn.gen_asm(gen_asm_state)
         self.assertEqual(gen_asm_state.output, [
-            'or 42, 3, 3',
+            'or 45, 3, 3',
             'setvl 0, 0, 4, 0, 1, 1',
-            'or 7, 42, 42',
+            'or 7, 45, 45',
             'setvl 0, 0, 4, 0, 1, 1',
             'sv.ld *3, 64(7)',
             'setvl 0, 0, 4, 0, 1, 1',
             'sv.or *8, *3, *3',
             'setvl 0, 0, 4, 0, 1, 1',
-            'or 7, 42, 42',
+            'or 7, 45, 45',
             'setvl 0, 0, 4, 0, 1, 1',
             'sv.ld *3, 96(7)',
             'setvl 0, 0, 4, 0, 1, 1',
-            'sv.or *14, *3, *3',
+            'sv.or *18, *3, *3',
             'setvl 0, 0, 4, 0, 1, 1',
             'setvl 0, 0, 4, 0, 1, 1',
             'sv.or *3, *8, *8',
             'setvl 0, 0, 4, 0, 1, 1',
             'sv.or *9, *3, *3',
             'or 3, 9, 9',
-            'or 5, 10, 10',
-            'or 8, 11, 11',
+            'or 8, 10, 10',
+            'or 6, 11, 11',
             'or 7, 12, 12',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'or 4, 5, 5',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'sv.or *5, *3, *3',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'or 3, 8, 8',
-            'or 4, 7, 7',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'sv.or *8, *3, *3',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'sv.or *3, *5, *5',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'sv.or *5, *3, *3',
-            'or 4, 5, 5',
-            'or 7, 6, 6',
-            'addi 3, 0, 0',
-            'or 6, 3, 3',
             'setvl 0, 0, 3, 0, 1, 1',
-            'or 3, 4, 4',
-            'or 4, 7, 7',
+            'or 4, 8, 8',
             'or 5, 6, 6',
             'setvl 0, 0, 3, 0, 1, 1',
             'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *24, *3, *3',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'sv.or *3, *8, *8',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'sv.or *5, *3, *3',
-            'or 4, 5, 5',
-            'or 7, 6, 6',
-            'addi 3, 0, 0',
-            'or 6, 3, 3',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 3, 4, 4',
-            'or 4, 7, 7',
-            'or 5, 6, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *30, *3, *3',
+            'sv.or/mrr *4, *3, *3',
             'setvl 0, 0, 3, 0, 1, 1',
-            'addic 0, 0, 0',
+            'or 3, 7, 7',
             'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *9, *24, *24',
+            'or 46, 3, 3',
             'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *6, *30, *30',
             'setvl 0, 0, 3, 0, 1, 1',
-            'sv.adde *3, *9, *6',
+            'sv.or *3, *4, *4',
             'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *39, *3, *3',
+            'sv.or/mrr *5, *3, *3',
+            'or 4, 5, 5',
+            'or 9, 6, 6',
+            'or 8, 7, 7',
+            'addi 3, 0, 0',
+            'or 7, 3, 3',
             'setvl 0, 0, 4, 0, 1, 1',
+            'or 3, 4, 4',
+            'or 4, 9, 9',
+            'or 5, 8, 8',
+            'or 6, 7, 7',
             'setvl 0, 0, 4, 0, 1, 1',
-            'sv.or *3, *14, *14',
             'setvl 0, 0, 4, 0, 1, 1',
-            'sv.or *9, *3, *3',
-            'or 3, 9, 9',
-            'or 5, 10, 10',
-            'or 8, 11, 11',
-            'or 7, 12, 12',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'or 4, 5, 5',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'sv.or *5, *3, *3',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'or 3, 8, 8',
-            'or 4, 7, 7',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'sv.or *8, *3, *3',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'sv.or *3, *5, *5',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'sv.or *5, *3, *3',
-            'or 4, 5, 5',
-            'or 7, 6, 6',
+            'sv.or *35, *3, *3',
+            'setvl 0, 0, 1, 0, 1, 1',
+            'or 3, 46, 46',
+            'setvl 0, 0, 1, 0, 1, 1',
+            'or 4, 3, 3',
             'addi 3, 0, 0',
-            'or 6, 3, 3',
-            'setvl 0, 0, 3, 0, 1, 1',
+            'or 7, 3, 3',
+            'setvl 0, 0, 4, 0, 1, 1',
             'or 3, 4, 4',
             'or 4, 7, 7',
-            'or 5, 6, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *14, *3, *3',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'sv.or *3, *8, *8',
-            'setvl 0, 0, 2, 0, 1, 1',
-            'sv.or *5, *3, *3',
-            'or 4, 5, 5',
-            'or 7, 6, 6',
-            'addi 3, 0, 0',
-            'or 6, 3, 3',
+            'or 5, 7, 7',
+            'or 6, 7, 7',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'addic 0, 0, 0',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'sv.or *14, *35, *35',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'sv.or *7, *3, *3',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'sv.adde *3, *14, *7',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'sv.or *40, *3, *3',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'sv.or *3, *18, *18',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'sv.or *9, *3, *3',
+            'or 3, 9, 9',
+            'or 8, 10, 10',
+            'or 6, 11, 11',
+            'or 7, 12, 12',
             'setvl 0, 0, 3, 0, 1, 1',
-            'or 3, 4, 4',
-            'or 4, 7, 7',
+            'or 4, 8, 8',
             'or 5, 6, 6',
             'setvl 0, 0, 3, 0, 1, 1',
             'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *33, *3, *3',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'addic 0, 0, 0',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *9, *14, *14',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *6, *33, *33',
+            'sv.or/mrr *4, *3, *3',
             'setvl 0, 0, 3, 0, 1, 1',
-            'sv.adde *3, *9, *6',
+            'or 3, 7, 7',
             'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *36, *3, *3',
+            'or 47, 3, 3',
             'setvl 0, 0, 3, 0, 1, 1',
             'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *3, *14, *14',
+            'sv.or *3, *4, *4',
             'setvl 0, 0, 3, 0, 1, 1',
             'sv.or/mrr *5, *3, *3',
             'or 4, 5, 5',
-            'or 14, 6, 6',
-            'or 23, 7, 7',
-            'addi 3, 0, 0',
-            'or 22, 3, 3',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'addi 3, 0, 0',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *8, *24, *24',
-            'or 7, 4, 4',
-            'or 6, 22, 22',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.maddedu *3, *8, 7, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 19, 6, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 21, 3, 3',
-            'or 12, 4, 4',
-            'or 11, 5, 5',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *8, *24, *24',
-            'or 7, 14, 14',
-            'or 6, 22, 22',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.maddedu *3, *8, 7, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 18, 6, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 17, 3, 3',
-            'or 16, 4, 4',
-            'or 15, 5, 5',
-            'addi 3, 0, 0',
-            'or 8, 3, 3',
+            'or 9, 6, 6',
+            'or 8, 7, 7',
             'addi 3, 0, 0',
-            'or 14, 3, 3',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'or 3, 12, 12',
-            'or 4, 11, 11',
-            'or 5, 19, 19',
-            'or 6, 8, 8',
-            'or 7, 8, 8',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'sv.or *8, *3, *3',
-            'or 3, 17, 17',
-            'or 4, 16, 16',
-            'or 5, 15, 15',
-            'or 6, 18, 18',
-            'or 7, 14, 14',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'addic 0, 0, 0',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'sv.or *14, *8, *8',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'sv.or *8, *3, *3',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'sv.adde *3, *14, *8',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'or 20, 3, 3',
-            'or 19, 4, 4',
-            'or 18, 5, 5',
-            'or 17, 6, 6',
-            'or 16, 7, 7',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *8, *24, *24',
-            'or 7, 23, 23',
-            'or 6, 22, 22',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.maddedu *3, *8, 7, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 15, 6, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 14, 3, 3',
-            'or 12, 4, 4',
-            'or 11, 5, 5',
+            'or 7, 3, 3',
             'setvl 0, 0, 4, 0, 1, 1',
-            'or 3, 19, 19',
-            'or 4, 18, 18',
-            'or 5, 17, 17',
-            'or 6, 16, 16',
+            'or 3, 4, 4',
+            'or 4, 9, 9',
+            'or 5, 8, 8',
+            'or 6, 7, 7',
             'setvl 0, 0, 4, 0, 1, 1',
             'setvl 0, 0, 4, 0, 1, 1',
-            'sv.or *7, *3, *3',
-            'or 3, 14, 14',
-            'or 4, 12, 12',
-            'or 5, 11, 11',
-            'or 6, 15, 15',
+            'sv.or *18, *3, *3',
+            'setvl 0, 0, 1, 0, 1, 1',
+            'or 3, 47, 47',
+            'setvl 0, 0, 1, 0, 1, 1',
+            'or 4, 3, 3',
+            'addi 3, 0, 0',
+            'or 7, 3, 3',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'or 3, 4, 4',
+            'or 4, 7, 7',
+            'or 5, 7, 7',
+            'or 6, 7, 7',
+            'setvl 0, 0, 4, 0, 1, 1',
             'setvl 0, 0, 4, 0, 1, 1',
             'setvl 0, 0, 4, 0, 1, 1',
             'addic 0, 0, 0',
             'setvl 0, 0, 4, 0, 1, 1',
-            'sv.or *14, *7, *7',
+            'sv.or *14, *18, *18',
             'setvl 0, 0, 4, 0, 1, 1',
             'sv.or *7, *3, *3',
             'setvl 0, 0, 4, 0, 1, 1',
             'sv.adde *3, *14, *7',
             'setvl 0, 0, 4, 0, 1, 1',
+            'sv.or *29, *3, *3',
             'setvl 0, 0, 4, 0, 1, 1',
             'setvl 0, 0, 4, 0, 1, 1',
-            'or 12, 3, 3',
-            'or 11, 4, 4',
-            'or 10, 5, 5',
-            'or 9, 6, 6',
-            'setvl 0, 0, 6, 0, 1, 1',
-            'or 3, 21, 21',
-            'or 4, 20, 20',
-            'or 5, 12, 12',
-            'or 6, 11, 11',
-            'or 7, 10, 10',
-            'or 8, 9, 9',
-            'setvl 0, 0, 6, 0, 1, 1',
-            'setvl 0, 0, 6, 0, 1, 1',
-            'sv.or *24, *3, *3',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *3, *36, *36',
-            'setvl 0, 0, 3, 0, 1, 1',
+            'sv.or *3, *18, *18',
+            'setvl 0, 0, 4, 0, 1, 1',
             'sv.or/mrr *5, *3, *3',
             'or 4, 5, 5',
-            'or 14, 6, 6',
-            'or 23, 7, 7',
-            'addi 3, 0, 0',
-            'or 22, 3, 3',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'addi 3, 0, 0',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *8, *39, *39',
-            'or 7, 4, 4',
-            'or 6, 22, 22',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.maddedu *3, *8, 7, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 19, 6, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 21, 3, 3',
-            'or 12, 4, 4',
-            'or 11, 5, 5',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *8, *39, *39',
-            'or 7, 14, 14',
-            'or 6, 22, 22',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.maddedu *3, *8, 7, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 18, 6, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 17, 3, 3',
-            'or 16, 4, 4',
-            'or 15, 5, 5',
-            'addi 3, 0, 0',
-            'or 8, 3, 3',
+            'or 9, 6, 6',
+            'or 34, 7, 7',
+            'or 33, 8, 8',
             'addi 3, 0, 0',
-            'or 14, 3, 3',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'or 3, 12, 12',
-            'or 4, 11, 11',
-            'or 5, 19, 19',
-            'or 6, 8, 8',
-            'or 7, 8, 8',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'sv.or *8, *3, *3',
-            'or 3, 17, 17',
-            'or 4, 16, 16',
-            'or 5, 15, 15',
-            'or 6, 18, 18',
-            'or 7, 14, 14',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'addic 0, 0, 0',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'sv.or *14, *8, *8',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'sv.or *8, *3, *3',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'sv.adde *3, *14, *8',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'or 20, 3, 3',
-            'or 19, 4, 4',
-            'or 18, 5, 5',
-            'or 17, 6, 6',
-            'or 16, 7, 7',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *8, *39, *39',
-            'or 7, 23, 23',
-            'or 6, 22, 22',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.maddedu *3, *8, 7, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 15, 6, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 14, 3, 3',
-            'or 12, 4, 4',
-            'or 11, 5, 5',
+            'or 28, 3, 3',
             'setvl 0, 0, 4, 0, 1, 1',
-            'or 3, 19, 19',
-            'or 4, 18, 18',
-            'or 5, 17, 17',
-            'or 6, 16, 16',
+            'addi 3, 0, 0',
             'setvl 0, 0, 4, 0, 1, 1',
+            'sv.or *14, *35, *35',
+            'or 8, 4, 4',
+            'or 7, 28, 28',
             'setvl 0, 0, 4, 0, 1, 1',
-            'sv.or *7, *3, *3',
-            'or 3, 14, 14',
-            'or 4, 12, 12',
-            'or 5, 11, 11',
-            'or 6, 15, 15',
+            'sv.maddedu *3, *14, 8, 7',
             'setvl 0, 0, 4, 0, 1, 1',
+            'or 24, 7, 7',
             'setvl 0, 0, 4, 0, 1, 1',
-            'addic 0, 0, 0',
             'setvl 0, 0, 4, 0, 1, 1',
-            'sv.or *14, *7, *7',
+            'or 27, 3, 3',
+            'or 23, 4, 4',
+            'or 19, 5, 5',
+            'or 18, 6, 6',
             'setvl 0, 0, 4, 0, 1, 1',
-            'sv.or *7, *3, *3',
+            'sv.or *14, *35, *35',
+            'or 8, 9, 9',
+            'or 7, 28, 28',
             'setvl 0, 0, 4, 0, 1, 1',
-            'sv.adde *3, *14, *7',
+            'sv.maddedu *3, *14, 8, 7',
             'setvl 0, 0, 4, 0, 1, 1',
+            'or 22, 7, 7',
             'setvl 0, 0, 4, 0, 1, 1',
             'setvl 0, 0, 4, 0, 1, 1',
-            'or 12, 3, 3',
-            'or 11, 4, 4',
-            'or 10, 5, 5',
-            'or 9, 6, 6',
+            'or 21, 3, 3',
+            'or 20, 4, 4',
+            'or 12, 5, 5',
+            'or 11, 6, 6',
+            'addi 3, 0, 0',
+            'or 10, 3, 3',
+            'addi 3, 0, 0',
+            'or 9, 3, 3',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'or 3, 23, 23',
+            'or 4, 19, 19',
+            'or 5, 18, 18',
+            'or 6, 24, 24',
+            'or 7, 10, 10',
+            'or 8, 10, 10',
+            'setvl 0, 0, 6, 0, 1, 1',
             'setvl 0, 0, 6, 0, 1, 1',
+            'sv.or *14, *3, *3',
             'or 3, 21, 21',
             'or 4, 20, 20',
             'or 5, 12, 12',
             'or 6, 11, 11',
-            'or 7, 10, 10',
+            'or 7, 22, 22',
             'or 8, 9, 9',
             'setvl 0, 0, 6, 0, 1, 1',
             'setvl 0, 0, 6, 0, 1, 1',
-            'sv.or *36, *3, *3',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *3, *33, *33',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or/mrr *5, *3, *3',
-            'or 4, 5, 5',
-            'or 14, 6, 6',
-            'or 23, 7, 7',
+            'addic 0, 0, 0',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'sv.or *20, *14, *14',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'sv.or *14, *3, *3',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'sv.adde *3, *20, *14',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'or 26, 3, 3',
+            'or 25, 4, 4',
+            'or 24, 5, 5',
+            'or 23, 6, 6',
+            'or 19, 7, 7',
+            'or 18, 8, 8',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'sv.or *14, *35, *35',
+            'or 8, 34, 34',
+            'or 7, 28, 28',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'sv.maddedu *3, *14, 8, 7',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'or 22, 7, 7',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'or 21, 3, 3',
+            'or 20, 4, 4',
+            'or 12, 5, 5',
+            'or 11, 6, 6',
             'addi 3, 0, 0',
-            'or 22, 3, 3',
-            'setvl 0, 0, 3, 0, 1, 1',
+            'or 10, 3, 3',
             'addi 3, 0, 0',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *8, *30, *30',
-            'or 7, 4, 4',
-            'or 6, 22, 22',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.maddedu *3, *8, 7, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 19, 6, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 21, 3, 3',
-            'or 12, 4, 4',
-            'or 11, 5, 5',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *8, *30, *30',
-            'or 7, 14, 14',
-            'or 6, 22, 22',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.maddedu *3, *8, 7, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 18, 6, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'setvl 0, 0, 3, 0, 1, 1',
+            'or 9, 3, 3',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'or 3, 25, 25',
+            'or 4, 24, 24',
+            'or 5, 23, 23',
+            'or 6, 19, 19',
+            'or 7, 18, 18',
+            'or 8, 10, 10',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'sv.or *14, *3, *3',
+            'or 3, 21, 21',
+            'or 4, 20, 20',
+            'or 5, 12, 12',
+            'or 6, 11, 11',
+            'or 7, 22, 22',
+            'or 8, 9, 9',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'addic 0, 0, 0',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'sv.or *20, *14, *14',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'sv.or *14, *3, *3',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'sv.adde *3, *20, *14',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'or 20, 3, 3',
+            'or 19, 4, 4',
+            'or 12, 5, 5',
+            'or 11, 6, 6',
+            'or 10, 7, 7',
+            'or 9, 8, 8',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'sv.or *14, *35, *35',
+            'or 8, 33, 33',
+            'or 7, 28, 28',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'sv.maddedu *3, *14, 8, 7',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'or 18, 7, 7',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'setvl 0, 0, 4, 0, 1, 1',
             'or 17, 3, 3',
             'or 16, 4, 4',
             'or 15, 5, 5',
-            'addi 3, 0, 0',
-            'or 8, 3, 3',
-            'addi 3, 0, 0',
-            'or 14, 3, 3',
+            'or 14, 6, 6',
             'setvl 0, 0, 5, 0, 1, 1',
-            'or 3, 12, 12',
-            'or 4, 11, 11',
-            'or 5, 19, 19',
-            'or 6, 8, 8',
-            'or 7, 8, 8',
+            'or 3, 19, 19',
+            'or 4, 12, 12',
+            'or 5, 11, 11',
+            'or 6, 10, 10',
+            'or 7, 9, 9',
             'setvl 0, 0, 5, 0, 1, 1',
             'setvl 0, 0, 5, 0, 1, 1',
             'sv.or *8, *3, *3',
             'or 3, 17, 17',
             'or 4, 16, 16',
             'or 5, 15, 15',
-            'or 6, 18, 18',
-            'or 7, 14, 14',
+            'or 6, 14, 14',
+            'or 7, 18, 18',
             'setvl 0, 0, 5, 0, 1, 1',
             'setvl 0, 0, 5, 0, 1, 1',
             'addic 0, 0, 0',
@@ -1599,241 +1450,404 @@ class TestToomCook(unittest.TestCase):
             'setvl 0, 0, 5, 0, 1, 1',
             'setvl 0, 0, 5, 0, 1, 1',
             'setvl 0, 0, 5, 0, 1, 1',
-            'or 20, 3, 3',
-            'or 19, 4, 4',
-            'or 18, 5, 5',
-            'or 17, 6, 6',
-            'or 16, 7, 7',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.or *8, *30, *30',
-            'or 7, 23, 23',
-            'or 6, 22, 22',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'sv.maddedu *3, *8, 7, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 15, 6, 6',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'setvl 0, 0, 3, 0, 1, 1',
-            'or 14, 3, 3',
-            'or 12, 4, 4',
-            'or 11, 5, 5',
-            'setvl 0, 0, 4, 0, 1, 1',
-            'or 3, 19, 19',
-            'or 4, 18, 18',
-            'or 5, 17, 17',
+            'or 16, 3, 3',
+            'or 15, 4, 4',
+            'or 14, 5, 5',
+            'or 12, 6, 6',
+            'or 11, 7, 7',
+            'setvl 0, 0, 8, 0, 1, 1',
+            'or 3, 27, 27',
+            'or 4, 26, 26',
+            'or 5, 20, 20',
             'or 6, 16, 16',
+            'or 7, 15, 15',
+            'or 8, 14, 14',
+            'or 9, 12, 12',
+            'or 10, 11, 11',
+            'setvl 0, 0, 8, 0, 1, 1',
+            'setvl 0, 0, 8, 0, 1, 1',
+            'sv.or *21, *3, *3',
             'setvl 0, 0, 4, 0, 1, 1',
             'setvl 0, 0, 4, 0, 1, 1',
-            'sv.or *7, *3, *3',
-            'or 3, 14, 14',
-            'or 4, 12, 12',
-            'or 5, 11, 11',
-            'or 6, 15, 15',
+            'sv.or *3, *29, *29',
             'setvl 0, 0, 4, 0, 1, 1',
+            'sv.or/mrr *5, *3, *3',
+            'or 4, 5, 5',
+            'or 9, 6, 6',
+            'or 39, 7, 7',
+            'or 38, 8, 8',
+            'addi 3, 0, 0',
+            'or 37, 3, 3',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'addi 3, 0, 0',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'sv.or *14, *40, *40',
+            'or 8, 4, 4',
+            'or 7, 37, 37',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'sv.maddedu *3, *14, 8, 7',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'or 32, 7, 7',
             'setvl 0, 0, 4, 0, 1, 1',
-            'addic 0, 0, 0',
             'setvl 0, 0, 4, 0, 1, 1',
-            'sv.or *14, *7, *7',
+            'or 36, 3, 3',
+            'or 31, 4, 4',
+            'or 19, 5, 5',
+            'or 18, 6, 6',
             'setvl 0, 0, 4, 0, 1, 1',
-            'sv.or *7, *3, *3',
+            'sv.or *14, *40, *40',
+            'or 8, 9, 9',
+            'or 7, 37, 37',
             'setvl 0, 0, 4, 0, 1, 1',
-            'sv.adde *3, *14, *7',
+            'sv.maddedu *3, *14, 8, 7',
             'setvl 0, 0, 4, 0, 1, 1',
+            'or 30, 7, 7',
             'setvl 0, 0, 4, 0, 1, 1',
             'setvl 0, 0, 4, 0, 1, 1',
-            'or 12, 3, 3',
-            'or 11, 4, 4',
-            'or 10, 5, 5',
-            'or 9, 6, 6',
+            'or 29, 3, 3',
+            'or 20, 4, 4',
+            'or 12, 5, 5',
+            'or 11, 6, 6',
+            'addi 3, 0, 0',
+            'or 10, 3, 3',
+            'addi 3, 0, 0',
+            'or 9, 3, 3',
             'setvl 0, 0, 6, 0, 1, 1',
-            'or 3, 21, 21',
+            'or 3, 31, 31',
+            'or 4, 19, 19',
+            'or 5, 18, 18',
+            'or 6, 32, 32',
+            'or 7, 10, 10',
+            'or 8, 10, 10',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'sv.or *14, *3, *3',
+            'or 3, 29, 29',
             'or 4, 20, 20',
             'or 5, 12, 12',
             'or 6, 11, 11',
-            'or 7, 10, 10',
+            'or 7, 30, 30',
             'or 8, 9, 9',
             'setvl 0, 0, 6, 0, 1, 1',
             'setvl 0, 0, 6, 0, 1, 1',
-            'sv.or *30, *3, *3',
+            'addic 0, 0, 0',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'sv.or *29, *14, *14',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'sv.or *14, *3, *3',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'sv.adde *3, *29, *14',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'or 35, 3, 3',
+            'or 33, 4, 4',
+            'or 32, 5, 5',
+            'or 31, 6, 6',
+            'or 19, 7, 7',
+            'or 18, 8, 8',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'sv.or *14, *40, *40',
+            'or 8, 39, 39',
+            'or 7, 37, 37',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'sv.maddedu *3, *14, 8, 7',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'or 30, 7, 7',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'or 29, 3, 3',
+            'or 20, 4, 4',
+            'or 12, 5, 5',
+            'or 11, 6, 6',
+            'addi 3, 0, 0',
+            'or 10, 3, 3',
+            'addi 3, 0, 0',
+            'or 9, 3, 3',
             'setvl 0, 0, 6, 0, 1, 1',
+            'or 3, 33, 33',
+            'or 4, 32, 32',
+            'or 5, 31, 31',
+            'or 6, 19, 19',
+            'or 7, 18, 18',
+            'or 8, 10, 10',
             'setvl 0, 0, 6, 0, 1, 1',
-            'sv.or *3, *24, *24',
             'setvl 0, 0, 6, 0, 1, 1',
             'sv.or *14, *3, *3',
-            'or 4, 14, 14',
-            'or 11, 15, 15',
-            'or 10, 16, 16',
-            'or 9, 17, 17',
-            'or 8, 18, 18',
-            'or 3, 19, 19',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'or 3, 4, 4',
-            'or 4, 11, 11',
-            'or 5, 10, 10',
-            'or 6, 9, 9',
-            'or 7, 8, 8',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'sv.or *25, *3, *3',
+            'or 3, 29, 29',
+            'or 4, 20, 20',
+            'or 5, 12, 12',
+            'or 6, 11, 11',
+            'or 7, 30, 30',
+            'or 8, 9, 9',
             'setvl 0, 0, 6, 0, 1, 1',
             'setvl 0, 0, 6, 0, 1, 1',
-            'sv.or *3, *36, *36',
+            'addic 0, 0, 0',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'sv.or *29, *14, *14',
             'setvl 0, 0, 6, 0, 1, 1',
             'sv.or *14, *3, *3',
-            'or 4, 14, 14',
-            'or 11, 15, 15',
-            'or 10, 16, 16',
-            'or 9, 17, 17',
-            'or 8, 18, 18',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'sv.adde *3, *29, *14',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'setvl 0, 0, 6, 0, 1, 1',
+            'or 20, 3, 3',
+            'or 19, 4, 4',
+            'or 12, 5, 5',
+            'or 11, 6, 6',
+            'or 10, 7, 7',
+            'or 9, 8, 8',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'sv.or *14, *40, *40',
+            'or 8, 38, 38',
+            'or 7, 37, 37',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'sv.maddedu *3, *14, 8, 7',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'or 18, 7, 7',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'setvl 0, 0, 4, 0, 1, 1',
+            'or 17, 3, 3',
+            'or 16, 4, 4',
+            'or 15, 5, 5',
+            'or 14, 6, 6',
+            'setvl 0, 0, 5, 0, 1, 1',
             'or 3, 19, 19',
+            'or 4, 12, 12',
+            'or 5, 11, 11',
+            'or 6, 10, 10',
+            'or 7, 9, 9',
             'setvl 0, 0, 5, 0, 1, 1',
-            'or 3, 4, 4',
-            'or 4, 11, 11',
-            'or 5, 10, 10',
-            'or 6, 9, 9',
-            'or 7, 8, 8',
             'setvl 0, 0, 5, 0, 1, 1',
+            'sv.or *8, *3, *3',
+            'or 3, 17, 17',
+            'or 4, 16, 16',
+            'or 5, 15, 15',
+            'or 6, 14, 14',
+            'or 7, 18, 18',
             'setvl 0, 0, 5, 0, 1, 1',
             'setvl 0, 0, 5, 0, 1, 1',
-            'subfc 0, 0, 0',
+            'addic 0, 0, 0',
             'setvl 0, 0, 5, 0, 1, 1',
-            'sv.or *14, *25, *25',
+            'sv.or *14, *8, *8',
             'setvl 0, 0, 5, 0, 1, 1',
             'sv.or *8, *3, *3',
             'setvl 0, 0, 5, 0, 1, 1',
-            'sv.subfe *3, *14, *8',
+            'sv.adde *3, *14, *8',
             'setvl 0, 0, 5, 0, 1, 1',
-            'sv.or *20, *3, *3',
-            'setvl 0, 0, 6, 0, 1, 1',
-            'setvl 0, 0, 6, 0, 1, 1',
-            'sv.or *3, *30, *30',
-            'setvl 0, 0, 6, 0, 1, 1',
-            'sv.or *14, *3, *3',
-            'or 4, 14, 14',
-            'or 11, 15, 15',
-            'or 10, 16, 16',
-            'or 9, 17, 17',
-            'or 8, 18, 18',
-            'or 3, 19, 19',
             'setvl 0, 0, 5, 0, 1, 1',
+            'setvl 0, 0, 5, 0, 1, 1',
+            'or 16, 3, 3',
+            'or 15, 4, 4',
+            'or 14, 5, 5',
+            'or 12, 6, 6',
+            'or 11, 7, 7',
+            'setvl 0, 0, 8, 0, 1, 1',
+            'or 3, 36, 36',
+            'or 4, 35, 35',
+            'or 5, 20, 20',
+            'or 6, 16, 16',
+            'or 7, 15, 15',
+            'or 8, 14, 14',
+            'or 9, 12, 12',
+            'or 10, 11, 11',
+            'setvl 0, 0, 8, 0, 1, 1',
+            'setvl 0, 0, 8, 0, 1, 1',
+            'sv.or *37, *3, *3',
+            'setvl 0, 0, 1, 0, 1, 1',
+            'or 3, 47, 47',
+            'setvl 0, 0, 1, 0, 1, 1',
+            'or 5, 3, 3',
+            'addi 3, 0, 0',
+            'or 4, 3, 3',
+            'setvl 0, 0, 1, 0, 1, 1',
+            'addi 3, 0, 0',
+            'or 6, 46, 46',
+            'setvl 0, 0, 1, 0, 1, 1',
+            'sv.maddedu *3, *6, 5, 4',
+            'or 5, 4, 4',
+            'setvl 0, 0, 1, 0, 1, 1',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'or 4, 5, 5',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'sv.or *35, *3, *3',
+            'setvl 0, 0, 8, 0, 1, 1',
+            'setvl 0, 0, 8, 0, 1, 1',
+            'sv.or *3, *21, *21',
+            'setvl 0, 0, 8, 0, 1, 1',
+            'sv.or *17, *3, *3',
+            'or 4, 17, 17',
+            'or 16, 18, 18',
+            'or 15, 19, 19',
+            'or 14, 20, 20',
+            'or 12, 21, 21',
+            'or 11, 22, 22',
+            'or 10, 23, 23',
+            'or 3, 24, 24',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'or 3, 4, 4',
+            'or 4, 16, 16',
+            'or 5, 15, 15',
+            'or 6, 14, 14',
+            'or 7, 12, 12',
+            'or 8, 11, 11',
+            'or 9, 10, 10',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'sv.or *28, *3, *3',
+            'setvl 0, 0, 8, 0, 1, 1',
+            'setvl 0, 0, 8, 0, 1, 1',
+            'sv.or *3, *37, *37',
+            'setvl 0, 0, 8, 0, 1, 1',
+            'sv.or *17, *3, *3',
+            'or 4, 17, 17',
+            'or 16, 18, 18',
+            'or 15, 19, 19',
+            'or 14, 20, 20',
+            'or 12, 21, 21',
+            'or 11, 22, 22',
+            'or 10, 23, 23',
+            'or 3, 24, 24',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'or 3, 4, 4',
+            'or 4, 16, 16',
+            'or 5, 15, 15',
+            'or 6, 14, 14',
+            'or 7, 12, 12',
+            'or 8, 11, 11',
+            'or 9, 10, 10',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'subfc 0, 0, 0',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'sv.or *21, *28, *28',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'sv.or *14, *3, *3',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'sv.subfe *3, *21, *14',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'sv.or *14, *3, *3',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'sv.or *3, *35, *35',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'sv.or *5, *3, *3',
+            'or 4, 5, 5',
+            'or 11, 6, 6',
+            'addi 3, 0, 0',
+            'or 10, 3, 3',
+            'setvl 0, 0, 7, 0, 1, 1',
             'or 3, 4, 4',
             'or 4, 11, 11',
             'or 5, 10, 10',
-            'or 6, 9, 9',
-            'or 7, 8, 8',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'sv.or *30, *3, *3',
-            'setvl 0, 0, 5, 0, 1, 1',
+            'or 6, 10, 10',
+            'or 7, 10, 10',
+            'or 8, 10, 10',
+            'or 9, 10, 10',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'setvl 0, 0, 7, 0, 1, 1',
             'subfc 0, 0, 0',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'sv.or *21, *3, *3',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'sv.subfe *3, *21, *14',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'sv.or *14, *3, *3',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'sv.or *3, *28, *28',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'or 25, 3, 3',
+            'or 24, 4, 4',
+            'or 23, 5, 5',
+            'or 22, 6, 6',
+            'or 21, 7, 7',
+            'or 12, 8, 8',
+            'or 11, 9, 9',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'sv.or *3, *14, *14',
+            'setvl 0, 0, 7, 0, 1, 1',
+            'sv.or/mrr *4, *3, *3',
+            'or 18, 4, 4',
+            'or 17, 5, 5',
+            'or 16, 6, 6',
+            'or 15, 7, 7',
+            'or 14, 8, 8',
+            'or 3, 9, 9',
+            'or 3, 10, 10',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'sv.or *3, *35, *35',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'or 20, 3, 3',
+            'or 19, 4, 4',
+            'addi 3, 0, 0',
+            'addi 3, 0, 0',
+            'or 8, 3, 3',
             'setvl 0, 0, 5, 0, 1, 1',
-            'sv.or *14, *30, *30',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'sv.or *8, *20, *20',
-            'setvl 0, 0, 5, 0, 1, 1',
-            'sv.subfe *3, *14, *8',
+            'or 3, 22, 22',
+            'or 4, 21, 21',
+            'or 5, 12, 12',
+            'or 6, 11, 11',
+            'or 7, 8, 8',
             'setvl 0, 0, 5, 0, 1, 1',
-            'sv.or *16, *3, *3',
             'setvl 0, 0, 5, 0, 1, 1',
+            'sv.or *8, *3, *3',
+            'or 3, 18, 18',
+            'or 4, 17, 17',
+            'or 5, 16, 16',
+            'or 6, 15, 15',
+            'or 7, 14, 14',
             'setvl 0, 0, 5, 0, 1, 1',
-            'sv.or *3, *25, *25',
             'setvl 0, 0, 5, 0, 1, 1',
-            'or 29, 3, 3',
-            'or 28, 4, 4',
-            'or 8, 5, 5',
-            'or 15, 6, 6',
-            'or 14, 7, 7',
+            'addic 0, 0, 0',
             'setvl 0, 0, 5, 0, 1, 1',
+            'sv.or *14, *8, *8',
             'setvl 0, 0, 5, 0, 1, 1',
-            'sv.or *3, *16, *16',
+            'sv.or *8, *3, *3',
             'setvl 0, 0, 5, 0, 1, 1',
-            'or 24, 3, 3',
-            'or 23, 4, 4',
-            'or 22, 5, 5',
-            'or 21, 6, 6',
-            'or 20, 7, 7',
+            'sv.adde *3, *14, *8',
             'setvl 0, 0, 5, 0, 1, 1',
             'setvl 0, 0, 5, 0, 1, 1',
-            'sv.or *3, *30, *30',
             'setvl 0, 0, 5, 0, 1, 1',
-            'or 27, 3, 3',
-            'or 26, 4, 4',
-            'or 12, 5, 5',
-            'or 11, 6, 6',
+            'sv.or/mrr *4, *3, *3',
+            'or 16, 4, 4',
+            'or 15, 5, 5',
+            'or 14, 6, 6',
             'or 3, 7, 7',
-            'addi 3, 0, 0',
-            'addi 3, 0, 0',
-            'or 10, 3, 3',
-            'or 3, 20, 20',
-            'sradi 3, 3, 63',
-            'or 9, 3, 3',
-            'setvl 0, 0, 6, 0, 1, 1',
-            'or 3, 8, 8',
-            'or 4, 15, 15',
-            'or 5, 14, 14',
-            'or 6, 10, 10',
-            'or 7, 10, 10',
-            'or 8, 10, 10',
-            'setvl 0, 0, 6, 0, 1, 1',
-            'setvl 0, 0, 6, 0, 1, 1',
-            'sv.or *14, *3, *3',
-            'or 3, 24, 24',
-            'or 4, 23, 23',
-            'or 5, 22, 22',
-            'or 6, 21, 21',
-            'or 7, 20, 20',
-            'or 8, 9, 9',
-            'setvl 0, 0, 6, 0, 1, 1',
-            'setvl 0, 0, 6, 0, 1, 1',
-            'addic 0, 0, 0',
-            'setvl 0, 0, 6, 0, 1, 1',
-            'sv.or *20, *14, *14',
-            'setvl 0, 0, 6, 0, 1, 1',
-            'sv.or *14, *3, *3',
-            'setvl 0, 0, 6, 0, 1, 1',
-            'sv.adde *3, *20, *14',
-            'setvl 0, 0, 6, 0, 1, 1',
-            'setvl 0, 0, 6, 0, 1, 1',
-            'setvl 0, 0, 6, 0, 1, 1',
-            'sv.or *20, *3, *3',
-            'or 19, 20, 20',
-            'or 18, 21, 21',
-            'or 3, 22, 22',
-            'or 9, 23, 23',
-            'or 8, 24, 24',
-            'or 7, 25, 25',
-            'setvl 0, 0, 4, 0, 1, 1',
-            'or 4, 9, 9',
             'or 5, 8, 8',
-            'or 6, 7, 7',
-            'setvl 0, 0, 4, 0, 1, 1',
-            'setvl 0, 0, 4, 0, 1, 1',
-            'sv.or *7, *3, *3',
-            'or 3, 27, 27',
-            'or 4, 26, 26',
-            'or 5, 12, 12',
-            'or 6, 11, 11',
-            'setvl 0, 0, 4, 0, 1, 1',
-            'setvl 0, 0, 4, 0, 1, 1',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'or 4, 5, 5',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'sv.or *5, *3, *3',
+            'or 3, 20, 20',
+            'or 4, 19, 19',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'setvl 0, 0, 2, 0, 1, 1',
             'addic 0, 0, 0',
-            'setvl 0, 0, 4, 0, 1, 1',
-            'sv.or *14, *7, *7',
-            'setvl 0, 0, 4, 0, 1, 1',
-            'sv.or *7, *3, *3',
-            'setvl 0, 0, 4, 0, 1, 1',
-            'sv.adde *3, *14, *7',
-            'setvl 0, 0, 4, 0, 1, 1',
-            'setvl 0, 0, 4, 0, 1, 1',
-            'setvl 0, 0, 4, 0, 1, 1',
-            'or 15, 3, 3',
-            'or 14, 4, 4',
-            'or 12, 5, 5',
-            'or 11, 6, 6',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'sv.or *7, *5, *5',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'sv.or *5, *3, *3',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'sv.adde *3, *7, *5',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'setvl 0, 0, 2, 0, 1, 1',
+            'or 12, 3, 3',
+            'or 11, 4, 4',
             'setvl 0, 0, 8, 0, 1, 1',
-            'or 3, 29, 29',
-            'or 4, 28, 28',
-            'or 5, 19, 19',
-            'or 6, 18, 18',
+            'or 3, 25, 25',
+            'or 4, 24, 24',
+            'or 5, 23, 23',
+            'or 6, 16, 16',
             'or 7, 15, 15',
             'or 8, 14, 14',
             'or 9, 12, 12',
@@ -1843,9 +1857,9 @@ class TestToomCook(unittest.TestCase):
             'setvl 0, 0, 8, 0, 1, 1',
             'setvl 0, 0, 8, 0, 1, 1',
             'sv.or/mrr *4, *3, *3',
-            'or 3, 42, 42',
+            'or 3, 45, 45',
             'setvl 0, 0, 8, 0, 1, 1',
-            'sv.std *4, 0(3)'
+            'sv.std *4, 0(3)',
         ])
 
     def tst_toom_mul_sim(