From 5d75e1b2616d96f70321c7a3a3bb764f47424a5c Mon Sep 17 00:00:00 2001 From: Luke Kenneth Casson Leighton Date: Thu, 11 May 2023 21:02:37 +0100 Subject: [PATCH] corrections to dd-ffirst tests when VLi=0, the write to regfile is *not* carried out on the failed test. but Rc=1 does (TODO) --- .../decoder/isa/test_caller_svp64_dd_ffirst.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/openpower/decoder/isa/test_caller_svp64_dd_ffirst.py b/src/openpower/decoder/isa/test_caller_svp64_dd_ffirst.py index 40e31b1c..200e7d81 100644 --- a/src/openpower/decoder/isa/test_caller_svp64_dd_ffirst.py +++ b/src/openpower/decoder/isa/test_caller_svp64_dd_ffirst.py @@ -47,9 +47,10 @@ class DecoderTestCase(FHDLTestCase): expected_vl = 0 for i in range(4): result = expected[i] - gprs[8] - expected[i] = result if result <= 0: break + # VLi=0 - test comes FIRST! + expected[i] = result # only write out if successful expected_vl += 1 for i, v in enumerate(res): @@ -91,9 +92,10 @@ class DecoderTestCase(FHDLTestCase): expected = deepcopy(vec) for i in range(4): result = expected[i] - gprs[8] - expected[i] = result if result == 0: break + # VLi=0 - test comes FIRST! + expected[i] = result for i, v in enumerate(res): self.assertEqual(v, expected[i]) @@ -133,9 +135,10 @@ class DecoderTestCase(FHDLTestCase): expected = deepcopy(vec) for i in range(4): result = expected[i] - gprs[8] - expected[i] = result if result == 0: break + # VLi=0 - test comes FIRST! + expected[i] = result for i, v in enumerate(res): self.assertEqual(v, expected[i]) @@ -145,6 +148,8 @@ class DecoderTestCase(FHDLTestCase): self.assertEqual(sim.svstate.dststep, 0) def test_sv_addi_ffirst_vli(self): + """data-dependent fail-first with VLi=1, the test comes *after* write + """ lst = SVP64Asm(["sv.subf/ff=RC1/vli *0,8,*0" ]) lst = list(lst) @@ -174,6 +179,7 @@ class DecoderTestCase(FHDLTestCase): # confirm that the results are as expected expected = deepcopy(vec) for i in range(4): + # VLi=1 - test comes AFTER write! expected[i] -= gprs[8] if expected[i] == 0: break -- 2.30.2