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>
Richard Henderson [Tue, 21 Aug 2012 21:05:11 +0000 (14:05 -0700)]
target-s390: Convert CONVERT TO DECIMAL
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 5 Sep 2012 19:26:53 +0000 (12:26 -0700)]
target-s390: Convert FP STORE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Tue, 21 Aug 2012 20:48:38 +0000 (13:48 -0700)]
target-s390: Convert EXECUTE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Tue, 21 Aug 2012 20:13:09 +0000 (13:13 -0700)]
target-s390: Convert INSERT CHARACTERS UNDER MASK
Change the CC handling to be more like TEST UNDER MASK, with val & mask.
This lets us handle ICMH much more like ICM.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Tue, 21 Aug 2012 19:36:10 +0000 (12:36 -0700)]
target-s390: Cleanup cc computation helpers
The inline markers hid the fact that {n}abs_32 were unused
because of typos in the main do_calc_cc function. Let the
compiler handle auto-inlining here.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Tue, 21 Aug 2012 14:12:29 +0000 (07:12 -0700)]
target-s390: Convert INSERT CHARACTER
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 5 Sep 2012 19:24:24 +0000 (12:24 -0700)]
target-s390: Convert FP LOAD
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 20 Aug 2012 23:46:49 +0000 (16:46 -0700)]
target-s390: Convert MOVE LONG
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 20 Aug 2012 23:41:05 +0000 (16:41 -0700)]
target-s390: Convert SUPERVISOR CALL
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 20 Aug 2012 23:28:56 +0000 (16:28 -0700)]
target-s390: Convert SET ADDRESSING MODE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 20 Aug 2012 23:20:58 +0000 (16:20 -0700)]
target-s390: Convert TEST UNDER MASK
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 6 Sep 2012 00:27:40 +0000 (17:27 -0700)]
target-s390: Send signals for divide
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 20 Aug 2012 21:02:02 +0000 (14:02 -0700)]
target-s390: Convert DIVIDE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 20 Aug 2012 21:22:58 +0000 (14:22 -0700)]
target-s390: Convert BRANCH ON COUNT
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 20 Aug 2012 15:28:02 +0000 (08:28 -0700)]
target-s390: Convert BRANCH ON CONDITION
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Sat, 18 Aug 2012 18:38:19 +0000 (11:38 -0700)]
target-s390: Convert BRANCH AND SAVE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Sat, 18 Aug 2012 01:52:33 +0000 (18:52 -0700)]
target-s390: Convert ADD LOGICAL CARRY and SUBTRACT LOGICAL BORROW
I'm resonably certain that the carry/borrow-out condition for both
helpers was incorrect, failing to take into account the carry-in.
Adding the new CC_OP codes also allows removing the awkward interface
we used for the slb helpers.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 17 Aug 2012 23:00:08 +0000 (16:00 -0700)]
target-s390: Convert STORE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 17 Aug 2012 22:01:36 +0000 (15:01 -0700)]
target-s390: Convert AND, OR, XOR, INSERT IMMEDIATE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 17 Aug 2012 18:38:37 +0000 (11:38 -0700)]
target-s390: Convert LOAD COMPLIMENT, POSITIVE, NEGATIVE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 17 Aug 2012 18:20:33 +0000 (11:20 -0700)]
target-s390: Convert LOAD LOGICAL IMMEDIATE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 17 Aug 2012 18:03:39 +0000 (11:03 -0700)]
target-s390: Convert LOAD AND TEST
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 17 Aug 2012 17:27:29 +0000 (10:27 -0700)]
target-s390: Convert LOAD (LOGICAL) BYTE, CHARACTER, HALFWORD
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 17 Aug 2012 16:57:07 +0000 (09:57 -0700)]
target-s390: Convert LOAD ADDRESS
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Fri, 17 Aug 2012 16:45:53 +0000 (09:45 -0700)]
target-s390: Convert LOAD, LOAD LOGICAL
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 16 Aug 2012 22:20:51 +0000 (15:20 -0700)]
target-s390: Convert COMPARE, COMPARE LOGICAL
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Sat, 1 Sep 2012 23:28:39 +0000 (16:28 -0700)]
target-s390: Convert AND, OR, XOR
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Tue, 25 Sep 2012 22:26:59 +0000 (15:26 -0700)]
target-s390: Convert 64-bit MULTIPLY LOGICAL
Use a new "retxl" member of CPUS290XState to return the "eXtra Low" part
of a 128-bit value. That said, this will get used when two independent
values need returning (e.g. quotient+remainder) as well.
At the same time, shuffle the elements of CPUS390XState to get this new
space from existing padding in the structure.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Tue, 25 Sep 2012 22:17:59 +0000 (15:17 -0700)]
target-s390: Convert 32-bit MULTIPLY, MULTIPLY LOGICAL
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Tue, 25 Sep 2012 22:10:35 +0000 (15:10 -0700)]
target-s390: Convert MULTIPLY HALFWORD, SINGLE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 16 Aug 2012 21:42:49 +0000 (14:42 -0700)]
target-s390: Implement ADD LOGICAL WITH SIGNED IMMEDIATE
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 27 Aug 2012 21:46:42 +0000 (14:46 -0700)]
target-s390: Implement SUBTRACT HALFWORD
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 16 Aug 2012 21:09:45 +0000 (14:09 -0700)]
target-s390: Convert ADD HALFWORD
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Sat, 15 Sep 2012 02:31:57 +0000 (19:31 -0700)]
target-s390: Reorg exception handling
Make the user path more like the system path. Prepare for more kinds
of runtime exceptions. Rename ILC to ILEN to make it clear that we
want to pass around a full instruction length, rather than a "code"
that happens to be stored one bit left in a larger field.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Wed, 5 Sep 2012 20:31:01 +0000 (13:31 -0700)]
target-s390: Split out disas_jcc
Lots of duplicated code replaced with a couple of tables. We no longer
attempt to manually invert the logic operation: the comments now match
the code. In the fully general test, constant propagate (1 << (3 - cc))
into (8 >> cc).
The new function will be usable by non-branch insns as well.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Thu, 16 Aug 2012 00:16:22 +0000 (17:16 -0700)]
target-s390: Add format based disassassmbly infrastructure
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Mon, 24 Sep 2012 19:06:15 +0000 (12:06 -0700)]
target-s390: Fix PSW_MASK handling
We were treating psw.mask as the 32-bit quantity it is in ESA mode.
In particular, the CC field was at the wrong place.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Sat, 22 Sep 2012 12:28:43 +0000 (05:28 -0700)]
target-s390: Tidy unconditional BRCL
Yes, we're about to rewrite all of this, but having this unconditional
jump recompute cc_op is a large source of "false diff errors" when
trying to examine before and after dumps.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Sat, 22 Sep 2012 12:25:09 +0000 (05:25 -0700)]
target-s390: Fix BCR
There were are two exit paths for which we forgot to
copy s->cc_op back to the tcg register.
Signed-off-by: Richard Henderson <rth@twiddle.net>
Richard Henderson [Sat, 22 Sep 2012 12:22:18 +0000 (05:22 -0700)]
target-s390: Fix SACF exit
DISAS_EXCP is exit via exception; we wanted DISAS_JUMP.
This matters when we start cleaning up the TB exit paths.
Signed-off-by: Richard Henderson <rth@twiddle.net>