Richard Henderson [Thu, 15 Nov 2012 18:25:57 +0000 (10:25 -0800)]
target-s390: Use TCG_CALL_NO_WG for integer helpers
The division routines do not read or write tcg registers,
but can raise fixed-point divide exceptions.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 15 Nov 2012 18:21:54 +0000 (10:21 -0800)]
target-s390: Use TCG_CALL_NO_WG for floating-point helpers
None of them read or write tcg registers, but most can
raise fp exceptions.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 15 Nov 2012 18:20:43 +0000 (10:20 -0800)]
target-s390: Use TCG_CALL_NO_WG for memory helpers
Those that do not read or write tcg registers, but can
raise exceptions via memory faults.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 21 Sep 2012 00:09:35 +0000 (17:09 -0700)]
target-s390: Perform COMPARE AND SWAP inline
Still no proper solution for CONFIG_USER_ONLY, but the system
version is significantly better.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 21 Sep 2012 13:57:09 +0000 (06:57 -0700)]
target-s390: Optimize get_address
Don't load the displacement into a register first, add it second
so that tcg_gen_addi_i64 can eliminate zeros. Don't mask the
displacement first so that we don't turn small negative numbers
into large positive numbers.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 20 Sep 2012 16:51:40 +0000 (09:51 -0700)]
target-s390: Optimize ADDC/SUBB
Giving the proper mask to disas_jcc allows us to generate an inline
comparison generating the carry/borrow with setcond.
In the very worst case, when we must use the external helper to compute
a value for CC, we generate (cc > 1) instead of (cc >> 1), which is only
very slightly slower on common cpus.
In the very best case, when the CC comes from a COMPARE insn and the
compiler is using ALCG with zero, everything folds out to become just
the setcond that the compiler wanted.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 20 Sep 2012 16:41:33 +0000 (09:41 -0700)]
target-s390: Optimize ADDU/SUBU CC testing
We can easily generate some masks for logical add/subtract inline.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 20 Sep 2012 14:55:51 +0000 (07:55 -0700)]
target-s390: Tidy comparisons
After full conversion, we can audit the uses of LTGT cc ops
and see that none of the instructions can ever set CC=3.
Thus we can extend the table to treat that bit as ignored.
This fixes a regression wrt the pre-conversion translation
in which NE was used for both m=6 and m=7.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 19 Sep 2012 20:50:07 +0000 (13:50 -0700)]
target-s390: Optmize emitting discards
While they aren't expensive, they aren't free to process. When we
know that the three cc helper variables are dead, don't kill them.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 19 Sep 2012 20:48:46 +0000 (13:48 -0700)]
target-s390: Optimize XC
Notice XC with same address and convert that to store of zero.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 12 Sep 2012 23:52:31 +0000 (16:52 -0700)]
target-s390: Fix cpu_clone_regs
R2 is the syscall return register, not R0.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Tue, 11 Sep 2012 00:23:13 +0000 (17:23 -0700)]
target-s390: Implement LOAD/SET FP AND SIGNAL
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 10 Sep 2012 23:26:35 +0000 (16:26 -0700)]
target-s390: Implement SET ROUNDING MODE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Sun, 9 Sep 2012 23:04:17 +0000 (16:04 -0700)]
target-s390: Use uint64_to_float128
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Sun, 9 Sep 2012 21:31:43 +0000 (14:31 -0700)]
target-s390: Implement LCDFR
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 7 Sep 2012 23:16:57 +0000 (16:16 -0700)]
target-s390: Check insn operand specifications
Removes all the fixmes for even register numbers, etc.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Sat, 1 Sep 2012 21:13:52 +0000 (14:13 -0700)]
target-s390: Implement CPSDR
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Sat, 1 Sep 2012 18:14:04 +0000 (11:14 -0700)]
target-s390: Implement POPCNT
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Sat, 1 Sep 2012 18:08:17 +0000 (11:08 -0700)]
target-s390: Implement CONVERT FROM LOGICAL
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Sat, 1 Sep 2012 17:42:54 +0000 (10:42 -0700)]
target-s390: Implement CONVERT TO LOGICAL
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Sat, 1 Sep 2012 16:45:20 +0000 (09:45 -0700)]
target-s390: Implement STORE ON CONDITION
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 5 Sep 2012 17:55:00 +0000 (10:55 -0700)]
target-s390: Implement LOAD ON CONDITION
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 6 Sep 2012 00:32:54 +0000 (17:32 -0700)]
target-s390: Implement COMPARE AND TRAP
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 5 Sep 2012 17:54:00 +0000 (10:54 -0700)]
target-s390: Implement COMPARE RELATIVE LONG
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 31 Aug 2012 21:10:05 +0000 (14:10 -0700)]
target-s390: Implement PREFETCH
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 31 Aug 2012 20:54:13 +0000 (13:54 -0700)]
target-s390: Implement R[NOX]SBG
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 5 Sep 2012 17:52:08 +0000 (10:52 -0700)]
target-s390: Implement LDGR, LGDR
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 31 Aug 2012 19:50:06 +0000 (12:50 -0700)]
target-s390: Implement RISBG
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 31 Aug 2012 17:53:49 +0000 (10:53 -0700)]
target-s390: Implement COMPARE AND BRANCH
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 6 Sep 2012 00:28:17 +0000 (17:28 -0700)]
target-s390: Tidy s->op_cc handling
There's no need to force computation of the true cc_op when taking an
exception or single stepping. In either case we'll enter the next TB
with s->cc_op = DYNAMIC and recompute anyway. Just make sure that
s->cc_op is stored back to env->cc_op as needed.
Delete some dead functions, avoid allocating unused TCG temps, drop
the old s->is_jmp setting.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 29 Aug 2012 19:57:55 +0000 (12:57 -0700)]
target-s390: Implement BRANCH ON INDEX
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 27 Aug 2012 18:33:58 +0000 (11:33 -0700)]
target-s390: Delete dead code from old translator
The use of inline restricts detection of static functions that are
no longer used. Limit the use of inline to those functions that
are conditionally used based on CONFIG_USER_ONLY.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 27 Aug 2012 18:12:40 +0000 (11:12 -0700)]
target-s390: Convert SERVC
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 27 Aug 2012 18:04:48 +0000 (11:04 -0700)]
target-s390: Convert LPSWE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 27 Aug 2012 17:58:59 +0000 (10:58 -0700)]
target-s390: Convert STFL
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 27 Aug 2012 17:43:38 +0000 (10:43 -0700)]
target-s390: Convert STSI
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 27 Aug 2012 17:17:16 +0000 (10:17 -0700)]
target-s390: Convert SACF
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 27 Aug 2012 17:11:36 +0000 (10:11 -0700)]
target-s390: Convert STCKE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 27 Aug 2012 16:57:18 +0000 (09:57 -0700)]
target-s390: Convert CSP
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 27 Aug 2012 16:45:38 +0000 (09:45 -0700)]
target-s390: Convert STURA
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 27 Aug 2012 16:36:20 +0000 (09:36 -0700)]
target-s390: Convert subchannel instructions
While we're at it, list all of the chapter 14 subchannel insns.
Which is easy since all merely need indicate non-operation.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 27 Aug 2012 16:22:13 +0000 (09:22 -0700)]
target-s390: Convert RRBE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 27 Aug 2012 16:18:01 +0000 (09:18 -0700)]
target-s390: Convert SSKE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 27 Aug 2012 16:13:38 +0000 (09:13 -0700)]
target-s390: Convert ISKE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 24 Aug 2012 23:25:28 +0000 (16:25 -0700)]
target-s390: Convert IPTE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 24 Aug 2012 23:18:33 +0000 (16:18 -0700)]
target-s390: Convert STAP
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 24 Aug 2012 23:11:32 +0000 (16:11 -0700)]
target-s390: Convert SPX, STPX
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 24 Aug 2012 22:59:26 +0000 (15:59 -0700)]
target-s390: Convert PTLB
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 24 Aug 2012 22:55:34 +0000 (15:55 -0700)]
target-s390: Convert SPKA
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 24 Aug 2012 22:47:26 +0000 (15:47 -0700)]
target-s390: Convert SPT, STPT
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 24 Aug 2012 22:36:58 +0000 (15:36 -0700)]
target-s390: Convert SCKC, STCKC
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 24 Aug 2012 22:31:07 +0000 (15:31 -0700)]
target-s390: Convert STCK
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 24 Aug 2012 22:20:49 +0000 (15:20 -0700)]
target-s390: Convert SCK
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 5 Sep 2012 17:21:47 +0000 (10:21 -0700)]
target-s390: Convert STIDP
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 24 Aug 2012 21:27:42 +0000 (14:27 -0700)]
target-s390: Convert SRST
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 5 Sep 2012 17:20:53 +0000 (10:20 -0700)]
target-s390: Convert CLST, MVST
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 5 Sep 2012 17:19:44 +0000 (10:19 -0700)]
target-s390: Convert MVPG
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 24 Aug 2012 18:54:04 +0000 (11:54 -0700)]
target-s390: Convert EAR, SAR
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 24 Aug 2012 18:38:12 +0000 (11:38 -0700)]
target-s390: Convert CKSM
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 5 Sep 2012 17:18:21 +0000 (10:18 -0700)]
target-s390: Convert IPM
Note that the previous placement of the PM field was incorrect.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 24 Aug 2012 14:44:43 +0000 (07:44 -0700)]
target-s390: Convert LFPC, SFPC
Note that we were failing to set the rounding mode in fpu_status.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 24 Aug 2012 14:39:11 +0000 (07:39 -0700)]
target-s390: Convert FLOGR
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 24 Aug 2012 04:08:22 +0000 (21:08 -0700)]
target-s390: Convert CONVERT FROM FIXED
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 23 Aug 2012 22:17:35 +0000 (15:17 -0700)]
target-s390: Convert CONVERT TO FIXED
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 5 Sep 2012 17:14:24 +0000 (10:14 -0700)]
target-s390: Convert LOAD ZERO
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 23 Aug 2012 21:33:03 +0000 (14:33 -0700)]
target-s390: Convert FP SQUARE ROOT
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 5 Sep 2012 22:58:27 +0000 (15:58 -0700)]
target-s390: Convert FP LOAD COMPLIMENT, NEGATIVE, POSITIVE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 23 Aug 2012 19:40:09 +0000 (12:40 -0700)]
target-s390: Convert TEST DATA CLASS
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 23 Aug 2012 19:30:12 +0000 (12:30 -0700)]
target-s390: Convert MULTIPLY AND ADD, SUBTRACT
Use the new float*_muladd interface to softfloat.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 23 Aug 2012 19:02:38 +0000 (12:02 -0700)]
target-s390: Convert FP MULTIPLY
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 7 Sep 2012 18:41:12 +0000 (11:41 -0700)]
target-s390: Convert FP DIVIDE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 23 Aug 2012 18:05:03 +0000 (11:05 -0700)]
target-s390: Convert FP SUBTRACT
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 23 Aug 2012 17:48:20 +0000 (10:48 -0700)]
target-s390: Convert FP ADD, COMPARE, LOAD TEST/ROUND/LENGTHENED
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 22:59:19 +0000 (15:59 -0700)]
target-s390: Convert LLGT
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 22:52:55 +0000 (15:52 -0700)]
target-s390: Convert STORE REVERSED
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 22:35:40 +0000 (15:35 -0700)]
target-s390: Convert LOAD REVERSED
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Sun, 2 Sep 2012 17:12:48 +0000 (10:12 -0700)]
target-s390: Convert LOAD CONTROL, part 2
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 22:15:59 +0000 (15:15 -0700)]
target-s390: Convert TPROT
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 22:11:53 +0000 (15:11 -0700)]
target-s390: Convert STCM
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 21:59:22 +0000 (14:59 -0700)]
target-s390: Convert CLM
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 21:46:55 +0000 (14:46 -0700)]
target-s390: Convert COMPARE AND SWAP
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 21:17:58 +0000 (14:17 -0700)]
target-s390: Convert LCTL, STCTL
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 21:09:05 +0000 (14:09 -0700)]
target-s390: Convert EFPC, STFPC
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 20:52:23 +0000 (13:52 -0700)]
target-s390: Convert SIGP
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 20:15:10 +0000 (13:15 -0700)]
target-s390: Convert LRA
Note that truncating the store to r1 based on PSW_MASK_64
is incorrect. We always modify the entire register.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 20:00:27 +0000 (13:00 -0700)]
target-s390: Convert MVCP, MVCS
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 19:54:07 +0000 (12:54 -0700)]
target-s390: Convert CLC
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 18:54:19 +0000 (11:54 -0700)]
target-s390: Convert NC, XC, OC, TR, UNPK
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 18:43:06 +0000 (11:43 -0700)]
target-s390: Convert MVC
The code that was in gen_op_mvc was a bit confused wrt what lengths
it wanted to handle. I also disbelieve that the inline memset is
worthwhile.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 18:24:25 +0000 (11:24 -0700)]
target-s390: Convert CLCLE, MVCLE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 5 Sep 2012 16:38:22 +0000 (09:38 -0700)]
target-s390: Convert LAM, STAM
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 18:08:40 +0000 (11:08 -0700)]
target-s390: Convert STNSM, STOSM
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 17:57:56 +0000 (10:57 -0700)]
target-s390: Convert NI, XI, OI
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 17:22:28 +0000 (10:22 -0700)]
target-s390: Convert MOVE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 16:49:37 +0000 (09:49 -0700)]
target-s390: Convert LOAD, STORE MULTIPLE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 16:22:23 +0000 (09:22 -0700)]
target-s390: Convert SHIFT DOUBLE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 22 Aug 2012 16:15:19 +0000 (09:15 -0700)]
target-s390: Convert SHIFT, ROTATE SINGLE
Note that we were missing the 32-bit SLA.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Tue, 21 Aug 2012 21:41:36 +0000 (14:41 -0700)]
target-s390: Convert DIAGNOSE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Tue, 21 Aug 2012 21:33:36 +0000 (14:33 -0700)]
target-s390: Convert LOAD PSW
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Tue, 21 Aug 2012 21:12:50 +0000 (14:12 -0700)]
target-s390: Convert SET SYSTEM MASK
Signed-off-by: Richard Henderson <rth@twiddle.net>