'sv.std *4, 0(3)'
])
- def test_toom_2_mul_256x256_asm(self):
- self.skipTest("WIP") # FIXME: finish
+ def toom_2_mul_256x256(self):
TOOM_2 = ToomCookInstance.make_toom_2()
instances = TOOM_2, TOOM_2
# type: (Fn, SSAVal, SSAVal) -> SSAVal
return toom_cook_mul(fn=fn, lhs=lhs, lhs_signed=False, rhs=rhs,
rhs_signed=False, instances=instances)
- code = Mul(mul=mul, lhs_size_in_words=3, rhs_size_in_words=3)
+ return Mul(mul=mul, lhs_size_in_words=3, rhs_size_in_words=3)
+
+ def test_toom_2_mul_256x256_pre_ra_sim(self):
+ self.skipTest("WIP") # FIXME: finish
+ # maybe use something that multiplies to:
+ # int.from_bytes(
+ # b'256x256-bit bigint mul using TOOM-2 -- Karatsuba Multiplication!',
+ # 'little')
+ # as the multiplication test...
+ # known factors (used yafu-1.34):
+ # P1 = 2
+ # P1 = 7
+ # P3 = 197
+ # P7 = 1319057
+ # ***co-factor***
+ # C144 = 4812983706140089583461601472550901888754775658675461119771495\
+ # 11062521614062442465071845504357495554525178667728633744424201288485\
+ # 594266060663587
+
+ def test_toom_2_mul_256x256_asm(self):
+ self.skipTest("WIP") # FIXME: finish
+ code = self.toom_2_mul_256x256()
fn = code.fn
assigned_registers = allocate_registers(fn)
gen_asm_state = GenAsmState(assigned_registers)
fn.gen_asm(gen_asm_state)
self.assertEqual(gen_asm_state.output, [
+ 'or 23, 3, 3',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'or 6, 23, 23',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.ld *3, 48(6)',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *7, *3, *3',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'or 6, 23, 23',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.ld *3, 72(6)',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *16, *3, *3',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *3, *7, *7',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *6, *3, *3',
+ 'or 5, 6, 6',
+ 'or 4, 7, 7',
+ 'or 3, 8, 8',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 5, 5',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 10, 3, 3',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 4, 4',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 25, 3, 3',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 10, 10',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 4, 3, 3',
+ 'addi 3, 0, 0',
+ 'or 5, 3, 3',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'or 3, 4, 4',
+ 'or 4, 5, 5',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or *6, *3, *3',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 25, 25',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 4, 3, 3',
+ 'addi 3, 0, 0',
+ 'or 5, 3, 3',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'or 3, 4, 4',
+ 'or 4, 5, 5',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'addic 0, 0, 0',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or/mrr *7, *6, *6',
+ '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',
+ 'sv.or *14, *3, *3',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *3, *16, *16',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *6, *3, *3',
+ 'or 5, 6, 6',
+ 'or 4, 7, 7',
+ 'or 3, 8, 8',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 5, 5',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 9, 3, 3',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 4, 4',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 24, 3, 3',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 9, 9',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 4, 3, 3',
+ 'addi 3, 0, 0',
+ 'or 5, 3, 3',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'or 3, 4, 4',
+ 'or 4, 5, 5',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or *6, *3, *3',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 24, 24',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 4, 3, 3',
+ 'addi 3, 0, 0',
+ 'or 5, 3, 3',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'or 3, 4, 4',
+ 'or 4, 5, 5',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'addic 0, 0, 0',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or/mrr *7, *6, *6',
+ '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',
+ 'sv.or *11, *3, *3',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 9, 9',
+ '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, 10, 10',
+ '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 *21, *3, *3',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or *3, *14, *14',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or/mrr *4, *3, *3',
+ 'or 3, 4, 4',
+ 'or 4, 5, 5',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 10, 3, 3',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 4, 4',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 18, 3, 3',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 10, 10',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 4, 3, 3',
+ 'addi 3, 0, 0',
+ 'or 5, 3, 3',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'or 3, 4, 4',
+ 'or 4, 5, 5',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or *6, *3, *3',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 18, 18',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 4, 3, 3',
+ 'addi 3, 0, 0',
+ 'or 5, 3, 3',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'or 3, 4, 4',
+ 'or 4, 5, 5',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'addic 0, 0, 0',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or/mrr *7, *6, *6',
+ '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',
+ 'sv.or *16, *3, *3',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or *3, *11, *11',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or/mrr *4, *3, *3',
+ 'or 3, 4, 4',
+ 'or 4, 5, 5',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 9, 3, 3',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 4, 4',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 15, 3, 3',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 9, 9',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 4, 3, 3',
+ 'addi 3, 0, 0',
+ 'or 5, 3, 3',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'or 3, 4, 4',
+ 'or 4, 5, 5',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or *6, *3, *3',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 15, 15',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 4, 3, 3',
+ 'addi 3, 0, 0',
+ 'or 5, 3, 3',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'or 3, 4, 4',
+ 'or 4, 5, 5',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'addic 0, 0, 0',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or/mrr *7, *6, *6',
+ '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',
+ 'sv.or *7, *3, *3',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 9, 9',
+ '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, 10, 10',
+ '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 *19, *3, *3',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or *3, *7, *7',
+ '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, 2, 0, 1, 1',
+ 'addi 3, 0, 0',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or *8, *16, *16',
+ 'or 6, 4, 4',
+ 'or 5, 10, 10',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.maddedu *3, *8, 6, 5',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'or 14, 5, 5',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'or 12, 3, 3',
+ 'or 7, 4, 4',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or *8, *16, *16',
+ 'or 6, 11, 11',
+ 'or 5, 10, 10',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.maddedu *3, *8, 6, 5',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'or 11, 5, 5',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'or 10, 3, 3',
+ 'or 9, 4, 4',
+ 'addi 3, 0, 0',
+ 'or 6, 3, 3',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'or 3, 7, 7',
+ 'or 4, 14, 14',
+ 'or 5, 6, 6',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *6, *3, *3',
+ 'or 3, 10, 10',
+ 'or 4, 9, 9',
+ 'or 5, 11, 11',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'addic 0, 0, 0',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *9, *6, *6',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *6, *3, *3',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.adde *3, *9, *6',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'or 9, 3, 3',
+ 'or 8, 4, 4',
+ 'or 7, 5, 5',
+ 'setvl 0, 0, 4, 0, 1, 1',
+ 'or 3, 12, 12',
+ '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',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 15, 15',
+ '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, 18, 18',
+ '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 *17, *3, *3',
+ 'setvl 0, 0, 4, 0, 1, 1',
+ 'setvl 0, 0, 4, 0, 1, 1',
+ 'sv.or *3, *7, *7',
+ 'setvl 0, 0, 4, 0, 1, 1',
+ 'sv.or *8, *3, *3',
+ 'or 4, 8, 8',
+ 'or 7, 9, 9',
+ 'or 6, 10, 10',
+ 'or 3, 11, 11',
+ '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 *14, *3, *3',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or *3, *19, *19',
+ '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',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'subfc 0, 0, 0',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *9, *3, *3',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *6, *14, *14',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.subfe *3, *9, *6',
+ '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, *17, *17',
+ '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',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'subfc 0, 0, 0',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *9, *3, *3',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *6, *14, *14',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.subfe *3, *9, *6',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *8, *3, *3',
+ 'addi 3, 0, 0',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or *3, *19, *19',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'or 12, 3, 3',
+ 'or 7, 4, 4',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *3, *8, *8',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'or 11, 3, 3',
+ 'or 10, 4, 4',
+ 'or 9, 5, 5',
+ 'addi 3, 0, 0',
+ 'or 6, 3, 3',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'or 3, 7, 7',
+ 'or 4, 6, 6',
+ 'or 5, 6, 6',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *6, *3, *3',
+ 'or 3, 11, 11',
+ 'or 4, 10, 10',
+ 'or 5, 9, 9',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'addic 0, 0, 0',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *9, *6, *6',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *6, *3, *3',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.adde *3, *9, *6',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'or 9, 3, 3',
+ 'or 6, 4, 4',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or *3, *17, *17',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'or 8, 3, 3',
+ 'or 7, 4, 4',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'or 3, 6, 6',
+ '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, 8, 8',
+ 'or 4, 7, 7',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'addic 0, 0, 0',
+ '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 8, 3, 3',
+ 'or 7, 4, 4',
+ 'setvl 0, 0, 4, 0, 1, 1',
+ 'or 3, 12, 12',
+ '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',
+ 'setvl 0, 0, 1, 0, 1, 1',
+ 'or 3, 24, 24',
+ '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, 25, 25',
+ '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 *19, *3, *3',
+ 'setvl 0, 0, 4, 0, 1, 1',
+ 'setvl 0, 0, 4, 0, 1, 1',
+ 'sv.or *3, *7, *7',
+ 'setvl 0, 0, 4, 0, 1, 1',
+ 'sv.or *8, *3, *3',
+ 'or 4, 8, 8',
+ 'or 7, 9, 9',
+ 'or 6, 10, 10',
+ 'or 3, 11, 11',
+ '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 *14, *3, *3',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or *3, *21, *21',
+ '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',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'subfc 0, 0, 0',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *9, *3, *3',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *6, *14, *14',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.subfe *3, *9, *6',
+ '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, *19, *19',
+ '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',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'subfc 0, 0, 0',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *9, *3, *3',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *6, *14, *14',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.subfe *3, *9, *6',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *7, *3, *3',
+ 'addi 3, 0, 0',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or *3, *21, *21',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'or 18, 3, 3',
+ 'or 6, 4, 4',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *3, *7, *7',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'or 15, 3, 3',
+ 'or 14, 4, 4',
+ 'or 12, 5, 5',
+ 'addi 3, 0, 0',
+ 'or 7, 3, 3',
+ 'or 3, 12, 12',
+ 'sradi 3, 3, 63',
+ 'or 11, 3, 3',
+ 'setvl 0, 0, 4, 0, 1, 1',
+ 'or 3, 6, 6',
+ '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',
+ 'sv.or *7, *3, *3',
+ 'or 3, 15, 15',
+ 'or 4, 14, 14',
+ 'or 5, 12, 12',
+ 'or 6, 11, 11',
+ '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',
+ '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',
+ 'sv.or *8, *3, *3',
+ 'or 14, 8, 8',
+ 'or 5, 9, 9',
+ 'or 7, 10, 10',
+ 'or 6, 11, 11',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'sv.or *3, *19, *19',
+ 'setvl 0, 0, 2, 0, 1, 1',
+ 'or 11, 3, 3',
+ 'or 10, 4, 4',
+ 'addi 3, 0, 0',
+ 'or 9, 3, 3',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'or 3, 5, 5',
+ 'or 4, 7, 7',
+ 'or 5, 6, 6',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *6, *3, *3',
+ 'or 3, 11, 11',
+ 'or 4, 10, 10',
+ 'or 5, 9, 9',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'addic 0, 0, 0',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *9, *6, *6',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.or *6, *3, *3',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'sv.adde *3, *9, *6',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'setvl 0, 0, 3, 0, 1, 1',
+ 'or 12, 3, 3',
+ 'or 11, 4, 4',
+ 'or 10, 5, 5',
+ 'addi 3, 0, 0',
+ 'or 9, 3, 3',
+ 'setvl 0, 0, 6, 0, 1, 1',
+ 'or 3, 18, 18',
+ 'or 4, 14, 14',
+ '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',
+ 'setvl 0, 0, 6, 0, 1, 1',
+ 'setvl 0, 0, 6, 0, 1, 1',
+ 'sv.or/mrr *4, *3, *3',
+ 'or 3, 23, 23',
+ 'setvl 0, 0, 6, 0, 1, 1',
+ 'sv.std *4, 0(3)'
])