Re: [Qemu-devel] [PATCH] RISC-V: Fix isa string logic bug, use popcount to count bits
On Sat, Mar 10, 2018 at 9:33 AM, Eric Blakewrote: > [resend, this time with proper cc's] > > On 03/09/2018 02:20 PM, Michael Clark wrote: > >> Cc: Palmer Dabbelt >> Cc: Peter Maydell >> Signed-off-by: Michael Clark >> --- >> target/riscv/cpu.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c >> index 4851890..f0d6d1d 100644 >> --- a/target/riscv/cpu.c >> +++ b/target/riscv/cpu.c >> @@ -391,7 +391,7 @@ static const TypeInfo riscv_cpu_type_info = { >> char *riscv_isa_string(RISCVCPU *cpu) >> { >> int i; >> -size_t maxlen = 5 + ctz32(cpu->env.misa); >> +size_t maxlen = 5 + __builtin_popcountll(cpu->env.misa); >> char *isa_string = g_new0(char, maxlen); >> snprintf(isa_string, maxlen, "rv%d", TARGET_LONG_BITS); >> for (i = 0; i < sizeof(riscv_exts); i++) { >> > > I'd rather you used ctpop64() from host-utils.h, so we have a centralized > place to change things just once in case we have to tweak the use of > __builtin_popcount when targetting a different compiler. Okay. I'll revise the patch...
Re: [Qemu-devel] [PATCH] RISC-V: Fix isa string logic bug, use popcount to count bits
[resend, this time with proper cc's] On 03/09/2018 02:20 PM, Michael Clark wrote: Cc: Palmer DabbeltCc: Peter Maydell Signed-off-by: Michael Clark --- target/riscv/cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 4851890..f0d6d1d 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -391,7 +391,7 @@ static const TypeInfo riscv_cpu_type_info = { char *riscv_isa_string(RISCVCPU *cpu) { int i; -size_t maxlen = 5 + ctz32(cpu->env.misa); +size_t maxlen = 5 + __builtin_popcountll(cpu->env.misa); char *isa_string = g_new0(char, maxlen); snprintf(isa_string, maxlen, "rv%d", TARGET_LONG_BITS); for (i = 0; i < sizeof(riscv_exts); i++) { I'd rather you used ctpop64() from host-utils.h, so we have a centralized place to change things just once in case we have to tweak the use of __builtin_popcount when targetting a different compiler. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
Re: [Qemu-devel] [PATCH] RISC-V: Fix isa string logic bug, use popcount to count bits
On 03/09/2018 02:20 PM, Michael Clark wrote: Cc: Palmer DabbeltCc: Peter Maydell Signed-off-by: Michael Clark --- target/riscv/cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 4851890..f0d6d1d 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -391,7 +391,7 @@ static const TypeInfo riscv_cpu_type_info = { char *riscv_isa_string(RISCVCPU *cpu) { int i; -size_t maxlen = 5 + ctz32(cpu->env.misa); +size_t maxlen = 5 + __builtin_popcountll(cpu->env.misa); I'd rather you used ctpop64() from host-utils.h, so we have a centralized place to change things just once in case we have to tweak the use of __builtin_popcount when targetting a different compiler. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
[Qemu-devel] [PATCH] RISC-V: Fix isa string logic bug, use popcount to count bits
Cc: Palmer DabbeltCc: Peter Maydell Signed-off-by: Michael Clark --- target/riscv/cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 4851890..f0d6d1d 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -391,7 +391,7 @@ static const TypeInfo riscv_cpu_type_info = { char *riscv_isa_string(RISCVCPU *cpu) { int i; -size_t maxlen = 5 + ctz32(cpu->env.misa); +size_t maxlen = 5 + __builtin_popcountll(cpu->env.misa); char *isa_string = g_new0(char, maxlen); snprintf(isa_string, maxlen, "rv%d", TARGET_LONG_BITS); for (i = 0; i < sizeof(riscv_exts); i++) { -- 2.7.0