[Vm-dev] VM Maker: VMMaker.oscog-tpr.1098.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Mar 18 22:00:32 UTC 2015
tim Rowledge uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-tpr.1098.mcz
==================== Summary ====================
Name: VMMaker.oscog-tpr.1098
Author: tpr
Time: 18 March 2015, 2:58:53.385 pm
UUID: e2b9f747-52b7-4b07-8689-8b09ebb75c65
Ancestors: VMMaker.oscog-eem.1097
Improve rotateableblahblah to only use even shifts (because ARM) and to handle well-rotated values like 16rF0000000F
=============== Diff against VMMaker.oscog-eem.1097 ===============
Item was changed:
----- Method: CogARMCompiler>>rotateable8bitImmediate:ifTrue:ifFalse: (in category 'testing') -----
rotateable8bitImmediate: constant ifTrue: trueAlternativeBlock ifFalse: falseAlternativeBlock
<inline: true>
"For data processing operands, there is the immediate shifter_operand variant,
where an 8 bit value is ring shifted _right_ by i.
This is only suitable for quick constants(Cq), which won't change."
(constant bitAnd: 16rFF) = constant ifTrue:
[^trueAlternativeBlock value: 0 value: constant].
+ 2 to: 30 by: 2 do:
- 1 to: 30 do:
[:i |
+ (constant bitAnd: ((16rFF <<i bitAnd:16rFFFFFFFF) bitOr: 16rFF>>(32-i))) = constant ifTrue:
- (constant bitAnd: 16rFF << i) = constant ifTrue:
[^trueAlternativeBlock value: 32 - i value: constant >> i]].
^falseAlternativeBlock value!
More information about the Vm-dev
mailing list