VM Maker: VMMaker.oscog-eem.2604.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

VM Maker: VMMaker.oscog-eem.2604.mcz

commits-2
 
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2604.mcz

==================== Summary ====================

Name: VMMaker.oscog-eem.2604
Author: eem
Time: 8 December 2019, 12:26:04.834096 pm
UUID: 5cbfedbe-5d17-4395-b8b4-37fbf872405c
Ancestors: VMMaker.oscog-eem.2603

A64 M16rR & MbrR

=============== Diff against VMMaker.oscog-eem.2603 ===============

Item was added:
+ ----- Method: CogARMv8Compiler>>canZeroExtend (in category 'testing') -----
+ canZeroExtend
+ "x64 has native ZeroExtend8RR, ZeroExtend16RR, & ZeroExtend32RR."
+ <inline: true>
+ ^true!

Item was added:
+ ----- Method: CogARMv8Compiler>>concretizeMoveM16rR (in category 'generate machine code - concretize') -----
+ concretizeMoveM16rR
+ "C6.2.168 LDURH C6-1061"
+ | offset destReg srcReg |
+ offset := operands at: 0.
+ srcReg := operands at: 1.
+ destReg := operands at: 2.
+ (offset between: -256 and: 255)
+ ifTrue:
+ [machineCode
+ at: 0
+ put: 2r0111100001 << 22
+ + ((offset bitAnd: 1 << 9 - 1) << 12)
+ + (srcReg << 5)
+ + destReg.
+ ^machineCodeSize := 4]
+ ifFalse:
+ [self shouldBeImplemented]!

Item was added:
+ ----- Method: CogARMv8Compiler>>concretizeMoveMbrR (in category 'generate machine code - concretize') -----
+ concretizeMoveMbrR
+ "C6.2.167 LDURB C6-1060"
+ | offset destReg srcReg |
+ offset := operands at: 0.
+ srcReg := operands at: 1.
+ destReg := operands at: 2.
+ (offset between: -256 and: 255)
+ ifTrue:
+ [machineCode
+ at: 0
+ put: 2r0011100001 << 22
+ + ((offset bitAnd: 1 << 9 - 1) << 12)
+ + (srcReg << 5)
+ + destReg.
+ ^machineCodeSize := 4]
+ ifFalse:
+ [self shouldBeImplemented]!

Item was changed:
  ----- Method: CogARMv8Compiler>>strn:rt:imm:shiftBy12: (in category 'generate machine code - support') -----
  strn: srcReg rt: targetReg imm: offset shiftBy12: shiftBy12
  "C6.2.273 STR (immediate) C6-1239
  C6.2.297 STUR C6-1290"
 
+ self deny: SP = targetReg.
- self deny: srcReg = SP.
  self deny: srcReg = targetReg.
  "Unsigned offset, C6-1240"
  (offset \\ 8 = 0
  and: [offset / 8 between: 0 and: 1 << 12 - 1]) ifTrue:
  [^2r1111100100 << 22
  + (offset << 7 "10 - 3")
  + (targetReg << 5)
  + srcReg].
  self assert: (offset between: -256 and: 255).
  ^2r11111000000 << 21
   + ((offset bitAnd: 511) << 12)
   + (targetReg << 5)
   + srcReg!