From: Jim Wilson <jim.wilson@linaro.org>
To: Jim Wilson <jim.wilson@linaro.org>,
"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>,
Nick Clifton <nickc@redhat.com>
Subject: Re: [PATCH] fix for aarch64 sim tbnz bug
Date: Tue, 13 Dec 2016 00:33:00 -0000 [thread overview]
Message-ID: <CABXYE2Xfx6t85ThCugaKEKBO=LOPB21YFrEVUp+A=zyh9CvUhA@mail.gmail.com> (raw)
In-Reply-To: <20161212184245.GU10558@vapier.lan>
[-- Attachment #1: Type: text/plain, Size: 362 bytes --]
On Mon, Dec 12, 2016 at 10:42 AM, Mike Frysinger <vapier@gentoo.org> wrote:
> i think you want to stuff those pass/fail strings into the
> start macro instead of just having it get inserted where the
> include happened to show up.
That makes sense. Here is a new version of the patch with that
change. Retested with a sim make check, and all tests pass.
Jim
[-- Attachment #2: aarch64-sim-tests.patch --]
[-- Type: text/x-patch, Size: 4387 bytes --]
2016-12-12 Jim Wilson <jim.wilson@linaro.org>
sim/testsuite/sim/aarch64
* testutils.inc (pass): Move .Lpass to start.
(fail): Move .Lfail to start. Return 1 instead of 0.
(start): Moved .Lpass and .Lfail to here.
* fstur.s: New.
* tbnz.s: New.
diff --git a/sim/testsuite/sim/aarch64/fstur.s b/sim/testsuite/sim/aarch64/fstur.s
new file mode 100644
index 0000000..2206ae5
--- /dev/null
+++ b/sim/testsuite/sim/aarch64/fstur.s
@@ -0,0 +1,136 @@
+# mach: aarch64
+
+# Check the FP store unscaled offset instructions: fsturs, fsturd, fsturq.
+# Check the values -1, and XXX_MAX, which tests all bits.
+# Check with offsets -256 and 255, which tests all bits.
+# Also tests the FP load unscaled offset instructions: fldurs, fldurd, fldurq.
+
+.include "testutils.inc"
+
+ .data
+fm1:
+ .word 3212836864
+fmax:
+ .word 2139095039
+ftmp:
+ .word 0
+
+dm1:
+ .word 0
+ .word -1074790400
+dmax:
+ .word 4294967295
+ .word 2146435071
+dtmp:
+ .word 0
+ .word 0
+
+ldm1:
+ .word 0
+ .word 0
+ .word 0
+ .word -1073807360
+ldmax:
+ .word 4294967295
+ .word 4294967295
+ .word 4294967295
+ .word 2147418111
+ldtmp:
+ .word 0
+ .word 0
+ .word 0
+ .word 0
+
+ start
+ adrp x1, ftmp
+ add x1, x1, :lo12:ftmp
+
+ adrp x0, fm1
+ add x0, x0, :lo12:fm1
+ sub x5, x0, #255
+ sub x6, x1, #255
+ movi d2, #0
+ ldur s2, [x5, #255]
+ stur s2, [x6, #255]
+ ldr w3, [x0]
+ ldr w4, [x1]
+ cmp w3, w4
+ bne .Lfailure
+
+ adrp x0, fmax
+ add x0, x0, :lo12:fmax
+ add x5, x0, #256
+ add x6, x1, #256
+ movi d2, #0
+ ldur s2, [x5, #-256]
+ stur s2, [x6, #-256]
+ ldr w3, [x0]
+ ldr w4, [x1]
+ cmp w3, w4
+ bne .Lfailure
+
+ adrp x1, dtmp
+ add x1, x1, :lo12:dtmp
+
+ adrp x0, dm1
+ add x0, x0, :lo12:dm1
+ sub x5, x0, #255
+ sub x6, x1, #255
+ movi d2, #0
+ ldur d2, [x5, #255]
+ stur d2, [x6, #255]
+ ldr x3, [x0]
+ ldr x4, [x1]
+ cmp x3, x4
+ bne .Lfailure
+
+ adrp x0, dmax
+ add x0, x0, :lo12:dmax
+ add x5, x0, #256
+ add x6, x1, #256
+ movi d2, #0
+ ldur d2, [x5, #-256]
+ stur d2, [x6, #-256]
+ ldr x3, [x0]
+ ldr x4, [x1]
+ cmp x3, x4
+ bne .Lfailure
+
+ adrp x1, ldtmp
+ add x1, x1, :lo12:ldtmp
+
+ adrp x0, ldm1
+ add x0, x0, :lo12:ldm1
+ sub x5, x0, #255
+ sub x6, x1, #255
+ movi v2.2d, #0
+ ldur q2, [x5, #255]
+ stur q2, [x6, #255]
+ ldr x3, [x0]
+ ldr x4, [x1]
+ cmp x3, x4
+ bne .Lfailure
+ ldr x3, [x0, 8]
+ ldr x4, [x1, 8]
+ cmp x3, x4
+ bne .Lfailure
+
+ adrp x0, ldmax
+ add x0, x0, :lo12:ldmax
+ add x5, x0, #256
+ add x6, x1, #256
+ movi v2.2d, #0
+ ldur q2, [x5, #-256]
+ stur q2, [x6, #-256]
+ ldr x3, [x0]
+ ldr x4, [x1]
+ cmp x3, x4
+ bne .Lfailure
+ ldr x3, [x0, 8]
+ ldr x4, [x1, 8]
+ cmp x3, x4
+ bne .Lfailure
+
+ pass
+.Lfailure:
+ fail
diff --git a/sim/testsuite/sim/aarch64/tbnz.s b/sim/testsuite/sim/aarch64/tbnz.s
new file mode 100644
index 0000000..2416101
--- /dev/null
+++ b/sim/testsuite/sim/aarch64/tbnz.s
@@ -0,0 +1,55 @@
+# mach: aarch64
+
+# Check the test-bit-and-branch instructions: tbnz, and tbz.
+# We check the edge condition bit positions: 0, 1<<31, 1<<32, 1<<63.
+
+.include "testutils.inc"
+
+ start
+ mov x0, #1
+ tbnz x0, #0, .L1
+ fail
+.L1:
+ tbz x0, #0, .Lfailure
+ mov x0, #0xFFFFFFFFFFFFFFFE
+ tbnz x0, #0, .Lfailure
+ tbz x0, #0, .L2
+ fail
+.L2:
+
+ mov x0, #0x80000000
+ tbnz x0, #31, .L3
+ fail
+.L3:
+ tbz x0, #31, .Lfailure
+ mov x0, #0xFFFFFFFF7FFFFFFF
+ tbnz x0, #31, .Lfailure
+ tbz x0, #31, .L4
+ fail
+.L4:
+
+ mov x0, #0x100000000
+ tbnz x0, #32, .L5
+ fail
+.L5:
+ tbz x0, #32, .Lfailure
+ mov x0, #0xFFFFFFFEFFFFFFFF
+ tbnz x0, #32, .Lfailure
+ tbz x0, #32, .L6
+ fail
+.L6:
+
+ mov x0, #0x8000000000000000
+ tbnz x0, #63, .L7
+ fail
+.L7:
+ tbz x0, #63, .Lfailure
+ mov x0, #0x7FFFFFFFFFFFFFFF
+ tbnz x0, #63, .Lfailure
+ tbz x0, #63, .L8
+ fail
+.L8:
+
+ pass
+.Lfailure:
+ fail
diff --git a/sim/testsuite/sim/aarch64/testutils.inc b/sim/testsuite/sim/aarch64/testutils.inc
index c8897aa..1fc9bc8 100644
--- a/sim/testsuite/sim/aarch64/testutils.inc
+++ b/sim/testsuite/sim/aarch64/testutils.inc
@@ -43,10 +43,6 @@
swiwrite 5
exit 0
-
- .data
-.Lpass:
- .asciz "pass\n"
.endm
# MACRO: fail
@@ -56,16 +52,18 @@
adrp x1, .Lfail
add x1, x1, :lo12:.Lfail
swiwrite 5
- exit 0
-
- .data
-.Lfail:
- .asciz "fail\n"
+ exit 1
.endm
# MACRO: start
# All assembler tests should start with a call to "start"
.macro start
+ .data
+.Lpass:
+ .asciz "pass\n"
+.Lfail:
+ .asciz "fail\n"
+
.text
.global _start
_start:
next prev parent reply other threads:[~2016-12-13 0:33 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-02 4:49 Jim Wilson
2016-12-02 9:32 ` Mike Frysinger
2016-12-05 3:45 ` Jim Wilson
2016-12-12 18:38 ` Jim Wilson
2016-12-12 18:42 ` Mike Frysinger
2016-12-13 0:33 ` Jim Wilson [this message]
2016-12-13 6:38 ` Mike Frysinger
2016-12-13 10:45 ` Nick Clifton
2016-12-02 12:03 ` Nick Clifton
2016-12-02 15:59 ` Jim Wilson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CABXYE2Xfx6t85ThCugaKEKBO=LOPB21YFrEVUp+A=zyh9CvUhA@mail.gmail.com' \
--to=jim.wilson@linaro.org \
--cc=gdb-patches@sourceware.org \
--cc=nickc@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox