diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index 3f13ea6f54d..4b43e06184d 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,3 +1,10 @@ +2000-09-26 Dave Brolley + + * cgen-utils.c (RORQI): New function. + (ROLQI): New function. + (RORHI): New function. + (ROLHI): New function. + 2000-08-28 Dave Brolley * cgen-trace.c (sim_cgen_disassemble_insn): Make sure entire insn is diff --git a/sim/common/cgen-utils.c b/sim/common/cgen-utils.c index e7407ed5726..a45804e34a1 100644 --- a/sim/common/cgen-utils.c +++ b/sim/common/cgen-utils.c @@ -321,6 +321,74 @@ CONVDISI (val) #endif /* DI_FN_SUPPORT */ +QI +RORQI (val, shift) + QI val; + int shift; +{ + if (shift != 0) + { + int remain = 8 - shift; + int mask = (1 << shift) - 1; + QI result = (val & mask) << remain; + mask = (1 << remain) - 1; + result |= (val >> shift) & mask; + return result; + } + return val; +} + +QI +ROLQI (val, shift) + QI val; + int shift; +{ + if (shift != 0) + { + int remain = 8 - shift; + int mask = (1 << remain) - 1; + QI result = (val & mask) << shift; + mask = (1 << shift) - 1; + result |= (val >> remain) & mask; + return result; + } + return val; +} + +HI +RORHI (val, shift) + HI val; + int shift; +{ + if (shift != 0) + { + int remain = 16 - shift; + int mask = (1 << shift) - 1; + HI result = (val & mask) << remain; + mask = (1 << remain) - 1; + result |= (val >> shift) & mask; + return result; + } + return val; +} + +HI +ROLHI (val, shift) + HI val; + int shift; +{ + if (shift != 0) + { + int remain = 16 - shift; + int mask = (1 << remain) - 1; + HI result = (val & mask) << shift; + mask = (1 << shift) - 1; + result |= (val >> remain) & mask; + return result; + } + return val; +} + SI RORSI (val, shift) SI val;