target/xtensa fixes for v4.0:

- fix translation of FLIX bundles with multiple references to the same
   register;
 - don't announce exit simcall;
 - clean up tests/tcg/xtensa.
 -----BEGIN PGP SIGNATURE-----
 
 iQJHBAABCAAxFiEEK2eFS5jlMn3N6xfYUfnMkfg/oEQFAlyaaGMTHGpjbXZia2Jj
 QGdtYWlsLmNvbQAKCRBR+cyR+D+gRA71D/9dfewtkj00YS03zu60aEv6qFR/K/BQ
 QEHGDF2Hsk6xO1zfZrJa8iwiMj5pVt7NkBEiE4cj5YG+JJliIxhgm5uSZ0WLd4qi
 9ljanUZZ1dCFWCOC5/v6dAywQu4RncOKjhyRntJuCUjuGzn9XhfI9nwDGafuzAal
 ocl30P2rNU4QBeTNGCNsfZuqem4+dbNywt5r2RH0Fa+jSac4olxjpFHugX9ZiV2l
 kvBCvXbtAY/QCvB2wF1W1ekPCn7i5C5WcrWv4c5ePJTUHYC2s1U7ai/fN73tRsZH
 10V6uhqESlxTQzOmvgO/vZ1Z/q4NUDfJ7igxeQZu9PYogVv9lO4zsMJFV+i1VFK+
 idpCvw6yt6FVuKLNH9UHluBlvMEaUFddJhq7N9tOI/ENDK8/V2MgdzxHt5ETUoga
 tAP2gNwgwOX8EQ96uYz8QTaDqObfOf5hTzRXE820YR3O9ix2wbPTIeyUueacf6+B
 k4RaB+ec0vcR+Hp7Uymni2Mi5ca9hwmIb5l0184s/UnFsQRrpvurSlRleoamsS2t
 Fnxyr2b/fZ3v1QIz8+aU2TH4tmddGO1yDW3xNuEa3RPy37ONzMgcq8TTugYx3P0X
 RO+LJriK0A6Z8UaXVGPLL9ZDuT+LzDP1qd31bkjcbYHDEiMKs8wCAX1LzyukU+m2
 uyg4GazIPvWm/w==
 =A2f1
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/xtensa/tags/20190326-xtensa' into staging

target/xtensa fixes for v4.0:

- fix translation of FLIX bundles with multiple references to the same
  register;
- don't announce exit simcall;
- clean up tests/tcg/xtensa.

# gpg: Signature made Tue 26 Mar 2019 17:58:59 GMT
# gpg:                using RSA key 2B67854B98E5327DCDEB17D851F9CC91F83FA044
# gpg:                issuer "jcmvbkbc@gmail.com"
# gpg: Good signature from "Max Filippov <filippov@cadence.com>" [unknown]
# gpg:                 aka "Max Filippov <max.filippov@cogentembedded.com>" [full]
# gpg:                 aka "Max Filippov <jcmvbkbc@gmail.com>" [full]
# Primary key fingerprint: 2B67 854B 98E5 327D CDEB  17D8 51F9 CC91 F83F A044

* remotes/xtensa/tags/20190326-xtensa:
  tests/tcg/xtensa: clean up test set
  target/xtensa: don't announce exit simcall
  target/xtensa: fix break_dependency for repeated resources

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2019-03-28 08:00:22 +00:00
commit 2fc8d6f8e4
6 changed files with 18 additions and 169 deletions

View File

@ -1041,7 +1041,6 @@ static bool break_dependency(struct slot_prop *a,
copy[n].resource = b->in[j].resource; copy[n].resource = b->in[j].resource;
copy[n].arg = b->arg + index; copy[n].arg = b->arg + index;
++n; ++n;
++i;
++j; ++j;
rv = true; rv = true;
} }

View File

