From 6d4c43bfc62a1f237431df1be13ced96d7cade6c Mon Sep 17 00:00:00 2001 From: Dave Brolley Date: Tue, 26 Sep 2000 17:23:58 +0000 Subject: [PATCH] 2000-09-26 Dave Brolley * cgen-utils.c (RORQI): New function. (ROLQI): New function. (RORHI): New function. (ROLHI): New function. --- sim/common/ChangeLog | 7 +++++ sim/common/cgen-utils.c | 68 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index 3f13ea6f54..4b43e06184 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 e7407ed572..a45804e34a 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; -- 2.34.1