[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