summaryrefslogtreecommitdiffstats
path: root/tcg/s390
Commit message (Collapse)AuthorAgeFilesLines
* tcg-s390: Implement direct chaining of TBsRichard Henderson2014-05-151-1/+3
| | | | Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Improve setcondRichard Henderson2014-05-151-6/+91
| | | | | | | | There are a variety of common cases for which we can use carry tricks to avoid a conditional branch. On very new hardware, use LOAD ON CONDITION instead of a conditional branch. Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Allow immediate operands to add2 and sub2Richard Henderson2014-05-151-12/+52
| | | | Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Implement tcg_register_jitRichard Henderson2014-05-151-7/+55
| | | | Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Use more risbg in the tlb sequenceRichard Henderson2014-05-151-21/+28
| | | | | | | | | | | | | Elides two insns from the sequence. The resulting tlb compare sequence is satisfyingly minimal: risbg %r2,%r8,51,186,56 risbg %r3,%r8,61,178,0 cg %r3,904(%r10,%r2) lg %r2,920(%r10,%r2) jlh tlb_miss Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Move ldst helpers out of lineRichard Henderson2014-05-151-92/+118
| | | | | | That is, the old LDST_OPTIMIZATION. Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Convert to new ldst opcodesRichard Henderson2014-05-152-116/+56
| | | | Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Integrate endianness into TCGMemOpRichard Henderson2014-05-151-64/+60
| | | | Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Convert to TCGMemOpRichard Henderson2014-05-151-46/+36
| | | | Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Fix off-by-one in wraparound andiRichard Henderson2014-05-151-2/+2
| | | | Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg: Remove unreachable code in tcg_out_op and op_defsRichard Henderson2014-05-121-30/+5
| | | | | | | | | | | The INDEX_op_call case has just been obsoleted; the mov and movi cases have not been reachable for years. Attempt to document this both in each tcg_out_op switch, and via TCG_OPF_NOT_PRESENT. Because of the TCG_OPF_NOT_PRESENT change, this must be done for all targets in a single commit. Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Rename tgen_calli to tcg_out_callRichard Henderson2014-05-121-4/+4
| | | | Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Define TCG_TARGET_INSN_UNIT_SIZERichard Henderson2014-05-122-48/+45
| | | | | | And use tcg pointer differencing functions as appropriate. Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg: Add INDEX_op_trunc_shr_i32Richard Henderson2014-04-281-0/+1
| | | | | | Let the backend do something special for truncation. Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg: Use HOST_WORDS_BIGENDIANRichard Henderson2014-04-181-2/+0
| | | | | | Instead of rolling a local TCG_TARGET_WORDS_BIGENDIAN. Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Remove W constraintRichard Henderson2014-04-181-24/+19
| | | | | | Now redundant with the type parameter to tcg_target_const_match. Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg: Add TCGType parameter to tcg_target_const_matchRichard Henderson2014-04-181-1/+1
| | | | | | | | Most 64-bit targets need to be able to ignore the high bits of a TCG_TYPE_I32 value. Suggested-by: Stuart Brady <sdb@zubnet.me.uk> Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg/s390: Remove sigill_handlerRichard Henderson2014-02-011-19/+0
| | | | | | | | | Commit c9baa30f42a87f61627391698f63fa4d1566d9d8 failed to delete all of the relevant code, leading to Werrors about unused symbols. Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
* tcg-s390: Use qemu_getauxval in query_facilitiesRichard Henderson2013-11-301-83/+12
| | | | | | | | | | No need to set up a SIGILL signal handler for detection anymore. Remove a ton of sanity checks that must be true, given that we're requiring a 64-bit build (the note about 31-bit KVM is satisfied by configuring with TCI). Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg: Add qemu_ld_st_i32/64Richard Henderson2013-10-101-0/+2
| | | | | | | Step two in the transition, adding the new ldst opcodes. Keep the old opcodes around until all backends support the new opcodes. Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg: Add tcg-be-null.hRichard Henderson2013-10-101-0/+2
| | | | | | | | | This is a no-op backend data implementation, for those targets that are not currently using the load/store optimization path. This is prepatory to always requiring these functions in all backends. Signed-off-by: Richard Henderson <rth@twiddle.net>
* exec: Split softmmu_defs.hRichard Henderson2013-09-021-3/+0
| | | | | | | | | | | The _cmmu helpers can be moved to exec-all.h. The helpers that are used from TCG will shortly need access to tcg_target_long so move their declarations into tcg.h. This requires minor include adjustments to all TCG backends. Reviewed-by: Aurelien Jarno <aurelien@aurel32.net> Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg: Change tcg_out_ld/st offset to intptr_tRichard Henderson2013-09-021-2/+2
| | | | | Reviewed-by: Aurelien Jarno <aurelien@aurel32.net> Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg: Change relocation offsets to intptr_tRichard Henderson2013-09-021-3/+3
| | | | | Reviewed-by: Aurelien Jarno <aurelien@aurel32.net> Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg: Change flush_icache_range arguments to uintptr_tRichard Henderson2013-09-021-2/+1
| | | | | Reviewed-by: Aurelien Jarno <aurelien@aurel32.net> Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg: Add muluh and mulsh opcodesRichard Henderson2013-09-021-0/+4
| | | | | | | | Use them in places where mulu2 and muls2 are used. Optimize mulx2 with dead low part to mulxh. Reviewed-by: Aurelien Jarno <aurelien@aurel32.net> Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg: Remove redundant tcg_target_init checksRichard Henderson2013-06-051-7/+0
| | | | | | | | We've got a compile-time check for the condition in exec/cpu-defs.h. Reviewed-by: Andreas Färber <afaerber@suse.de> Reviewed-by: liguang <lig.fnst@cn.fujitsu.com> Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Fix merge error in tgen_brcondRichard Henderson2013-04-051-1/+1
| | | | | | | When the TCG condition codes were re-organized last year, we failed to update all of the "old-style" tests for unsigned. Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Use all 20 bits of the offset in tcg_out_memRichard Henderson2013-04-051-4/+5
| | | | | | | This can save one insn, if the constant has any bits in 32-63 set, but no bits in 21-31 set. It never results in more insns. Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Use load-address for additionRichard Henderson2013-04-051-57/+56
| | | | | | | | Since we're always in 64-bit mode, load address performs a full 64-bit add. Use that for 3-address addition, as well as for larger constant addends when we lack extended-immediates facility. Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Cleanup argument shuffling fixme in softmmu codeRichard Henderson2013-04-051-47/+38
| | | | Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Use risbgz for andiRichard Henderson2013-04-051-5/+53
| | | | | | This is immediately usable by the tlb lookup code. Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Remove constraint letters for andRichard Henderson2013-04-051-117/+32
| | | | | | | Since we have a free temporary and can always just load the constant, we ought to do so, rather than spending the same effort constraining the const. Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Implement deposit opcodesRichard Henderson2013-04-052-2/+30
| | | | Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Implement movcond opcodesRichard Henderson2013-04-052-4/+41
| | | | Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Implement mulu2_i64 opcodeRichard Henderson2013-04-052-1/+6
| | | | Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Implement add2/sub2 opcodesRichard Henderson2013-04-052-4/+42
| | | | Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Remove useless preprocessor conditionsRichard Henderson2013-04-052-14/+5
| | | | | | | We only support 64-bit code generation for s390x. Don't clutter the code with ifdefs that suggest otherwise. Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Properly allocate a stack frame.Richard Henderson2013-04-052-7/+15
| | | | | | | | Set TCG_TARGET_CALL_STACK_OFFSET properly for the abi. Allocate the standard TCG_STATIC_CALL_ARGS_SIZE. And while we're at it, allocate space for CPU_TEMP_BUF_NLONGS. Signed-off-by: Richard Henderson <rth@twiddle.net>
* tcg-s390: Fix moviRichard Henderson2013-04-051-1/+1
| | | | | The code to load the high 64 bits assumed that the insn used to load the low 64 bits zero-extended. Enforce that.
* tcg: Add signed multiword multiplication operationsRichard Henderson2013-02-231-0/+2
| | | | | Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* tcg: Add 64-bit multiword arithmetic operationsRichard Henderson2013-02-231-0/+3
| | | | | | Matching the 32-bit multiword arithmetic that we already have. Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* tcg: Make 32-bit multiword operations optional for 64-bit hostsRichard Henderson2013-02-231-0/+3
| | | | | Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* exec: move include files to include/exec/Paolo Bonzini2012-12-191-1/+1
| | | | Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
* janitor: add guards to headersPaolo Bonzini2012-12-191-0/+3
| | | | Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
* tcg: Remove TCG_TARGET_HAS_GUEST_BASE definePeter Maydell2012-10-121-2/+0
| | | | | | | | | | GUEST_BASE support is now supported by all TCG backends, and is now mandatory. Drop the now-pointless TCG_TARGET_HAS_GUEST_BASE define (set by every backend) and the error if it is unset. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
* tcg: Add TCG_COND_NEVER, TCG_COND_ALWAYSRichard Henderson2012-10-061-2/+2
| | | | | | | | | | There are several cases that can be handled easier inside both translators and code generators if we have out-of-band values for conditions. It's easy enough to handle ALWAYS and NEVER in the natural way inside the tcg middle-end. Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
* tcg: Add is_unsigned_condRichard Henderson2012-10-061-1/+1
| | | | | | | | Before we rearrange the TCG_COND enumeration, add a predicate for the (single) use of comparisons vs TCGCond. Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
* tcg: remove obsolete jmp opAurelien Jarno2012-10-061-6/+0
| | | | | | | | | | | | | The TCG jmp operation doesn't really make sense in the QEMU context, it is unused, it is not implemented by some targets, and it is wrongly implemented by some others. This patch simply removes it. Reviewed-by: Richard Henderson <rth@twiddle.net> Acked-by: Blue Swirl <blauwirbel@gmail.com> Acked-by: Stefan Weil<sw@weilnetz.de> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
* tcg: Remove tcg_target_get_call_iarg_regs_countStefan Weil2012-09-221-5/+0
| | | | | | | | | | | | | The TCG targets no longer need individual implementations. Since commit 6a18ae2d2947532d5c26439548afa0481c4529f9, 'flags' is no longer used in tcg_target_get_call_iarg_regs_count. The remaining tcg_target_get_call_iarg_regs_count is trivial and only called once. Therefore the patch eliminates it completely. Signed-off-by: Stefan Weil <sw@weilnetz.de> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
OpenPOWER on IntegriCloud