From patchwork Fri Oct 20 23:19:31 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 116538 Delivered-To: patch@linaro.org Received: by 10.140.22.164 with SMTP id 33csp2220453qgn; Fri, 20 Oct 2017 16:20:56 -0700 (PDT) X-Received: by 10.237.60.249 with SMTP id e54mr9922502qtf.23.1508541656392; Fri, 20 Oct 2017 16:20:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1508541656; cv=none; d=google.com; s=arc-20160816; b=eWURI7gDIKMDqLobKORfAaFpl8u/lCcSUI2gSpiPJDY5q8ywQpefCNG7FV/Xe/rxgc WiBgcvWZsIbe50xgrm0v0XSnlFcuHHsMIxovJnKFPdl4h+0NpmtYKIMo2S1KuEp9FGK7 XPDAIvqJB4Pnhzo2PSdFHf1si+C2ZrB2UT9yLLIwdLNzFcMFdqJhmlvPNoOmiNewKJVK Zyk+gtAj+03NBCppT1crecnEdqBKmHSkoQBlEQ0VwnJIWul46Jme5wYRBY/UA7wbLavz luKWp3xO0AYOW1mUoORjxszcHRBDQUrdGemfTlM8s33KQMP+bXEWnXpcZJfcFhTDZMvw 6qjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:message-id:date:to:from :dkim-signature:arc-authentication-results; bh=xBXtLd4xd1PCkJB7XB2EBhGw9nCAwu5OspZXIgPVckI=; b=zuNv2TG4C6ptvDr04yeC5rSbImlbDSGEiq+axdjYPzb3FGkwEr9eBvTSgG+pDTs5XH wKoMxzLXn6VsSa1aJBGa9RdKdUFlMFeUU+V0EwqBvqIedHWSI/3uKhw4RZ1euSJ7AMtZ how0FULvOZ0zfEW28sImEigbZYmOtGuPj/z4r6pSVoAMH7iyorjWfyR+C8QxwzXvfJJp HYXYifAHABm2Btx3AXjIkVfNcsocS7Enmq7evs2A8RhXk+dyCOGSTbLFGFJi5mqE7+H7 N32ENMIe4DmgoqZLsuyMeCYMQvMhdHDq9usHVxI1hSBKTpoQDx4PQ/6mF6gr6Y2GLU7x WNJg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=Zeu/TYFl; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id o87si1654969qki.256.2017.10.20.16.20.55 for (version=TLS1 cipher=AES128-SHA bits=128/128); Fri, 20 Oct 2017 16:20:56 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=Zeu/TYFl; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:55975 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e5gb0-0005l4-55 for patch@linaro.org; Fri, 20 Oct 2017 19:20:54 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44199) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e5gae-0005ky-1L for qemu-devel@nongnu.org; Fri, 20 Oct 2017 19:20:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e5gaa-0007Tw-2A for qemu-devel@nongnu.org; Fri, 20 Oct 2017 19:20:32 -0400 Received: from mail-pf0-x235.google.com ([2607:f8b0:400e:c00::235]:53740) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e5gaZ-0007TW-O6 for qemu-devel@nongnu.org; Fri, 20 Oct 2017 19:20:27 -0400 Received: by mail-pf0-x235.google.com with SMTP id t188so13066741pfd.10 for ; Fri, 20 Oct 2017 16:20:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=xBXtLd4xd1PCkJB7XB2EBhGw9nCAwu5OspZXIgPVckI=; b=Zeu/TYFlZ1WdkKcHVak6KOVYjhp8xxJ0m1SPhGx4VaO5jJMRCPEwrXv3ITOVIobKwP HzLYaWo7mhqYgSnn3quD3LKQmWbbjBMEBDUT2hnuiB8yn2LUfFZLKo7/1T8FVMOI8212 3tJVkwVJr/VXWDVLOjx0VZb8orDOf40qLQJXE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=xBXtLd4xd1PCkJB7XB2EBhGw9nCAwu5OspZXIgPVckI=; b=G4DhK7FwQ+MhTKWHKVMhnr2ZTPiN6oOxBuIe/mlDJ7WCUOHoUhYCz7G0tlpPCBJnTX YAfkGdGqfeGa7dael41dSGkUV3P5+UDsPS6DXMPg/r/YGhdr84gMX/c2sr/LZbjmc2+5 cfWQ3nwDmbirRgJcMtYwBWL6G48xzyu0s8L/OOJEM70c8TUb19ST1EC/VvbiCm/zSfJp jIItCsxsdl1Z/9AawxsnT66pYDZ1+wd4aoAzXITKAu5nee73emQjeSLMsYaZQPYc3QX9 wRbupBgOuQKSzekiDnyqJS51JbkYDvFvM/U8Sym2rxdHEQlh0kmOjpS9KiJOOscRjcvS bARw== X-Gm-Message-State: AMCzsaUGKm0M8TKi0xUIBWdl0SuqRrbcWI7DxYeAVohcpe+NZgxrC7xL xkbC/eGzLJF8Gb0hBLoHZyxY0HEZ/uc= X-Google-Smtp-Source: ABhQp+TK7jJkjBbTZjqSR+x9TEZzuD1s/4dv7VgY17hAIxZHRd7FDMD/gEZJEGFBYlBb1rq/qov0pg== X-Received: by 10.98.29.212 with SMTP id d203mr6502893pfd.226.1508541626145; Fri, 20 Oct 2017 16:20:26 -0700 (PDT) Received: from cloudburst.twiddle.net (97-113-165-104.tukw.qwest.net. [97.113.165.104]) by smtp.gmail.com with ESMTPSA id a17sm3532594pfk.173.2017.10.20.16.20.24 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 20 Oct 2017 16:20:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Fri, 20 Oct 2017 16:19:31 -0700 Message-Id: <20171020232023.15010-1-richard.henderson@linaro.org> X-Mailer: git-send-email 2.13.6 MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::235 Subject: [Qemu-devel] [PATCH v7 00/52] tcg queued patches X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: pbonzini@redhat.com, cota@braap.org, f4bug@amsat.org Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" A bit silly to keep calling this "tb_lock removal", since it doesn't quite, and it has accumulated several additional patches. Changes since v6: * Dropped unnecessary rename of "temps". (Patch 13) * Changed how I avoid 0 as a TCGv_{i32,i64,ptr} value. Instead of avoiding TCGTemp index 0, use the offset of the TCGTemp within TCGContext. (Patches 16-19,21) * Fixed icount wrt CF_HASH_MASK. I strongly suspect this fixes any number of icount problems with MTTCG, since we relied on unlocked magic code generation. (Patch 24) * Merged removal of tb_tc.search from Emilio. (Patch 38) * Added patch 52 from Emilio. r~ Emilio G. Cota (25): tcg: define CF_PARALLEL and use it for TB hashing along with CF_COUNT_MASK tcg: convert tb->cflags reads to tb_cflags(tb) target/arm: check CF_PARALLEL instead of parallel_cpus target/hppa: check CF_PARALLEL instead of parallel_cpus target/i386: check CF_PARALLEL instead of parallel_cpus target/m68k: check CF_PARALLEL instead of parallel_cpus target/s390x: check CF_PARALLEL instead of parallel_cpus target/sh4: check CF_PARALLEL instead of parallel_cpus target/sparc: check CF_PARALLEL instead of parallel_cpus tcg: check CF_PARALLEL instead of parallel_cpus cpu-exec: lookup/generate TB outside exclusive region during step_atomic translate-all: use a binary search tree to track TBs in TBContext exec-all: rename tb_free to tb_remove translate-all: report correct avg host TB size tcg: take tb_ctx out of TCGContext tcg: define tcg_init_ctx and make tcg_ctx a pointer gen-icount: fold exitreq_label into TCGContext tcg: introduce **tcg_ctxs to keep track of all TCGContext's tcg: distribute profiling counters across TCGContext's tcg: allocate optimizer temps with tcg_malloc osdep: introduce qemu_mprotect_rwx/none translate-all: use qemu_protect_rwx/none helpers tcg: introduce regions to split code_gen_buffer tcg: enable multiple TCG contexts in softmmu translate-all: exit from tb_phys_invalidate if qht_remove fails Richard Henderson (27): tcg: Merge opcode arguments into TCGOp tcg: Propagate args to op->args in optimizer tcg: Propagate args to op->args in tcg.c tcg: Propagate TCGOp down to allocators tcg: Introduce arg_temp tcg: Add temp_global bit to TCGTemp tcg: Return NULL temp for TCG_CALL_DUMMY_ARG tcg: Introduce temp_arg, export temp_idx tcg: Use per-temp state data in liveness tcg: Avoid loops against variable bounds tcg: Change temp_allocate_frame arg to TCGTemp tcg: Remove unused TCG_CALL_DUMMY_TCGV tcg: Use per-temp state data in optimize tcg: Push tcg_ctx into generator functions tcg: Push tcg_ctx into tcg_gen_callN tcg: Introduce tcgv_{i32,i64,ptr}_{arg,temp} tcg: Introduce temp_tcgv_{i32,i64,ptr} tcg: Remove GET_TCGV_* and MAKE_TCGV_* tcg: Remove TCGV_EQUAL* qom: Introduce CPUClass.tcg_initialize tcg: Use offsets not indices for TCGv_* tcg: Use pointers in TCGOp->args tcg: Add CPUState cflags_next_tb tcg: Include CF_COUNT_MASK in CF_HASH_MASK tcg: Add CF_LAST_IO + CF_USE_ICOUNT to CF_HASH_MASK tcg: Remove CF_IGNORE_ICOUNT tcg: Initialize cpu_env generically include/exec/exec-all.h | 42 +- include/exec/gen-icount.h | 27 +- include/exec/helper-gen.h | 22 +- include/exec/helper-head.h | 16 +- include/exec/tb-context.h | 6 +- include/exec/tb-hash-xx.h | 9 +- include/exec/tb-hash.h | 4 +- include/exec/tb-lookup.h | 6 +- include/qemu/osdep.h | 2 + include/qom/cpu.h | 9 +- target/arm/helper-a64.h | 4 + target/arm/translate.h | 1 - target/hppa/helper.h | 2 + target/m68k/helper.h | 1 + target/s390x/helper.h | 4 + target/sparc/cpu.h | 2 +- tcg/tcg-op.h | 140 +++--- tcg/tcg.h | 287 ++++++----- accel/tcg/cpu-exec.c | 100 ++-- accel/tcg/tcg-runtime.c | 4 +- accel/tcg/translate-all.c | 533 +++++++++----------- accel/tcg/translator.c | 4 +- bsd-user/main.c | 3 +- cpus.c | 14 + exec.c | 14 +- linux-user/main.c | 9 +- linux-user/syscall.c | 1 + qom/cpu.c | 1 + target/alpha/cpu.c | 3 +- target/alpha/translate.c | 14 +- target/arm/cpu.c | 6 +- target/arm/helper-a64.c | 38 +- target/arm/op_helper.c | 7 - target/arm/translate-a64.c | 38 +- target/arm/translate.c | 19 +- target/cris/cpu.c | 16 +- target/cris/translate.c | 15 +- target/cris/translate_v10.c | 2 - target/hppa/cpu.c | 3 +- target/hppa/op_helper.c | 32 +- target/hppa/translate.c | 24 +- target/i386/cpu.c | 5 +- target/i386/translate.c | 67 ++- target/lm32/cpu.c | 7 +- target/lm32/translate.c | 18 +- target/m68k/cpu.c | 7 +- target/m68k/op_helper.c | 33 +- target/m68k/translate.c | 25 +- target/microblaze/cpu.c | 7 +- target/microblaze/translate.c | 10 +- target/mips/cpu.c | 5 +- target/mips/translate.c | 37 +- target/moxie/cpu.c | 7 +- target/moxie/translate.c | 11 +- target/nios2/cpu.c | 7 +- target/nios2/translate.c | 10 +- target/openrisc/cpu.c | 7 +- target/openrisc/translate.c | 9 +- target/ppc/translate.c | 20 +- target/ppc/translate_init.c | 37 +- target/s390x/cpu.c | 7 +- target/s390x/mem_helper.c | 80 ++- target/s390x/translate.c | 40 +- target/sh4/cpu.c | 5 +- target/sh4/translate.c | 19 +- target/sparc/cpu.c | 5 +- target/sparc/translate.c | 36 +- target/tilegx/cpu.c | 7 +- target/tilegx/translate.c | 5 +- target/tricore/cpu.c | 5 +- target/tricore/translate.c | 11 +- target/unicore32/cpu.c | 7 +- target/unicore32/translate.c | 10 +- target/xtensa/cpu.c | 7 +- target/xtensa/translate.c | 31 +- tcg/optimize.c | 654 +++++++++++++----------- tcg/tcg-op.c | 190 +++---- tcg/tcg.c | 1116 +++++++++++++++++++++++++++-------------- tests/qht-bench.c | 2 +- util/osdep.c | 41 ++ 80 files changed, 2280 insertions(+), 1811 deletions(-) -- 2.13.6