@ -202,7 +202,6 @@ void HELPER(simcall)(CPUXtensaState *env)
switch (regs[2]) { switch (regs[2]) {
case TARGET_SYS_exit: case TARGET_SYS_exit:
qemu_log("exit(%d) simcall\n", regs[3]);
exit(regs[3]); exit(regs[3]);
break; break;

View File

@ -8,7 +8,7 @@ XTENSA_SRC = $(SRC_PATH)/tests/tcg/xtensa
XTENSA_ALL = $(filter-out $(XTENSA_SRC)/linker.ld.S,$(wildcard $(XTENSA_SRC)/*.S)) XTENSA_ALL = $(filter-out $(XTENSA_SRC)/linker.ld.S,$(wildcard $(XTENSA_SRC)/*.S))
XTENSA_TESTS = $(patsubst $(XTENSA_SRC)/%.S, %, $(XTENSA_ALL)) XTENSA_TESTS = $(patsubst $(XTENSA_SRC)/%.S, %, $(XTENSA_ALL))
# Filter out common blobs and broken tests # Filter out common blobs and broken tests
XTENSA_BROKEN_TESTS = crt vectors test_boolean test_pipeline test_fail XTENSA_BROKEN_TESTS = crt vectors
XTENSA_USABLE_TESTS = $(filter-out $(XTENSA_BROKEN_TESTS), $(XTENSA_TESTS)) XTENSA_USABLE_TESTS = $(filter-out $(XTENSA_BROKEN_TESTS), $(XTENSA_TESTS))
# add to the list of tests # add to the list of tests

View File

@ -1,9 +0,0 @@
#include "macros.inc"
test_suite fail
test fail
test_fail
test_end
test_suite_end

View File

@ -55,6 +55,23 @@ test sum
.previous .previous
test_end test_end
test rep_dependency
{
movi a2, 1
movi a3, 2
nop
}
{
or a2, a3, a3
or a3, a2, a2
nop
}
assert eqi, a2, 2
assert eqi, a3, 1
test_end
#endif #endif
test_suite_end test_suite_end

View File

@ -1,157 +0,0 @@
#include "macros.inc"
.purgem test
.macro test name
movi a2, 1f
movi a3, 99f
0:
ipf a2, 0
ipf a2, 4
ipf a2, 8
ipf a2, 12
addi a2, a2, 16
blt a2, a3, 0b
j 1f
.align 4
1:
.endm
test_suite pipeline
test register_no_stall
rsr a3, ccount
add a5, a6, a6
add a6, a5, a5
rsr a4, ccount
sub a3, a4, a3
assert eqi, a3, 3
test_end
test register_stall
l32i a5, a1, 0 /* data cache preload */
nop
rsr a3, ccount
l32i a5, a1, 0
add a6, a5, a5 /* M-to-E interlock */
rsr a4, ccount
sub a3, a4, a3
assert eqi, a3, 4
test_end
test j0_stall
rsr a3, ccount
j 1f /* E + 2-cycle penalty */
1:
rsr a4, ccount /* E */
sub a3, a4, a3
assert eqi, a3, 4
test_end
test j1_stall
rsr a3, ccount
j 1f
nop
1:
rsr a4, ccount
sub a3, a4, a3
assert eqi, a3, 4
test_end
test j5_stall
rsr a3, ccount
j 1f
nop
nop
nop
nop
nop
1:
rsr a4, ccount
sub a3, a4, a3
assert eqi, a3, 4
test_end
test b_no_stall
movi a5, 1
rsr a3, ccount
beqi a5, 2, 1f
rsr a4, ccount
sub a3, a4, a3
assert eqi, a3, 2
1:
test_end
test b1_stall
movi a5, 1
rsr a3, ccount
beqi a5, 1, 1f
nop
1:
rsr a4, ccount
sub a3, a4, a3
assert eqi, a3, 4
test_end
test b5_stall
movi a5, 1
rsr a3, ccount
beqi a5, 1, 1f
nop
nop
nop
nop
nop
1:
rsr a4, ccount
sub a3, a4, a3
assert eqi, a3, 4
test_end
/* PS *SYNC */
test ps_dsync
rsr a5, ps
isync
rsr a3, ccount
wsr a5, ps
dsync
rsr a4, ccount
sub a3, a4, a3
assert eqi, a3, 5
test_end
test ps_esync
rsr a5, ps
isync
rsr a3, ccount
wsr a5, ps
esync
rsr a4, ccount
sub a3, a4, a3
assert eqi, a3, 5
test_end
test ps_rsync
rsr a5, ps
isync
rsr a3, ccount
wsr a5, ps
rsync
rsr a4, ccount
sub a3, a4, a3
assert eqi, a3, 5
test_end
test ps_isync
rsr a5, ps
isync
rsr a3, ccount
wsr a5, ps
isync
rsr a4, ccount
sub a3, a4, a3
movi a4, 9
assert eq, a3, a4
test_end
test_suite_end