[PATCH] target/riscv: Add missing include guard in pmu.h

2024-02-20 Thread frank . chang
From: Frank Chang Add missing include guard in pmu.h to avoid the problem of double inclusion. Signed-off-by: Frank Chang --- target/riscv/pmu.h | 5 + 1 file changed, 5 insertions(+) diff --git a/target/riscv/pmu.h b/target/riscv/pmu.h index 505fc850d3..7c0ad661e0 100644 --- a/target

Re: [PATCH] target/riscv: Update $pc after linking to $ra in trans_cm_jalt()

2024-02-06 Thread Frank Chang
Reviewed-by: Frank Chang On Tue, Feb 6, 2024 at 9:19 PM Jason Chien wrote: > The original implementation sets $pc to the address read from the jump > vector table first and links $ra with the address of the next instruction > after the updated $pc. After jumping to the update

[PATCH] hw/intc: Update APLIC IDC after claiming iforce register

2024-03-21 Thread frank . chang
From: Frank Chang Currently, QEMU only sets the iforce register to 0 and returns early when claiming the iforce register. However, this may leave mip.meip remains at 1 if a spurious external interrupt triggered by iforce register is the only pending interrupt to be claimed, and the interrupt

Re: [PATCH v2 01/15] exec/memtxattr: add process identifier to the transaction attributes

2024-04-23 Thread Frank Chang
Reviewed-by: Frank Chang Daniel Henrique Barboza 於 2024年3月8日 週五 上午12:04寫道: > > From: Tomasz Jeznach > > Extend memory transaction attributes with process identifier to allow > per-request address translation logic to use requester_id / process_id > to identify memory mapp

Re: [PATCH v2 04/15] hw/riscv: add riscv-iommu-pci device

2024-04-29 Thread Frank Chang
Daniel Henrique Barboza 於 2024年3月8日 週五 上午12:04寫道: > > From: Tomasz Jeznach > > The RISC-V IOMMU can be modelled as a PCIe device following the > guidelines of the RISC-V IOMMU spec, chapter 7.1, "Integrating an IOMMU > as a PCIe device". > > Signed-off-by: Tomasz Jeznach > Signed-off-by: Daniel

Re: [PATCH v2 05/15] hw/riscv: add riscv-iommu-sys platform device

2024-04-29 Thread Frank Chang
Reviewed-by: Frank Chang Daniel Henrique Barboza 於 2024年3月8日 週五 上午12:05寫道: > > From: Tomasz Jeznach > > This device models the RISC-V IOMMU as a sysbus device. > > Signed-off-by: Tomasz Jeznach > Signed-off-by: Daniel Henrique Barboza > --- > hw/riscv/meson.buil

Re: [PATCH v2 06/15] hw/riscv/virt.c: support for RISC-V IOMMU PCIDevice hotplug

2024-04-29 Thread Frank Chang
Reviewed-by: Frank Chang Daniel Henrique Barboza 於 2024年3月8日 週五 上午12:06寫道: > > From: Tomasz Jeznach > > Generate device tree entry for riscv-iommu PCI device, along with > mapping all PCI device identifiers to the single IOMMU device instance. > > Signed-off-by: Tomasz Jez

Re: [PATCH v2 07/15] test/qtest: add riscv-iommu-pci tests

2024-04-29 Thread Frank Chang
Reviewed-by: Frank Chang Daniel Henrique Barboza 於 2024年3月8日 週五 上午12:05寫道: > > To test the RISC-V IOMMU emulation we'll use its PCI representation. > Create a new 'riscv-iommu-pci' libqos device that will be present with > CONFIG_RISCV_IOMMU. This config is only av

Re: [PATCH v2 03/15] hw/riscv: add RISC-V IOMMU base emulation

2024-05-02 Thread Frank Chang
Hi Daniel, Daniel Henrique Barboza 於 2024年3月8日 週五 上午12:04寫道: > > From: Tomasz Jeznach > > The RISC-V IOMMU specification is now ratified as-per the RISC-V > international process. The latest frozen specifcation can be found > at: > > https://github.com/riscv-non-isa/riscv-iommu/releases/download

Re: [PATCH v2 11/15] hw/riscv/riscv-iommu: add DBG support

