ref: 9e926eeb4e3c716bcbd11377c131061cd06900ef
parent: a5d8cd30bb126b301cd79393540be63558dcfe89
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sat Sep 3 15:05:28 EDT 2016
5c: do shift propagation for rotate right (ROR)
--- a/sys/src/cmd/5c/peep.c
+++ b/sys/src/cmd/5c/peep.c
@@ -45,7 +45,7 @@
t = 0;
for(r=firstr; r!=R; r=r->link) {
p = r->prog;
- if(p->as == ASLL || p->as == ASRL || p->as == ASRA) {
+ if(p->as == ASLL || p->as == ASRL || p->as == ASRA || p->as == AROR) {
/*
* elide shift into D_SHIFT operand of subsequent instruction
*/
@@ -668,6 +668,9 @@
break;
case ASRA:
o |= 2<<5;
+ break;
+ case AROR:
+ o |= 3<<5;
break;
}
p2->from.offset = o;