mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 01:33:56 -06:00
*: Delete checks for old host definitions
tcg/loongarch64: Generate LSX instructions fpu: Add conversions between bfloat16 and [u]int8 fpu: Handle m68k extended precision denormals properly accel/tcg: Improve cputlb i/o organization accel/tcg: Simplify tlb_plugin_lookup accel/tcg: Remove false-negative halted assertion tcg: Add gvec compare with immediate and scalar operand tcg/aarch64: Emit BTI insns at jump landing pads -----BEGIN PGP SIGNATURE----- iQFRBAABCgA7FiEEekgeeIaLTbaoWgXAZN846K9+IV8FAmUF4VIdHHJpY2hhcmQu aGVuZGVyc29uQGxpbmFyby5vcmcACgkQZN846K9+IV8wOwf+I9qNus2kV3yQxpuU 2hqYuLXvH96l9vbqaoyx7hyyJTtrqytLGCMPmQKUdtBGtO6z7PnLNDiooGcbO+gw 2gdfw3Q//JZUTdx+ZSujUksV0F96Tqu0zi4TdJUPNIwhCrh0K8VjiftfPfbynRtz KhQ1lNeO/QzcAgzKiun2NyqdPiYDmNuEIS/jYedQwQweRp/xQJ4/x8DmhGf/OiD4 rGAcdslN+RenqgFACcJ2A1vxUGMeQv5g/Cn82FgTk0cmgcfAODMnC+WnOm8ruQdT snluvnh/2/r8jIhx3frKDKGtaKHCPhoCS7GNK48qejxaybvv3CJQ4qsjRIBKVrVM cIrsSw== =cTgD -----END PGP SIGNATURE----- Merge tag 'pull-tcg-20230915-2' of https://gitlab.com/rth7680/qemu into staging *: Delete checks for old host definitions tcg/loongarch64: Generate LSX instructions fpu: Add conversions between bfloat16 and [u]int8 fpu: Handle m68k extended precision denormals properly accel/tcg: Improve cputlb i/o organization accel/tcg: Simplify tlb_plugin_lookup accel/tcg: Remove false-negative halted assertion tcg: Add gvec compare with immediate and scalar operand tcg/aarch64: Emit BTI insns at jump landing pads [Resolved conflict between CPUINFO_PMULL and CPUINFO_BTI. --Stefan] * tag 'pull-tcg-20230915-2' of https://gitlab.com/rth7680/qemu: (39 commits) tcg: Map code_gen_buffer with PROT_BTI tcg/aarch64: Emit BTI insns at jump landing pads util/cpuinfo-aarch64: Add CPUINFO_BTI tcg: Add tcg_out_tb_start backend hook fpu: Handle m68k extended precision denormals properly fpu: Add conversions between bfloat16 and [u]int8 accel/tcg: Introduce do_st16_mmio_leN accel/tcg: Introduce do_ld16_mmio_beN accel/tcg: Merge io_writex into do_st_mmio_leN accel/tcg: Merge io_readx into do_ld_mmio_beN accel/tcg: Replace direct use of io_readx/io_writex in do_{ld,st}_1 accel/tcg: Merge cpu_transaction_failed into io_failed plugin: Simplify struct qemu_plugin_hwaddr accel/tcg: Use CPUTLBEntryFull.phys_addr in io_failed accel/tcg: Split out io_prepare and io_failed accel/tcg: Simplify tlb_plugin_lookup target/arm: Use tcg_gen_gvec_cmpi for compare vs 0 tcg: Add gvec compare with immediate and scalar operand tcg/loongarch64: Implement 128-bit load & store tcg/loongarch64: Lower rotli_vec to vrotri ... Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
d7754940d7
39 changed files with 7419 additions and 393 deletions
|
@ -100,12 +100,12 @@
|
|||
typedef struct CPUTLBEntryFull {
|
||||
/*
|
||||
* @xlat_section contains:
|
||||
* - in the lower TARGET_PAGE_BITS, a physical section number
|
||||
* - with the lower TARGET_PAGE_BITS masked off, an offset which
|
||||
* must be added to the virtual address to obtain:
|
||||
* + the ram_addr_t of the target RAM (if the physical section
|
||||
* number is PHYS_SECTION_NOTDIRTY or PHYS_SECTION_ROM)
|
||||
* + the offset within the target MemoryRegion (otherwise)
|
||||
* - For ram, an offset which must be added to the virtual address
|
||||
* to obtain the ram_addr_t of the target RAM
|
||||
* - For other memory regions,
|
||||
* + in the lower TARGET_PAGE_BITS, the physical section number
|
||||
* + with the TARGET_PAGE_BITS masked off, the offset within
|
||||
* the target MemoryRegion
|
||||
*/
|
||||
hwaddr xlat_section;
|
||||
|
||||
|
|
|
@ -111,8 +111,7 @@ static inline int thunk_type_size(const argtype *type_ptr, int is_host)
|
|||
if (is_host) {
|
||||
#if defined(HOST_X86_64)
|
||||
return 8;
|
||||
#elif defined(HOST_ALPHA) || defined(HOST_IA64) || defined(HOST_MIPS) || \
|
||||
defined(HOST_PARISC) || defined(HOST_SPARC64)
|
||||
#elif defined(HOST_MIPS) || defined(HOST_SPARC64)
|
||||
return 4;
|
||||
#elif defined(HOST_PPC)
|
||||
return sizeof(void *);
|
||||
|
|
|
@ -366,6 +366,8 @@ float32 bfloat16_to_float32(bfloat16, float_status *status);
|
|||
bfloat16 float64_to_bfloat16(float64 a, float_status *status);
|
||||
float64 bfloat16_to_float64(bfloat16 a, float_status *status);
|
||||
|
||||
int8_t bfloat16_to_int8_scalbn(bfloat16, FloatRoundMode,
|
||||
int, float_status *status);
|
||||
int16_t bfloat16_to_int16_scalbn(bfloat16, FloatRoundMode,
|
||||
int, float_status *status);
|
||||
int32_t bfloat16_to_int32_scalbn(bfloat16, FloatRoundMode,
|
||||
|
@ -373,14 +375,18 @@ int32_t bfloat16_to_int32_scalbn(bfloat16, FloatRoundMode,
|
|||
int64_t bfloat16_to_int64_scalbn(bfloat16, FloatRoundMode,
|
||||
int, float_status *status);
|
||||
|
||||
int8_t bfloat16_to_int8(bfloat16, float_status *status);
|
||||
int16_t bfloat16_to_int16(bfloat16, float_status *status);
|
||||
int32_t bfloat16_to_int32(bfloat16, float_status *status);
|
||||
int64_t bfloat16_to_int64(bfloat16, float_status *status);
|
||||
|
||||
int8_t bfloat16_to_int8_round_to_zero(bfloat16, float_status *status);
|
||||
int16_t bfloat16_to_int16_round_to_zero(bfloat16, float_status *status);
|
||||
int32_t bfloat16_to_int32_round_to_zero(bfloat16, float_status *status);
|
||||
int64_t bfloat16_to_int64_round_to_zero(bfloat16, float_status *status);
|
||||
|
||||
uint8_t bfloat16_to_uint8_scalbn(bfloat16 a, FloatRoundMode,
|
||||
int, float_status *status);
|
||||
uint16_t bfloat16_to_uint16_scalbn(bfloat16 a, FloatRoundMode,
|
||||
int, float_status *status);
|
||||
uint32_t bfloat16_to_uint32_scalbn(bfloat16 a, FloatRoundMode,
|
||||
|
@ -388,24 +394,30 @@ uint32_t bfloat16_to_uint32_scalbn(bfloat16 a, FloatRoundMode,
|
|||
uint64_t bfloat16_to_uint64_scalbn(bfloat16 a, FloatRoundMode,
|
||||
int, float_status *status);
|
||||
|
||||
uint8_t bfloat16_to_uint8(bfloat16 a, float_status *status);
|
||||
uint16_t bfloat16_to_uint16(bfloat16 a, float_status *status);
|
||||
uint32_t bfloat16_to_uint32(bfloat16 a, float_status *status);
|
||||
uint64_t bfloat16_to_uint64(bfloat16 a, float_status *status);
|
||||
|
||||
uint8_t bfloat16_to_uint8_round_to_zero(bfloat16 a, float_status *status);
|
||||
uint16_t bfloat16_to_uint16_round_to_zero(bfloat16 a, float_status *status);
|
||||
uint32_t bfloat16_to_uint32_round_to_zero(bfloat16 a, float_status *status);
|
||||
uint64_t bfloat16_to_uint64_round_to_zero(bfloat16 a, float_status *status);
|
||||
|
||||
bfloat16 int8_to_bfloat16_scalbn(int8_t a, int, float_status *status);
|
||||
bfloat16 int16_to_bfloat16_scalbn(int16_t a, int, float_status *status);
|
||||
bfloat16 int32_to_bfloat16_scalbn(int32_t a, int, float_status *status);
|
||||
bfloat16 int64_to_bfloat16_scalbn(int64_t a, int, float_status *status);
|
||||
bfloat16 uint8_to_bfloat16_scalbn(uint8_t a, int, float_status *status);
|
||||
bfloat16 uint16_to_bfloat16_scalbn(uint16_t a, int, float_status *status);
|
||||
bfloat16 uint32_to_bfloat16_scalbn(uint32_t a, int, float_status *status);
|
||||
bfloat16 uint64_to_bfloat16_scalbn(uint64_t a, int, float_status *status);
|
||||
|
||||
bfloat16 int8_to_bfloat16(int8_t a, float_status *status);
|
||||
bfloat16 int16_to_bfloat16(int16_t a, float_status *status);
|
||||
bfloat16 int32_to_bfloat16(int32_t a, float_status *status);
|
||||
bfloat16 int64_to_bfloat16(int64_t a, float_status *status);
|
||||
bfloat16 uint8_to_bfloat16(uint8_t a, float_status *status);
|
||||
bfloat16 uint16_to_bfloat16(uint16_t a, float_status *status);
|
||||
bfloat16 uint32_to_bfloat16(uint32_t a, float_status *status);
|
||||
bfloat16 uint64_to_bfloat16(uint64_t a, float_status *status);
|
||||
|
|
|
@ -227,17 +227,6 @@ struct CPUWatchpoint {
|
|||
QTAILQ_ENTRY(CPUWatchpoint) entry;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_PLUGIN
|
||||
/*
|
||||
* For plugins we sometime need to save the resolved iotlb data before
|
||||
* the memory regions get moved around by io_writex.
|
||||
*/
|
||||
typedef struct SavedIOTLB {
|
||||
MemoryRegionSection *section;
|
||||
hwaddr mr_offset;
|
||||
} SavedIOTLB;
|
||||
#endif
|
||||
|
||||
struct KVMState;
|
||||
struct kvm_run;
|
||||
|
||||
|
@ -409,8 +398,6 @@ struct CPUState {
|
|||
|
||||
#ifdef CONFIG_PLUGIN
|
||||
GArray *plugin_mem_cbs;
|
||||
/* saved iotlb data from io_writex */
|
||||
SavedIOTLB saved_iotlb;
|
||||
#endif
|
||||
|
||||
/* TODO Move common fields from CPUArchState here. */
|
||||
|
|
|
@ -15,15 +15,8 @@
|
|||
struct qemu_plugin_hwaddr {
|
||||
bool is_io;
|
||||
bool is_store;
|
||||
union {
|
||||
struct {
|
||||
MemoryRegionSection *section;
|
||||
hwaddr offset;
|
||||
} io;
|
||||
struct {
|
||||
void *hostaddr;
|
||||
} ram;
|
||||
} v;
|
||||
hwaddr phys_addr;
|
||||
MemoryRegion *mr;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -129,7 +129,6 @@ typedef struct QString QString;
|
|||
typedef struct RAMBlock RAMBlock;
|
||||
typedef struct Range Range;
|
||||
typedef struct ReservedRegion ReservedRegion;
|
||||
typedef struct SavedIOTLB SavedIOTLB;
|
||||
typedef struct SHPCDevice SHPCDevice;
|
||||
typedef struct SSIBus SSIBus;
|
||||
typedef struct TCGHelperInfo TCGHelperInfo;
|
||||
|
|
|
@ -374,6 +374,12 @@ void tcg_gen_gvec_rotrv(unsigned vece, uint32_t dofs, uint32_t aofs,
|
|||
void tcg_gen_gvec_cmp(TCGCond cond, unsigned vece, uint32_t dofs,
|
||||
uint32_t aofs, uint32_t bofs,
|
||||
uint32_t oprsz, uint32_t maxsz);
|
||||
void tcg_gen_gvec_cmpi(TCGCond cond, unsigned vece, uint32_t dofs,
|
||||
uint32_t aofs, int64_t c,
|
||||
uint32_t oprsz, uint32_t maxsz);
|
||||
void tcg_gen_gvec_cmps(TCGCond cond, unsigned vece, uint32_t dofs,
|
||||
uint32_t aofs, TCGv_i64 c,
|
||||
uint32_t oprsz, uint32_t maxsz);
|
||||
|
||||
/*
|
||||
* Perform vector bit select: d = (b & a) | (c & ~a).
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue