Skip to content

Commit a16ef6d

Browse files
committed
[aarch64] Add register indexed load
* Add scalar register indexed load `ldr <Xa>, [<Xb>, <Xc>]`
1 parent 112dabc commit a16ef6d

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

slothy/targets/aarch64/aarch64_neon.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2005,6 +2005,24 @@ def write(self):
20052005
return super().write()
20062006

20072007

2008+
class x_ldr_regidx(Ldr_X):
2009+
pattern = "ldr <Xa>, [<Xb>, <Xc>]"
2010+
inputs = ["Xb", "Xc"]
2011+
outputs = ["Xa"]
2012+
2013+
@classmethod
2014+
def make(cls, src):
2015+
obj = AArch64Instruction.build(cls, src)
2016+
obj.increment = None
2017+
obj.pre_index = None
2018+
obj.addr = obj.args_in[0]
2019+
return obj
2020+
2021+
def write(self):
2022+
assert self.pre_index is None
2023+
return super().write()
2024+
2025+
20082026
class x_ldr_with_postinc(Ldr_X):
20092027
pattern = "ldr <Xa>, [<Xc>], <imm>"
20102028
in_outs = ["Xc"]

tests/naive/aarch64/instructions.s

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ cmge v4.8h, v30.8h, v16.8h
4949
cmhi v4.8h, v30.8h, v16.8h
5050
mov x12, #0
5151
ldr q24, [x3, x12, lsl #4]
52+
ldr x6, [x3, x12]
5253
clz v0.16b, v0.16b
5354
cnt v0.16b, v0.16b
5455
tbl v16.16b, {v16.16b}, v24.16b

0 commit comments

Comments
 (0)