Bug 182190

Summary: ARM64 assembler should use optionally-shifted immediate values
Product: WebKit Reporter: JF Bastien <jfbastien>
Component: JavaScriptCoreAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: fpizlo, jfbastien, keith_miller, mark.lam, msaboff, rmorisset, saam
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   

Description JF Bastien 2018-01-26 15:27:09 PST
Right now it knows about uint12 immediate values (and their negative equivalents) but doesn't know about the optional shift:

  case shift of
      when '00' imm = ZeroExtend(imm12, datasize);
      when '01' imm = ZeroExtend(imm12:Zeros(12), datasize); // <--- THIS
      when '1x' ReservedValue();

This exists in add and sub at a minimum. Look at all opcodes which have this optional shift, and teach the ARM64 assembler to use them!