diff options
author | 2017-12-02 23:41:43 +1100 | |
---|---|---|
committer | 2017-12-02 23:44:19 +1100 | |
commit | 843cf2982eb245531d454d788821230ca000fb7e (patch) | |
tree | 626c4ce66c81549d9879f23d9ebcee0b32d2b339 /src/osd/eigccx86.h | |
parent | 51c06e670fadc0172268149fee689a54ee06e644 (diff) |
allow compiler a little more optimisation leeway in x86 count_leading_* (nw)
Diffstat (limited to 'src/osd/eigccx86.h')
-rw-r--r-- | src/osd/eigccx86.h | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/osd/eigccx86.h b/src/osd/eigccx86.h index b67b646451e..b3831d21524 100644 --- a/src/osd/eigccx86.h +++ b/src/osd/eigccx86.h @@ -474,13 +474,12 @@ _count_leading_zeros(uint32_t value) __asm__ ( " bsrl %[value], %[result] ;" " cmovzl %[bias], %[result] ;" - " xorl $31, %[result] ;" : [result] "=&r" (result) // result can be in any register : [value] "rm" (value) // 'value' can be register or memory - , [bias] "rm" (uint32_t(63)) // 'bias' can be register or memory + , [bias] "rm" (~uint32_t(0)) // 'bias' can be register or memory : "cc" // clobbers condition codes ); - return result; + return 31U - result; } @@ -497,13 +496,12 @@ _count_leading_ones(uint32_t value) __asm__ ( " bsrl %[value], %[result] ;" " cmovzl %[bias], %[result] ;" - " xorl $31, %[result] ;" : [result] "=&r" (result) // result can be in any register : [value] "rm" (~value) // 'value' can be register or memory - , [bias] "rm" (uint32_t(63)) // 'bias' can be register or memory + , [bias] "rm" (~uint32_t(0)) // 'bias' can be register or memory : "cc" // clobbers condition codes ); - return result; + return 31U - result; } #endif // MAME_OSD_EIGCCX86_H |