diff mbox

[5/8] target/m68k: optimize bcd_flags() using extract op

Message ID 20170510200535.13268-6-f4bug@amsat.org (mailing list archive)
State New, archived
Headers show

Commit Message

Philippe Mathieu-Daudé May 10, 2017, 8:05 p.m. UTC
Applied using Coccinelle script.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 target/m68k/translate.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Laurent Vivier May 11, 2017, 8:41 a.m. UTC | #1
Le 10/05/2017 à 22:05, Philippe Mathieu-Daudé a écrit :
> Applied using Coccinelle script.
> 
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  target/m68k/translate.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/target/m68k/translate.c b/target/m68k/translate.c
> index 9f60fbc0db..babb9e2c5b 100644
> --- a/target/m68k/translate.c
> +++ b/target/m68k/translate.c
> @@ -1463,8 +1463,7 @@ static void bcd_flags(TCGv val)
>      tcg_gen_andi_i32(QREG_CC_C, val, 0x0ff);
>      tcg_gen_or_i32(QREG_CC_Z, QREG_CC_Z, QREG_CC_C);
>  
> -    tcg_gen_shri_i32(QREG_CC_C, val, 8);
> -    tcg_gen_andi_i32(QREG_CC_C, QREG_CC_C, 1);
> +    tcg_gen_extract_i32(QREG_CC_C, val, 8, 1);
>  
>      tcg_gen_mov_i32(QREG_CC_X, QREG_CC_C);
>  }
> 

Acked-by: Laurent Vivier <laurent@vivier.eu>
Philippe Mathieu-Daudé May 12, 2017, 1:52 a.m. UTC | #2
This patch is correct:

$ docker run -it -v `pwd`:`pwd` -w `pwd` petersenna/coccinelle --sp-file 
scripts/coccinelle/tcg_gen_extract.cocci --macro-file 
scripts/cocci-macro-file.h --dir target/m68k
init_defs_builtins: /usr/lib64/coccinelle/standard.h
init_defs: scripts/cocci-macro-file.h
HANDLING: target/m68k/helper.c
HANDLING: target/m68k/gdbstub.c
HANDLING: target/m68k/translate.c
candidate at target/m68k/translate.c:1466
   op_size: i32/i32 (same)
   low_bits: 1 (value: 0x1)
   len: 0x1
   len_bits == low_bits
   candidate IS optimizable

On 05/11/2017 05:41 AM, Laurent Vivier wrote:
> Le 10/05/2017 à 22:05, Philippe Mathieu-Daudé a écrit :
>> Applied using Coccinelle script.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> ---
>>  target/m68k/translate.c | 3 +--
>>  1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/target/m68k/translate.c b/target/m68k/translate.c
>> index 9f60fbc0db..babb9e2c5b 100644
>> --- a/target/m68k/translate.c
>> +++ b/target/m68k/translate.c
>> @@ -1463,8 +1463,7 @@ static void bcd_flags(TCGv val)
>>      tcg_gen_andi_i32(QREG_CC_C, val, 0x0ff);
>>      tcg_gen_or_i32(QREG_CC_Z, QREG_CC_Z, QREG_CC_C);
>>
>> -    tcg_gen_shri_i32(QREG_CC_C, val, 8);
>> -    tcg_gen_andi_i32(QREG_CC_C, QREG_CC_C, 1);
>> +    tcg_gen_extract_i32(QREG_CC_C, val, 8, 1);
>>
>>      tcg_gen_mov_i32(QREG_CC_X, QREG_CC_C);
>>  }
>>
>
> Acked-by: Laurent Vivier <laurent@vivier.eu>

Thanks!
diff mbox

Patch

diff --git a/target/m68k/translate.c b/target/m68k/translate.c
index 9f60fbc0db..babb9e2c5b 100644
--- a/target/m68k/translate.c
+++ b/target/m68k/translate.c
@@ -1463,8 +1463,7 @@  static void bcd_flags(TCGv val)
     tcg_gen_andi_i32(QREG_CC_C, val, 0x0ff);
     tcg_gen_or_i32(QREG_CC_Z, QREG_CC_Z, QREG_CC_C);
 
-    tcg_gen_shri_i32(QREG_CC_C, val, 8);
-    tcg_gen_andi_i32(QREG_CC_C, QREG_CC_C, 1);
+    tcg_gen_extract_i32(QREG_CC_C, val, 8, 1);
 
     tcg_gen_mov_i32(QREG_CC_X, QREG_CC_C);
 }