Richard Henderson
240f46b9f2
target/sparc: Remove FSR_FTT_NMASK, FSR_FTT_CEXC_NMASK
...
These macros are no longer used.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-23-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
d8c5b92f3f
target/sparc: Split fcc out of env->fsr
...
Represent each fcc field separately from the rest of fsr.
This vastly simplifies floating-point comparisons.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-22-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
c9fa8e586b
target/sparc: Remove cpu_fsr
...
Drop this field as a tcg global, loading it explicitly in the
few places required. This means that all FPop helpers may
once again be TCG_CALL_NO_WG.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-21-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
3590f01ed2
target/sparc: Split cexc and ftt from env->fsr
...
These two fields are adjusted by all FPop insns.
Having them separate makes it easier to set without masking.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-20-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
db71391123
target/sparc: Merge check_ieee_exceptions with FPop helpers
...
If an exception is to be raised, the destination fp register
should be unmodified. The current implementation is incorrect,
in that double results will be written back before calling
gen_helper_check_ieee_exceptions, despite the placement of
gen_store_fpr_D, since gen_dest_fpr_D returns cpu_fpr[].
We can simplify the entire implementation by having each
FPOp helper call check_ieee_exceptions. For the moment this
requires that all FPop helpers write to the TCG global cpu_fsr,
so remove TCG_CALL_NO_WG from the DEF_HELPER_FLAGS_*.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-19-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
efeb8b0750
target/sparc: Clear cexc and ftt in do_check_ieee_exceptions
...
Don't do the clearing explicitly before each FPop,
rather do it as part of the rest of exception handling.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-18-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
49bb972513
target/sparc: Split ver from env->fsr
...
This field is read-only. It is easier to store it separately
and merge it only upon read.
While we're at it, use FSR_VER_SHIFT to initialize fpu_version.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-17-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
1ccd6e13cc
target/sparc: Introduce cpu_get_fsr, cpu_put_fsr
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-16-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
41535ca6f4
target/sparc: Remove qt0, qt1 temporaries
...
These are no longer used for passing data to/from helpers.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-15-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
ba21dc991b
target/sparc: Use i128 for Fdmulq
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-14-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
fdc50716a0
target/sparc: Use i128 for FdTOq, FxTOq
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-13-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
0b2a61cc26
target/sparc: Use i128 for FsTOq, FiTOq
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-12-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
f3ceafad5e
target/sparc: Use i128 for FCMPq, FCMPEq
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-11-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
25a5769e3b
target/sparc: Use i128 for FqTOd, FqTOx
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-10-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
d81e3efed9
target/sparc: Use i128 for FqTOs, FqTOi
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-9-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
16bedf89c1
target/sparc: Use i128 for FADDq, FSUBq, FMULq, FDIVq
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-8-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
e41716be4d
target/sparc: Use i128 for FSQRTq
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-7-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
daf457d40f
target/sparc: Inline FNEG, FABS
...
These are simple bit manipulation insns.
Begin using i128 for float128.
Implement FMOVq with do_qq.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-6-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
33ec424535
target/sparc: Introduce gen_{load,store}_fpr_Q
...
Use them for trans_FMOVq.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-5-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
388a646595
target/sparc: Remove gen_dest_fpr_F
...
Replace with tcg_temp_new_i32.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-4-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
54c3e9534f
target/sparc: Use tcg_gen_qemu_{ld, st}_i128 for ASI_M_BFILL
...
Align the operation to the 32-byte cacheline.
Use 2 i128 instead of 4 i64.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-3-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
9827100737
target/sparc: Use tcg_gen_qemu_{ld, st}_i128 for ASI_M_BCOPY
...
Align the operation to the 32-byte cacheline.
Use 2 pair of i128 instead of 8 pair of i32.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <20231103173841.33651-2-richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
3b91614004
include/exec: Change cpu_mmu_index argument to CPUState
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
a120d32097
include/exec: Implement cpu_mmu_index generically
...
For user-only mode, use MMU_USER_IDX.
For system mode, use CPUClass.mmu_index.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
68283ff4b4
target/xtensa: Populate CPUClass.mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
eafa0f68c3
target/tricore: Populate CPUClass.mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
e3547a7d07
target/sparc: Populate CPUClass.mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
9ba49d7222
target/sh4: Populate CPUClass.mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
4ef80b271f
target/s390x: Populate CPUClass.mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
90b7022e69
target/s390x: Split out s390x_env_mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
ef5cc166da
target/rx: Populate CPUClass.mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
a5c7797496
target/riscv: Populate CPUClass.mmu_index
...
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
d9996d0904
target/riscv: Replace cpu_mmu_index with riscv_env_mmu_index
...
Use the target-specific function name in preference
to the generic name.
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
7f6f2ebbaa
target/riscv: Rename riscv_cpu_mmu_index to riscv_env_mmu_index
...
Free up the riscv_cpu_mmu_index name for other usage;
emphasize that the argument is 'env'.
Reviewed-by: Alistair Francis <alistair.francis@wdc.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
f331e82c3d
target/ppc: Populate CPUClass.mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
fb00f730c5
target/ppc: Split out ppc_env_mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
db8b41941a
target/openrisc: Populate CPUClass.mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
498c7d78d3
target/nios2: Populate CPUClass.mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
0efa3dc275
target/mips: Populate CPUClass.mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
6ebf33c5dc
target/mips: Split out mips_env_mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
4e999bf419
target/mips: Pass ptw_mmu_idx down from mips_cpu_tlb_fill
...
Rather than adjust env->hflags so that the value computed
by cpu_mmu_index() changes, compute the mmu_idx that we
want directly and pass it down.
Introduce symbolic constants for MMU_{KERNEL,ERL}_IDX.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:10 +10:00
Richard Henderson
167d6cd0e8
target/microblaze: Populate CPUClass.mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:09 +10:00
Richard Henderson
a5a2d7f64f
target/m68k: Populate CPUClass.mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:09 +10:00
Richard Henderson
3f262d2568
target/loongarch: Rename MMU_IDX_*
...
The expected form is MMU_FOO_IDX, not MMU_IDX_FOO.
Rename to match generic code.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:07 +10:00
Richard Henderson
a72a1b105d
target/loongarch: Populate CPUClass.mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 16:46:04 +10:00
Richard Henderson
ace0c5fe59
target/i386: Populate CPUClass.mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 08:52:25 +10:00
Richard Henderson
8f39cb7764
target/hppa: Populate CPUClass.mmu_index
...
Reviewed-by: Helge Deller <deller@gmx.de >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 08:52:25 +10:00
Richard Henderson
3f605a15a7
target/cris: Populate CPUClass.mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 08:52:25 +10:00
Richard Henderson
97fc0c210b
target/cris: Cache mem_index in DisasContext
...
Compute this value once for each translation.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 08:52:25 +10:00
Richard Henderson
b9e877f20f
target/avr: Populate CPUClass.mmu_index
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-02-03 08:52:25 +10:00