aboutsummaryrefslogtreecommitdiff
path: root/risugen
diff options
context:
space:
mode:
authorClaudio Fontana <claudio.fontana@huawei.com>2013-10-22 10:51:18 +0200
committerPeter Maydell <peter.maydell@linaro.org>2014-04-25 13:19:58 +0100
commitfe1722861f514e5805644326dda323aec30200b5 (patch)
tree056d24e730377157a3219c427908564a6a6bd38a /risugen
parent7ddb260a75198f0a1b0853d0f3c3e11ffb354a6c (diff)
risugen: allow shift by 4 in reg_plus_reg_shifted
aarch64 SIMD/fp instruction variants require addressing in the form register plus register shifted by 4, to align 128bit data. Signed-off-by: Claudio Fontana <claudio.fontana@linaro.org>
Diffstat (limited to 'risugen')
-rwxr-xr-xrisugen4
1 files changed, 3 insertions, 1 deletions
diff --git a/risugen b/risugen
index b1232c3..5dd02c4 100755
--- a/risugen
+++ b/risugen
@@ -713,7 +713,9 @@ sub reg_plus_reg_shifted($$$@)
{
# handle reg + reg LSL imm addressing mode
my ($base, $idx, $shift, @trashed) = @_;
- die "reg_plus_reg_shifted: bad shift size\n" if ($shift < 0 || $shift > 3);
+ if ($shift < 0 || $shift > 4 || (!$is_aarch64 && $shift == 4)) {
+ die "reg_plus_reg_shifted: bad shift size\n";
+ }
my $savedidx = 0;
if ($idx == 0) {
# save the index into some other register for the