target-s390: Convert SPX, STPX
Signed-off-by: Richard Henderson <rth@twiddle.net>
target-s390: Convert STAP
target-s390: Convert IPTE
target-s390: Convert IPM
Note that the previous placement of the PM field was incorrect.
target-s390: Convert CKSM
target-s390: Convert EAR, SAR
target-s390: Convert MVPG
target-s390: Convert CLST, MVST
target-s390: Convert SRST
target-s390: Convert STIDP
target-s390: Convert SCK
target-s390: Convert STCK
target-s390: Convert SCKC, STCKC
target-s390: Convert SPT, STPT
target-s390: Convert SPKA
target-s390: Convert PTLB
target-s390: Convert FP SUBTRACT
target-s390: Convert FP DIVIDE
target-s390: Convert FP MULTIPLY
target-s390: Convert MULTIPLY AND ADD, SUBTRACT
Use the new float*_muladd interface to softfloat.
target-s390: Convert TEST DATA CLASS
target-s390: Convert FP LOAD COMPLIMENT, NEGATIVE, POSITIVE
target-s390: Convert FP SQUARE ROOT
target-s390: Convert LOAD ZERO
target-s390: Convert CONVERT TO FIXED
target-s390: Convert CONVERT FROM FIXED
target-s390: Convert FLOGR
target-s390: Convert LFPC, SFPC
Note that we were failing to set the rounding mode in fpu_status.
target-s390: Convert EFPC, STFPC
target-s390: Convert LCTL, STCTL
target-s390: Convert COMPARE AND SWAP
target-s390: Convert CLM
target-s390: Convert STCM
target-s390: Convert TPROT
target-s390: Convert LOAD CONTROL, part 2
target-s390: Convert LOAD REVERSED
target-s390: Convert STORE REVERSED
target-s390: Convert LLGT
target-s390: Convert FP ADD, COMPARE, LOAD TEST/ROUND/LENGTHENED
target-s390: Convert LOAD, STORE MULTIPLE
target-s390: Convert MOVE
target-s390: Convert NI, XI, OI
target-s390: Convert STNSM, STOSM
target-s390: Convert LAM, STAM
target-s390: Convert CLCLE, MVCLE
target-s390: Convert MVC
The code that was in gen_op_mvc was a bit confused wrt what lengthsit wanted to handle. I also disbelieve that the inline memset isworthwhile.
target-s390: Convert NC, XC, OC, TR, UNPK
target-s390: Convert CLC
target-s390: Convert MVCP, MVCS
target-s390: Convert LRA
Note that truncating the store to r1 based on PSW_MASK_64is incorrect. We always modify the entire register.
target-s390: Convert SIGP
target-s390: Convert FP LOAD
target-s390: Convert INSERT CHARACTER
target-s390: Cleanup cc computation helpers
The inline markers hid the fact that {n}abs_32 were unusedbecause of typos in the main do_calc_cc function. Let thecompiler handle auto-inlining here.
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.
target-s390: Convert EXECUTE
target-s390: Convert FP STORE
target-s390: Convert CONVERT TO DECIMAL
target-s390: Convert SET SYSTEM MASK
target-s390: Convert LOAD PSW
target-s390: Convert DIAGNOSE
target-s390: Convert SHIFT, ROTATE SINGLE
Note that we were missing the 32-bit SLA.
target-s390: Convert SHIFT DOUBLE
target-s390: Send signals for divide
target-s390: Convert TEST UNDER MASK
target-s390: Convert SET ADDRESSING MODE
target-s390: Convert SUPERVISOR CALL
target-s390: Convert MOVE LONG
target-s390: Convert ADD LOGICAL CARRY and SUBTRACT LOGICAL BORROW
I'm resonably certain that the carry/borrow-out condition for bothhelpers was incorrect, failing to take into account the carry-in.Adding the new CC_OP codes also allows removing the awkward interface...
target-s390: Convert BRANCH AND SAVE
target-s390: Convert BRANCH ON CONDITION
target-s390: Convert BRANCH ON COUNT
target-s390: Convert DIVIDE
target-s390: Reorg exception handling
Make the user path more like the system path. Prepare for more kindsof runtime exceptions. Rename ILC to ILEN to make it clear that wewant to pass around a full instruction length, rather than a "code" that happens to be stored one bit left in a larger field....
target-s390: Convert ADD HALFWORD
target-s390: Implement SUBTRACT HALFWORD
target-s390: Implement ADD LOGICAL WITH SIGNED IMMEDIATE
target-s390: Convert MULTIPLY HALFWORD, SINGLE
target-s390: Convert 32-bit MULTIPLY, MULTIPLY LOGICAL
target-s390: Convert 64-bit MULTIPLY LOGICAL
Use a new "retxl" member of CPUS290XState to return the "eXtra Low" partof a 128-bit value. That said, this will get used when two independentvalues need returning (e.g. quotient+remainder) as well.
At the same time, shuffle the elements of CPUS390XState to get this new...
target-s390: Convert AND, OR, XOR
target-s390: Convert COMPARE, COMPARE LOGICAL
target-s390: Convert LOAD, LOAD LOGICAL
target-s390: Convert LOAD ADDRESS
target-s390: Convert LOAD (LOGICAL) BYTE, CHARACTER, HALFWORD
target-s390: Convert LOAD AND TEST
target-s390: Convert LOAD LOGICAL IMMEDIATE
target-s390: Convert LOAD COMPLIMENT, POSITIVE, NEGATIVE
target-s390: Convert AND, OR, XOR, INSERT IMMEDIATE
target-s390: Convert STORE
target-s390: Fix gdbstub
The real gdb protocol doesn't split out pc or cc as real registers.Those are pseudos that are extracted as needed from the PSW. Don'tmodify env->cc_op during read -- that way lies heisenbugs.
Fill in the XXX for the fp registers....
target-s390: Add missing temp_free in gen_op_calc_cc
target-s390: Use TCG registers for FPR
At the same time, tidy other usages of tcg_gen_deposit_i64.In some cases we can "type cast" rather than extend, and inothers we can allow tcg_gen_deposit_i64 itself to optimizethe HOST_LONG_BITS==32 case.
target-s390: Register helpers
Which highlights a lot of cc helpers that no longer exist.
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.
target-s390: Fix BCR
There were are two exit paths for which we forgot tocopy s->cc_op back to the tcg register.
target-s390: Tidy unconditional BRCL
Yes, we're about to rewrite all of this, but having this unconditionaljump recompute cc_op is a large source of "false diff errors" whentrying to examine before and after dumps.
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.
target-s390: Add format based disassassmbly infrastructure
target-s390: Split out disas_jcc
Lots of duplicated code replaced with a couple of tables. We no longerattempt to manually invert the logic operation: the comments now matchthe code. In the fully general test, constant propagate (1 << (3 - cc))into (8 >> cc)....