[Vm-dev] VM Maker: VMMaker.oscog-tpr.1304.mcz
commits at source.squeak.org
commits at source.squeak.org
Fri May 15 02:15:34 UTC 2015
tim Rowledge uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-tpr.1304.mcz
==================== Summary ====================
Name: VMMaker.oscog-tpr.1304
Author: tpr
Time: 14 May 2015, 7:14:06.9 pm
UUID: 4ed4bcb5-48d9-462d-a493-123140828ba3
Ancestors: VMMaker.oscog-eem.1303
Make ARM rotated 8bit constants actually be correct(er) ie
16r4000001 (SmallInteger 16r2000000) work. This helps quite a lot.
=============== Diff against VMMaker.oscog-eem.1303 ===============
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:
[:i |
(constant bitAnd: ((16rFF <<i bitAnd:16rFFFFFFFF) bitOr: 16rFF>>(32-i))) = constant ifTrue:
+ [^trueAlternativeBlock value: 32 - i value: ((constant >> i) bitOr: (constant <<(32 - i) bitAnd:16rFFFFFFFF))]].
- [^trueAlternativeBlock value: 32 - i value: constant >> i]].
^falseAlternativeBlock value!
More information about the Vm-dev
mailing list