2024-05-05 Thread Frank Chang
slate(s, ctx, &iotlb, false); > +if (fault) { > +iova = RISCV_IOMMU_TR_RESPONSE_FAULT | (((uint64_t) fault) << > 10); > +} else { > +iova = ((iotlb.translated_addr & ~iotlb.addr_mask) >> 2) & For 4-KB page, we should right-shift 12 bi

Re: [PATCH v2 12/15] hw/riscv/riscv-iommu: Add another irq for mrif notifications

2024-05-05 Thread Frank Chang
Reviewed-by: Frank Chang Daniel Henrique Barboza 於 2024年3月8日 週五 上午12:06寫道: > > From: Andrew Jones > > And add mrif notification trace. > > Signed-off-by: Andrew Jones > Reviewed-by: Daniel Henrique Barboza > --- > hw/riscv/riscv-iommu-pci.c | 2 +- > hw/riscv

Re: [PATCH v2 13/15] qtest/riscv-iommu-test: add init queues test

2024-05-07 Thread Frank Chang
Reviewed-by: Frank Chang Daniel Henrique Barboza 於 2024年3月8日 週五 上午12:06寫道: > > Add an additional test to further exercise the IOMMU where we attempt to > initialize the command, fault and page-request queues. > > These steps are taken from chapter 6.2 of the RISC-V IOMMU spec, &g

Re: [PATCH v2 14/15] hw/misc: EDU: added PASID support

2024-05-07 Thread Frank Chang
s[] = { > +DEFINE_PROP_BOOL("pasid", EduState, enable_pasid, TRUE), > +DEFINE_PROP_END_OF_LIST(), > +}; > + > static void edu_class_init(ObjectClass *class, void *data) > { > DeviceClass *dc = DEVICE_CLASS(class); > PCIDeviceClass *k = PCI_DEVICE_CLASS(class); > > +device_class_set_props(dc, edu_properties); > k->realize = pci_edu_realize; > k->exit = pci_edu_uninit; > k->vendor_id = PCI_VENDOR_ID_QEMU; > @@ -430,7 +461,7 @@ static void edu_class_init(ObjectClass *class, void *data) > static void pci_edu_register_types(void) > { > static InterfaceInfo interfaces[] = { > -{ INTERFACE_CONVENTIONAL_PCI_DEVICE }, > +{ INTERFACE_PCIE_DEVICE }, > { }, > }; > static const TypeInfo edu_info = { > -- > 2.43.2 > > This commit introduces a new command for PASID (PV, bitwise OR of: 0x08; PASID, cmds[27:8]). We should also update the EDU spec: docs/specs/edu.rst to address the changes. Regards, Frank Chang

Re: [PATCH v2 15/15] hw/misc: EDU: add ATS/PRI capability

2024-05-07 Thread Frank Chang
+} > +} > + > static void pci_edu_realize(PCIDevice *pdev, Error **errp) > { > EduState *edu = EDU(pdev); > +AddressSpace *dma_as = NULL; > uint8_t *pci_conf = pdev->config; > int pos; > > @@ -390,9 +603,28 @@ static void pci_edu_realize(PCIDevice *pdev, Erro

Re: [RFC PATCH 1/1] pci-ids.rst: add Red Hat pci-id for generic IOMMU device

2024-05-07 Thread Frank Chang
Hi Daniel, It's glad to see that we have the dedicate PCIe device ID for RISC-V IOMMU. Reviewed-by: Frank Chang Daniel Henrique Barboza 於 2024年5月3日 週五 下午8:44寫道: > > Reserve an id to be used by the RISC-V IOMMU PCI device. > > Cc: Gerd Hoffmann > Signed-off-by: Dan

Re: [RFC PATCH 0/1] pci: allocate a PCI ID for RISC-V IOMMU

2024-05-07 Thread Frank Chang
Hi Daniel, Daniel Henrique Barboza 於 2024年5月3日 週五 下午8:43寫道: > > Hi, > > In this RFC I want to check with Gerd and others if it's ok to add a PCI > id for the RISC-V IOMMU device. It's currently under review in [1]. The Is the link [1] missing? Regards, Frank Chang >

Re: [PATCH v2 10/15] hw/riscv/riscv-iommu: add ATS support

2024-05-07 Thread Frank Chang
g the access flag to carry response code information */ > +IOMMUAccessFlags perm = resp_code ? IOMMU_NONE : IOMMU_RW; > +return riscv_iommu_ats(s, cmd, IOMMU_NOTIFIER_MAP, perm, > + trace_riscv_iommu_ats_prgr); > +} > + > static void riscv_iommu_process_ddtp(RISCVIOMMUState *s) > { > uin

Re: [PATCH v2 08/15] hw/riscv/riscv-iommu: add Address Translation Cache (IOATC)

2024-05-08 Thread Frank Chang
1 */ > +static void __iot_inval_pscid_iova(gpointer key, gpointer value, gpointer > data) > +{ > +RISCVIOMMUEntry *iot = (RISCVIOMMUEntry *) value; > + RISCVIOMMUEntry *arg = (RISCVIOMMUEntry *) data; > +if (iot->gscid == arg->gscid && > +iot->psc

Re: [PATCH v2 09/15] hw/riscv/riscv-iommu: add s-stage and g-stage support

2024-05-10 Thread Frank Chang
U_DC_FSC_MODE_BARE); > ctx->tc = RISCV_IOMMU_DC_TC_V; > ctx->ta = 0; > ctx->msiptp = 0; > @@ -424,6 +649,8 @@ static int riscv_iommu_ctx_fetch(RISCVIOMMUState *s, > RISCVIOMMUContext *ctx) > > /* Set translation con

Re: [RFC PATCH 0/1] pci: allocate a PCI ID for RISC-V IOMMU

2024-05-10 Thread Frank Chang
gt; > Since RVI doesn't provide a PCI ID for it we went to Red Hat, and they were > kind enough > to give us a PCI ID for the RISC-V IOMMU reference device. That's great. Thanks to Red Hat. I'm wondering do we have the plan to document the new PCI ID to the IOMMU spec

Re: [PATCH v2 03/15] hw/riscv: add RISC-V IOMMU base emulation

2024-05-10 Thread Frank Chang
Hi Daniel, Daniel Henrique Barboza 於 2024年5月8日 週三 下午7:16寫道: > > Hi Frank, > > I'll reply with that I've done so far. Still missing some stuff: > > On 5/2/24 08:37, Frank Chang wrote: > > Hi Daniel, > > > > Daniel Henrique Barboza 於 2024年3月8日 週五

Re: [PATCH v2 11/15] hw/riscv/riscv-iommu: add DBG support

2024-05-10 Thread Frank Chang
Hi Daniel, Daniel Henrique Barboza 於 2024年5月6日 週一 下午9:06寫道: > > Hi Frank, > > On 5/6/24 01:09, Frank Chang wrote: > > Hi Daniel, > > > > Daniel Henrique Barboza 於 2024年3月8日 週五 > > 上午12:05寫道: > >> > >> From: Tomasz Jeznach > >>

Re: [PATCH v2 02/15] hw/riscv: add riscv-iommu-bits.h

2024-05-10 Thread Frank Chang
Reviewed-by: Frank Chang Daniel Henrique Barboza 於 2024年3月8日 週五 上午12:07寫道: > > From: Tomasz Jeznach > > This header will be used by the RISC-V IOMMU emulation to be added > in the next patch. Due to its size it's being sent in separate for > an easier review. > >

Re: [PATCH v2 00/15] riscv: QEMU RISC-V IOMMU Support

2024-05-10 Thread Frank Chang
Hi Daniel, Thanks for the upstream work. Sorry that it took a while for me to review the patchset. Please let me know if you need any help from us to update the IOMMU model. We would like to see it merged for QEMU 9.1.0. Regards, Frank Chang Daniel Henrique Barboza 於 2024年3月8日 週五 上午12:04寫道

Re: [PATCH v5 1/2] riscv: Pass Object to register_cpu_props instead of DeviceState

2023-01-16 Thread Frank Chang
Reviewed-by: Frank Chang On Fri, Jan 13, 2023 at 6:35 PM Alexandre Ghiti wrote: > One can extract the DeviceState pointer from the Object pointer, so pass > the Object for future commits to access other fields of Object. > > No functional changes intended. > > Signed-off-b

Re: [PATCH v9 2/5] riscv: Change type of valid_vm_1_10_[32|64] to bool

2023-02-01 Thread Frank Chang
Reviewed-by: Frank Chang On Tue, Jan 31, 2023 at 10:29 PM Alexandre Ghiti wrote: > This array is actually used as a boolean so swap its current char type > to a boolean and at the same time, change the type of validate_vm to > bool since it returns valid_vm_1_10_[32|64]. > &g

Re: [PATCH v9 5/5] riscv: Correctly set the device-tree entry 'mmu-type'

2023-02-01 Thread Frank Chang
Reviewed-by: Frank Chang On Tue, Jan 31, 2023 at 10:36 PM Alexandre Ghiti wrote: > The 'mmu-type' should reflect what the hardware is capable of so use the > new satp_mode field in RISCVCPUConfig to do that. > > Signed-off-by: Alexandre Ghiti > Reviewed-by: An

Re: [PATCH v9 4/5] riscv: Introduce satp mode hw capabilities

2023-02-01 Thread Frank Chang
break user-mode QEMU. valid_vm_1_10_32 and valid_vm_1_10_64 are defined in !CONFIG_USER_ONLY section. This issue also exists in patch 3. You have to move valid_vm_1_10_32 and valid_vm_1_10_64 out from !CONFIG_USER_ONLY. Regards, Frank Chang > -if (riscv_feature(&cpu->env, RISCV_FEA

[PATCH v10 00/77] support vector extension v1.0

2021-11-28 Thread frank . chang
From: Frank Chang This patchset implements the vector extension v1.0 for RISC-V on QEMU. RVV v1.0 spec is now fronzen for public review: https://github.com/riscv/riscv-v-spec/releases/tag/v1.0 The port is available here: https://github.com/sifive/qemu/tree/rvv-1.0-upstream-v10 RVV v1.0 can be

[PATCH v10 03/77] target/riscv: rvv-1.0: add mstatus VS field

2021-11-28 Thread frank . chang
From: LIU Zhiwei Signed-off-by: LIU Zhiwei Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/cpu.h| 2 ++ target/riscv/cpu_bits.h | 1 + target/riscv/cpu_helper.c | 20 +++- target/riscv/csr.c| 12

[PATCH v10 07/77] target/riscv: rvv-1.0: add translation-time vector context status

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: LIU Zhiwei Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/cpu.h | 5 +- target/riscv/cpu_helper.c | 3 + target/riscv/insn_trans/trans_rvv.c.inc | 75

[PATCH v10 04/77] target/riscv: rvv-1.0: set mstatus.SD bit if mstatus.VS is dirty

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/csr.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 9b5bd5d7b49..bb500afdeb5 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -502,6

[PATCH v10 05/77] target/riscv: rvv-1.0: add sstatus VS field

2021-11-28 Thread frank . chang
From: LIU Zhiwei Signed-off-by: LIU Zhiwei Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/cpu_bits.h | 1 + target/riscv/csr.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/target/riscv/cpu_bits.h b

[PATCH v10 10/77] target/riscv: rvv-1.0: add vlenb register

2021-11-28 Thread frank . chang
From: Greentime Hu Signed-off-by: Greentime Hu Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/cpu_bits.h | 1 + target/riscv/csr.c | 7 +++ 2 files changed, 8 insertions(+) diff --git a/target/riscv/cpu_bits.h b/target

[PATCH v10 06/77] target/riscv: rvv-1.0: introduce writable misa.v field

2021-11-28 Thread frank . chang
From: Frank Chang Implementations may have a writable misa.v field. Analogous to the way in which the floating-point unit is handled, the mstatus.vs field may exist even if misa.v is clear. Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target

[PATCH v10 16/77] target/riscv: introduce more imm value modes in translator functions

2021-11-28 Thread frank . chang
From: Frank Chang Immediate value in translator function is extended not only zero-extended and sign-extended but with more modes to be applicable with multiple formats of vector instructions. * IMM_ZX: Zero-extended * IMM_SX: Sign-extended * IMM_TRUNC_SEW: Truncate to log(SEW

[PATCH v10 11/77] target/riscv: rvv-1.0: check MSTATUS_VS when accessing vector csr registers

2021-11-28 Thread frank . chang
From: Frank Chang If VS field is off, accessing vector csr registers should raise an illegal-instruction exception. Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/csr.c | 5 + 1 file changed, 5 insertions(+) diff --git a/target

[PATCH v10 19/77] target/riscv: rvv-1.0: configure instructions

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 62 +++-- target/riscv/vector_helper.c| 14 +- 2 files changed, 40 insertions(+), 36 deletions(-) diff

[PATCH v10 09/77] target/riscv: rvv-1.0: add vcsr register

2021-11-28 Thread frank . chang
From: LIU Zhiwei Signed-off-by: LIU Zhiwei Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/cpu_bits.h | 7 +++ target/riscv/csr.c | 17 + 2 files changed, 24 insertions(+) diff --git a/target/riscv

[PATCH v10 17/77] target/riscv: rvv:1.0: add translation-time nan-box helper function

2021-11-28 Thread frank . chang
From: Frank Chang * Add fp16 nan-box check generator function, if a 16-bit input is not properly nanboxed, then the input is replaced with the default qnan. * Add do_nanbox() helper function to utilize gen_check_nanbox_X() to generate the NaN-boxed floating-point values based on SEW setting

[PATCH v10 22/77] target/riscv: rvv-1.0: fix address index overflow bug of indexed load/store insns

2021-11-28 Thread frank . chang
From: Frank Chang Replace ETYPE from signed int to unsigned int to prevent index overflow issue, which would lead to wrong index address. Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/vector_helper.c | 8 1 file changed, 4

[PATCH v10 20/77] target/riscv: rvv-1.0: stride load and store instructions

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Alistair Francis --- target/riscv/helper.h | 129 ++-- target/riscv/insn32.decode | 43 ++- target/riscv/insn_trans/trans_rvv.c.inc | 376 target/riscv/vector_helper.c

[PATCH v10 08/77] target/riscv: rvv-1.0: remove rvv related codes from fcsr registers

2021-11-28 Thread frank . chang
From: Frank Chang * Remove VXRM and VXSAT fields from FCSR register as they are only presented in VCSR register. * Remove RVV loose check in fs() predicate function. Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/csr.c | 13

[PATCH v10 18/77] target/riscv: rvv-1.0: remove amo operations instructions

2021-11-28 Thread frank . chang
From: Frank Chang Vector AMOs are removed from standard vector extensions. Will be added later as separate Zvamo extension, but will need a different encoding from earlier proposal. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis --- target/riscv/helper.h | 27

[PATCH v10 23/77] target/riscv: rvv-1.0: fault-only-first unit stride load

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/helper.h | 26 ++--- target/riscv/insn32.decode | 14 ++--- target/riscv/insn_trans/trans_rvv.c.inc | 33 +++ target/riscv

[PATCH v10 27/77] target/riscv: rvv-1.0: floating-point square-root instruction

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/insn32.decode | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 7d8441d1f21..92a0e6fe51e

[PATCH v10 28/77] target/riscv: rvv-1.0: floating-point classify instructions

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/insn32.decode | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 92a0e6fe51e..f61eaf7c6ba

[PATCH v10 24/77] target/riscv: rvv-1.0: load/store whole register instructions

2021-11-28 Thread frank . chang
From: Frank Chang Add the following instructions: * vlre.v * vsr.v Signed-off-by: Frank Chang Reviewed-by: Alistair Francis --- target/riscv/helper.h | 21 target/riscv/insn32.decode | 22 target/riscv/insn_trans/trans_rvv.c.inc | 68

[PATCH v10 21/77] target/riscv: rvv-1.0: index load and store instructions

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Alistair Francis --- target/riscv/helper.h | 67 +++ target/riscv/insn32.decode | 21 +++-- target/riscv/insn_trans/trans_rvv.c.inc | 110 +--- target/riscv

[PATCH v10 35/77] target/riscv: rvv-1.0: register gather instructions

2021-11-28 Thread frank . chang
From: Frank Chang * Add vrgatherei16.vv instruction. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis --- target/riscv/helper.h | 4 target/riscv/insn32.decode | 1 + target/riscv/insn_trans/trans_rvv.c.inc | 27 ++--- target

[PATCH v10 26/77] target/riscv: rvv-1.0: take fractional LMUL into vector max elements calculation

2021-11-28 Thread frank . chang
From: Frank Chang Update vext_get_vlmax() and MAXSZ() to take fractional LMUL into calculation for RVV 1.0. Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/cpu.h | 27 - target/riscv

[PATCH v10 25/77] target/riscv: rvv-1.0: update vext_max_elems() for load/store insns

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 32 ++-- target/riscv/vector_helper.c| 99 ++--- 2 files changed, 80 insertions(+), 51 deletions(-) diff --git a/target/riscv

[PATCH v10 29/77] target/riscv: rvv-1.0: count population in mask instruction

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/helper.h | 2 +- target/riscv/insn32.decode | 2 +- target/riscv/insn_trans/trans_rvv.c.inc | 7 --- target/riscv/vector_helper.c

[PATCH v10 42/77] target/riscv: rvv-1.0: single-width bit shift instructions

2021-11-28 Thread frank . chang
From: Frank Chang Truncate vsll.vi, vsrl.vi, vsra.vi's immediate values to lg2(SEW) bits. Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/insn_trans/trans_rvv.c.inc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/target/riscv/insn_

[PATCH v10 32/77] target/riscv: rvv-1.0: iota instruction

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/insn32.decode | 2 +- target/riscv/insn_trans/trans_rvv.c.inc | 10 -- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/target/riscv

[PATCH v10 30/77] target/riscv: rvv-1.0: find-first-set mask bit instruction

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/helper.h | 2 +- target/riscv/insn32.decode | 2 +- target/riscv/insn_trans/trans_rvv.c.inc | 4 ++-- target/riscv/vector_helper.c

[PATCH v10 33/77] target/riscv: rvv-1.0: element index instruction

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/insn32.decode | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index 3ac5162aeb7..ab274dcde12

[PATCH v10 49/77] target/riscv: rvv-1.0: mask-register logical instructions

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/insn_trans/trans_rvv.c.inc | 3 ++- target/riscv/vector_helper.c| 4 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target

[PATCH v10 31/77] target/riscv: rvv-1.0: set-X-first mask bit instructions

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/insn32.decode | 6 +++--- target/riscv/insn_trans/trans_rvv.c.inc | 5 - target/riscv/vector_helper.c| 4 3 files changed, 7 insertions

[PATCH v10 37/77] target/riscv: rvv-1.0: floating-point move instruction

2021-11-28 Thread frank . chang
From: Frank Chang NaN-boxed the scalar floating-point register based on RVV 1.0's rules. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 16 ++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/target/

[PATCH v10 36/77] target/riscv: rvv-1.0: integer scalar move instructions

2021-11-28 Thread frank . chang
From: Frank Chang * Remove "vmv.s.x: dothing if rs1 == 0" constraint. * Add vmv.x.s instruction. Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Acked-by: Alistair Francis --- target/riscv/insn32.decode | 3 +- target/riscv/insn_trans/trans_rvv.

[PATCH v10 54/77] target/riscv: rvv-1.0: widening floating-point reduction instructions

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/insn_trans/trans_rvv.c.inc | 9 - 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_trans/trans_rvv.c.inc index

[PATCH v10 40/77] target/riscv: rvv-1.0: integer extension instructions

2021-11-28 Thread frank . chang
From: Frank Chang Add the following instructions: * vzext.vf2 * vzext.vf4 * vzext.vf8 * vsext.vf2 * vsext.vf4 * vsext.vf8 Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/helper.h | 14 + target/riscv/insn32.decode | 8

[PATCH v10 39/77] target/riscv: rvv-1.0: whole register move instructions

2021-11-28 Thread frank . chang
From: Frank Chang Add the following instructions: * vmv1r.v * vmv2r.v * vmv4r.v * vmv8r.v Signed-off-by: Frank Chang Acked-by: Alistair Francis --- target/riscv/insn32.decode | 4 target/riscv/insn_trans/trans_rvv.c.inc | 25 + 2 files changed, 29

[PATCH v10 38/77] target/riscv: rvv-1.0: floating-point scalar move instructions

2021-11-28 Thread frank . chang
From: Frank Chang NaN-boxed the scalar floating-point register based on RVV 1.0's rules. Signed-off-by: Frank Chang Acked-by: Alistair Francis --- target/riscv/insn32.decode | 4 +-- target/riscv/insn_trans/trans_rvv.c.inc | 38 - target/

[PATCH v10 56/77] target/riscv: rvv-1.0: remove widening saturating scaled multiply-add

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/helper.h | 22 --- target/riscv/insn32.decode | 7 - target/riscv/insn_trans/trans_rvv.c.inc | 9 -- target/riscv/vector_helper.c| 205

[PATCH v10 55/77] target/riscv: rvv-1.0: single-width scaling shift instructions

2021-11-28 Thread frank . chang
From: Frank Chang log(SEW) truncate vssra.vi immediate value. Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/insn_trans/trans_rvv.c.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv

[PATCH v10 43/77] target/riscv: rvv-1.0: integer add-with-carry/subtract-with-borrow

2021-11-28 Thread frank . chang
From: Frank Chang * Only do carry-in or borrow-in if is masked (vm=0). * Remove clear function from helper functions as the tail elements are unchanged in RVV 1.0. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis --- target/riscv/insn32.decode | 20

[PATCH v10 41/77] target/riscv: rvv-1.0: single-width averaging add and subtract instructions

2021-11-28 Thread frank . chang
From: Frank Chang Add the following instructions: * vaaddu.vv * vaaddu.vx * vasubu.vv * vasubu.vx Remove the following instructions: * vadd.vi Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/helper.h | 16 ++ target/riscv/insn32.decode

[PATCH v10 61/77] target/riscv: rvv-1.0: floating-point/integer type-convert instructions

2021-11-28 Thread frank . chang
From: Frank Chang Add the following instructions: * vfcvt.rtz.xu.f.v * vfcvt.rtz.x.f.v Also adjust GEN_OPFV_TRANS() to accept multiple floating-point rounding modes. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis --- target/riscv/insn32.decode | 11 ++-- target/riscv

[PATCH v10 57/77] target/riscv: rvv-1.0: remove vmford.vv and vmford.vf

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/helper.h | 6 -- target/riscv/insn32.decode | 2 -- target/riscv/insn_trans/trans_rvv.c.inc | 2 -- target/riscv/vector_helper.c| 7 --- 4 files

[PATCH v10 47/77] target/riscv: rvv-1.0: integer comparison instructions

2021-11-28 Thread frank . chang
From: Frank Chang * Sign-extend vmselu.vi and vmsgtu.vi immediate values. * Remove "set tail elements to zeros" as tail elements can be unchanged for either VTA to have undisturbed or agnostic setting. Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/

[PATCH v10 45/77] target/riscv: rvv-1.0: widening integer multiply-add instructions

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/insn32.decode | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/target/riscv/insn32.decode b/target/riscv/insn32.decode index a3f1101cd63..7548b71efdb 100644 --- a/target/riscv

[PATCH v10 62/77] target/riscv: rvv-1.0: widening floating-point/integer type-convert

2021-11-28 Thread frank . chang
From: Frank Chang Add the following instructions: * vfwcvt.rtz.xu.f.v * vfwcvt.rtz.x.f.v Also adjust GEN_OPFV_WIDEN_TRANS() to accept multiple floating-point rounding modes. Signed-off-by: Frank Chang Acked-by: Alistair Francis --- target/riscv/helper.h | 2 + target

[PATCH v10 58/77] target/riscv: rvv-1.0: remove integer extract instruction

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/insn32.decode | 1 - target/riscv/insn_trans/trans_rvv.c.inc | 23 --- 2 files changed, 24 deletions(-) diff --git a/target/riscv/insn32.decode b/target/riscv/insn32

[PATCH v10 48/77] target/riscv: rvv-1.0: floating-point compare instructions

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/vector_helper.c | 9 - 1 file changed, 9 deletions(-) diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c index 277a5e4120a..71d7b1e8796 100644 --- a/target/riscv

[PATCH v10 50/77] target/riscv: rvv-1.0: slide instructions

2021-11-28 Thread frank . chang
From: Frank Chang * Remove clear function from helper functions as the tail elements are unchanged in RVV 1.0. Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/vector_helper.c | 19 --- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a

[PATCH v10 65/77] target/riscv: rvv-1.0: relax RV_VLEN_MAX to 1024-bits

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Alistair Francis --- target/riscv/cpu.h | 2 +- target/riscv/insn_trans/trans_rvv.c.inc | 4 ++-- target/riscv/vector_helper.c| 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a

[PATCH v10 51/77] target/riscv: rvv-1.0: floating-point slide instructions

2021-11-28 Thread frank . chang
From: Frank Chang Add the following instructions: * vfslide1up.vf * vfslide1down.vf Signed-off-by: Frank Chang Reviewed-by: Alistair Francis --- target/riscv/helper.h | 7 ++ target/riscv/insn32.decode | 2 + target/riscv/insn_trans/trans_rvv.c.inc | 16

[PATCH v10 53/77] target/riscv: rvv-1.0: single-width floating-point reduction

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/insn_trans/trans_rvv.c.inc | 12 +--- target/riscv/vector_helper.c| 12 ++-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/target/riscv/insn_trans

[PATCH v10 71/77] target/riscv: rvv-1.0: rename r2_zimm to r2_zimm11

2021-11-28 Thread frank . chang
From: Frank Chang Rename r2_zimm to r2_zimm11 for the upcoming vsetivli instruction. vsetivli has 10-bits of zimm but vsetvli has 11-bits of zimm. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis --- target/riscv/insn32.decode | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions

[PATCH v10 52/77] target/riscv: rvv-1.0: narrowing fixed-point clip instructions

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/helper.h | 24 ++-- target/riscv/insn32.decode | 12 +++--- target/riscv/insn_trans/trans_rvv.c.inc | 12 +++--- target/riscv/vector_helper.c| 52

[PATCH v10 75/77] target/riscv: rvv-1.0: rename vmandnot.mm and vmornot.mm to vmandn.mm and vmorn.mm

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Alistair Francis --- target/riscv/helper.h | 4 ++-- target/riscv/insn32.decode | 4 ++-- target/riscv/insn_trans/trans_rvv.c.inc | 4 ++-- target/riscv/vector_helper.c| 4 ++-- 4 files

[PATCH v10 15/77] target/riscv: rvv-1.0: update check functions

2021-11-28 Thread frank . chang
From: Frank Chang Update check functions with RVV 1.0 rules. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 715 +--- 1 file changed, 507 insertions(+), 208 deletions(-) diff --git a/target/riscv/insn_trans

[PATCH v10 59/77] target/riscv: rvv-1.0: floating-point min/max instructions

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/vector_helper.c | 24 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c index aed230e1ad8

[PATCH v10 01/77] target/riscv: drop vector 0.7.1 and add 1.0 support

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis Reviewed-by: Bin Meng --- target/riscv/cpu.c | 16 target/riscv/cpu.h | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/target/riscv/cpu.c b

[PATCH v10 12/77] target/riscv: rvv-1.0: remove MLEN calculations

2021-11-28 Thread frank . chang
From: Frank Chang As in RVV 1.0 design, MLEN is hardcoded with value 1 (Section 4.5). Thus, remove all MLEN related calculations. Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 35 +--- target/riscv

[PATCH v10 60/77] target/riscv: introduce floating-point rounding mode enum

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/fpu_helper.c | 12 ++-- target/riscv/insn_trans/trans_rvv.c.inc | 18 +- target/riscv/internals.h| 9 + 3 files changed, 24 insertions

[PATCH v10 64/77] target/riscv: rvv-1.0: narrowing floating-point/integer type-convert

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Acked-by: Alistair Francis --- target/riscv/helper.h | 22 - target/riscv/insn32.decode | 15 --- target/riscv/insn_trans/trans_rvv.c.inc | 59 + target/riscv/vector_helper.c

[PATCH v10 63/77] target/riscv: add "set round to odd" rounding mode helper function

2021-11-28 Thread frank . chang
From: Frank Chang helper_set_rounding_mode() is responsible for SIGILL, and "round to odd" should be an interface private to translation, so add a new independent helper_set_rod_rounding_mode(). Signed-off-by: Frank Chang Acked-by: Alistair Francis --- target/riscv/fpu_he

[PATCH v10 02/77] target/riscv: Use FIELD_EX32() to extract wd field

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson Reviewed-by: Alistair Francis --- target/riscv/vector_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c index 12c31aa4b4d

[PATCH v10 44/77] target/riscv: rvv-1.0: narrowing integer right shift instructions

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Richard Henderson --- target/riscv/helper.h | 24 +++--- target/riscv/insn32.decode | 12 +++ target/riscv/insn_trans/trans_rvv.c.inc | 42 - target/riscv

[PATCH v10 72/77] target/riscv: rvv-1.0: add vsetivli instruction

2021-11-28 Thread frank . chang
From: Frank Chang Signed-off-by: Frank Chang Reviewed-by: Alistair Francis --- target/riscv/insn32.decode | 2 ++ target/riscv/insn_trans/trans_rvv.c.inc | 27 + 2 files changed, 29 insertions(+) diff --git a/target/riscv/insn32.decode b/target/riscv

[PATCH v10 66/77] target/riscv: rvv-1.0: implement vstart CSR

2021-11-28 Thread frank . chang
From: Frank Chang * Update and check vstart value for vector instructions. * Add whole register move instruction helper functions as we have to call helper function for case where vstart is not zero. * Remove probe_pages() calls in vector load/store instructions (except fault-only-first

[PATCH v10 73/77] target/riscv: rvv-1.0: add evl parameter to vext_ldst_us()

2021-11-28 Thread frank . chang
From: Frank Chang Add supports of Vector unit-stride mask load/store instructions (vlm.v, vsm.v), which has: evl (effective vector length) = ceil(env->vl / 8). The new instructions operate the same as unmasked byte loads and stores. Add evl parameter to reuse vext_ldst_us(). Signed-off

[PATCH v10 67/77] target/riscv: rvv-1.0: trigger illegal instruction exception if frm is not valid

2021-11-28 Thread frank . chang
From: Frank Chang If the frm field contains an invalid rounding mode (101-111), attempting to execute any vector floating-point instruction, even those that do not depend on the rounding mode, will raise an illegal instruction exception. Call gen_set_rm() with DYN rounding mode to check and

[PATCH v10 77/77] target/riscv: rvv-1.0: Add ELEN checks for widening and narrowing instructions

2021-11-28 Thread frank . chang
From: Frank Chang SEW has the limitation which cannot exceed ELEN. Widening instructions have a destination group with EEW = 2*SEW and narrowing instructions have a source operand with EEW = 2*SEW. Both of the instructions have the limitation of: 2*SEW <= ELEN. Signed-off-by: Frank Ch

[PATCH v10 68/77] target/riscv: gdb: support vector registers for rv64 & rv32

2021-11-28 Thread frank . chang
From: Hsiangkai Wang Signed-off-by: Hsiangkai Wang Signed-off-by: Greentime Hu Signed-off-by: Frank Chang Acked-by: Alistair Francis --- target/riscv/cpu.c | 2 + target/riscv/cpu.h | 1 + target/riscv/gdbstub.c | 184 + 3 files changed

[PATCH v10 69/77] target/riscv: rvv-1.0: floating-point reciprocal square-root estimate instruction

2021-11-28 Thread frank . chang
From: Frank Chang Implement the floating-point reciprocal square-root estimate to 7 bits instruction. Signed-off-by: Frank Chang --- target/riscv/helper.h | 4 + target/riscv/insn32.decode | 1 + target/riscv/insn_trans/trans_rvv.c.inc | 1 + target/riscv

[PATCH v10 70/77] target/riscv: rvv-1.0: floating-point reciprocal estimate instruction

2021-11-28 Thread frank . chang
From: Frank Chang Implement the floating-point reciprocal estimate to 7 bits instruction. Signed-off-by: Frank Chang --- target/riscv/helper.h | 4 + target/riscv/insn32.decode | 1 + target/riscv/insn_trans/trans_rvv.c.inc | 1 + target/riscv

  1   2   3   4   5   6   7   8   9   10   >