+++ /dev/null
-<!-- X Instructions here described in PowerISA Version 3.0 B Book 1 -->
-
-<!-- Section 4.6.1 Floating-point storage access instructions. P 140 - 143 -->
-
-# Load Floating-Point Single
-
-SVD-Form
-
-* lfssh FRT,SVD(RA),RC
-
-Pseudo-code:
-
- b <- (RA|0)
- n <- (RC)[58:63]
- EA <- b + SHL64(srcstep * EXTS(SVD), n)
- FRT <- DOUBLE(MEM(EA, 4))
-
-Special Registers Altered:
-
- None
-
-# Load Floating-Point Single with Update
-
-SVD-Form
-
-* lfsush FRT,SVD(RA),RC
-
-Pseudo-code:
-
- n <- (RC)[58:63]
- EA <- (RA) + SHL64(srcstep * EXTS(SVD), n)
- FRT <- DOUBLE(MEM(EA, 4))
- RA <- EA
-
-Special Registers Altered:
-
- None
-
-# Load Floating-Point Double
-
-SVD-Form
-
-* lfdsh FRT,SVD(RA),RC
-
-Pseudo-code:
-
- b <- (RA|0)
- n <- (RC)[58:63]
- EA <- b + SHL64(srcstep * EXTS(SVD), n)
- FRT <- MEM(EA, 8)
-
-Special Registers Altered:
-
- None
-
-# Load Floating-Point Double with Update
-
-SVD-Form
-
-* lfdush FRT,SVD(RA),RC
-
-Pseudo-code:
-
- n <- (RC)[58:63]
- EA <- (RA) + SHL64(srcstep * EXTS(SVD), n)
- FRT <- MEM(EA, 8)
- RA <- EA
-
-Special Registers Altered:
-
- None
-
self.assertEqual(sim.gpr(12), SelectableInt(0x1234, 64))
self.assertEqual(sim.gpr(13), SelectableInt(0x1235, 64))
+ @unittest.skip("deprecated, needs Scalar LDST-shifted")
def test_sv_load_store_shifted(self):
""">>> lst = ["addi 1, 0, 0x0010",
"addi 2, 0, 0x0004",
self.assertEqual(sim.gpr(14), SelectableInt(0x303, 64))
self.assertEqual(sim.gpr(15), SelectableInt(0x404, 64))
+ @unittest.skip("deprecated, needs Scalar LDST-shifted")
def test_sv_load_store_shifted_fp(self):
""">>> lst = ["addi 1, 0, 0x0010",
"addi 2, 0, 0x0004",
"svshape 3, 3, 4, 0, 0",
"svremap 1, 1, 2, 0, 0, 0, 0",
"sv.lwz *20, 0(1)",
- #"sv.lwzsh *12, 4(1), 2", # bit-reversed
])
lst = list(lst)
"sv.stw *5, 0(1)",
"svshape 8, 1, 1, 6, 0",
"svremap 31, 1, 2, 3, 0, 0, 0",
- "sv.lwzsh *12, 4(1), 2"]
+ "sv.lwz/els *12, 4(1)"]
shifted LD is computed as:
for i in range(VL):
"svshape 8, 1, 1, 6, 0",
"svremap 1, 0, 0, 0, 0, 0, 0",
#"setvl 0, 0, 8, 0, 1, 1",
- "sv.lwzsh *12, 4(1), 2", # bit-reversed
+ "sv.lwz/els *12, 4(1)",
#"sv.lwz *12, 0(1)"
])
lst = list(lst)
"sv.stw *5, 0(1)",
"svshape 8, 1, 1, 6, 0",
"svremap 31, 1, 2, 3, 0, 0, 0",
- "sv.lwzsh *12, 4(1), 2"]
+ "sv.lwz/els *12, 4(1)"]
bitreverse LD is computed as:
for i in range(VL):
"svshape 8, 1, 1, 14, 0",
"svremap 16, 0, 0, 0, 0, 0, 0",
#"setvl 0, 0, 8, 0, 1, 1",
- "sv.lwzsh *12, 4(1), 2", # bit-reversed
+ "sv.lwz/els *12, 4(1)",
#"sv.lwz *12, 0(1)"
])
lst = list(lst)