ref: 0d8b07da528fbf62e9d85d6177b0caddcab35d36
parent: 63514bf453bf8d236533b52a25398c5737e0d516
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;
--
⑨