@@ -194,12 +194,12 @@ func init() {
194
194
{name : "FMSUB" , argLength : 3 , reg : fp31 , asm : "FMSUB" }, // arg0*arg1 - arg2
195
195
{name : "FMSUBS" , argLength : 3 , reg : fp31 , asm : "FMSUBS" }, // arg0*arg1 - arg2
196
196
197
- {name : "SRAD" , argLength : 2 , reg : gp21 , asm : "SRAD" }, // arg0 >>a arg1, 64 bits (all sign if arg1 & 64 != 0 )
198
- {name : "SRAW" , argLength : 2 , reg : gp21 , asm : "SRAW" }, // arg0 >>a arg1, 32 bits (all sign if arg1 & 32 != 0)
199
- {name : "SRD" , argLength : 2 , reg : gp21 , asm : "SRD" }, // arg0 >> arg1, 64 bits (0 if arg1 & 64 != 0)
200
- {name : "SRW" , argLength : 2 , reg : gp21 , asm : "SRW" }, // arg0 >> arg1, 32 bits (0 if arg1 & 32 != 0)
201
- {name : "SLD" , argLength : 2 , reg : gp21 , asm : "SLD" }, // arg0 << arg1, 64 bits (0 if arg1 & 64 != 0)
202
- {name : "SLW" , argLength : 2 , reg : gp21 , asm : "SLW" }, // arg0 << arg1, 32 bits (0 if arg1 & 32 != 0)
197
+ {name : "SRAD" , argLength : 2 , reg : gp21 , asm : "SRAD" }, // signed arg0 >> ( arg1&127) , 64 bit width (note: 127, not 63! )
198
+ {name : "SRAW" , argLength : 2 , reg : gp21 , asm : "SRAW" }, // signed arg0 >> ( arg1&63), 32 bit width
199
+ {name : "SRD" , argLength : 2 , reg : gp21 , asm : "SRD" }, // unsigned arg0 >> ( arg1&127), 64 bit width
200
+ {name : "SRW" , argLength : 2 , reg : gp21 , asm : "SRW" }, // unsigned arg0 >> ( arg1&63), 32 bit width
201
+ {name : "SLD" , argLength : 2 , reg : gp21 , asm : "SLD" }, // arg0 << ( arg1&127), 64 bit width
202
+ {name : "SLW" , argLength : 2 , reg : gp21 , asm : "SLW" }, // arg0 << ( arg1&63), 32 bit width
203
203
204
204
{name : "ROTL" , argLength : 2 , reg : gp21 , asm : "ROTL" }, // arg0 rotate left by arg1 mod 64
205
205
{name : "ROTLW" , argLength : 2 , reg : gp21 , asm : "ROTLW" }, // uint32(arg0) rotate left by arg1 mod 32
@@ -208,12 +208,12 @@ func init() {
208
208
{name : "ADDconstForCarry" , argLength : 1 , reg : regInfo {inputs : []regMask {gp | sp | sb }, clobbers : tmp }, aux : "Int16" , asm : "ADDC" , typ : "Flags" }, // _, carry := arg0 + auxint
209
209
{name : "MaskIfNotCarry" , argLength : 1 , reg : crgp , asm : "ADDME" , typ : "Int64" }, // carry - 1 (if carry then 0 else -1)
210
210
211
- {name : "SRADconst" , argLength : 1 , reg : gp11 , asm : "SRAD" , aux : "Int64" }, // arg0 >>a aux, 64 bits
212
- {name : "SRAWconst" , argLength : 1 , reg : gp11 , asm : "SRAW" , aux : "Int64" }, // arg0 >>a aux, 32 bits
213
- {name : "SRDconst" , argLength : 1 , reg : gp11 , asm : "SRD" , aux : "Int64" }, // arg0 >> aux, 64 bits
214
- {name : "SRWconst" , argLength : 1 , reg : gp11 , asm : "SRW" , aux : "Int64" }, // arg0 >> aux, 32 bits
215
- {name : "SLDconst" , argLength : 1 , reg : gp11 , asm : "SLD" , aux : "Int64" }, // arg0 << aux, 64 bits
216
- {name : "SLWconst" , argLength : 1 , reg : gp11 , asm : "SLW" , aux : "Int64" }, // arg0 << aux, 32 bits
211
+ {name : "SRADconst" , argLength : 1 , reg : gp11 , asm : "SRAD" , aux : "Int64" }, // signed arg0 >> auxInt, 0 <= auxInt < 64, 64 bit width
212
+ {name : "SRAWconst" , argLength : 1 , reg : gp11 , asm : "SRAW" , aux : "Int64" }, // signed arg0 >> auxInt, 0 <= auxInt < 32, 32 bit width
213
+ {name : "SRDconst" , argLength : 1 , reg : gp11 , asm : "SRD" , aux : "Int64" }, // unsigned arg0 >> auxInt, 0 <= auxInt < 64, 64 bit width
214
+ {name : "SRWconst" , argLength : 1 , reg : gp11 , asm : "SRW" , aux : "Int64" }, // unsigned arg0 >> auxInt, 0 <= auxInt < 32, 32 bit width
215
+ {name : "SLDconst" , argLength : 1 , reg : gp11 , asm : "SLD" , aux : "Int64" }, // arg0 << auxInt, 0 <= auxInt < 64, 64 bit width
216
+ {name : "SLWconst" , argLength : 1 , reg : gp11 , asm : "SLW" , aux : "Int64" }, // arg0 << auxInt, 0 <= auxInt < 32, 32 bit width
217
217
218
218
{name : "ROTLconst" , argLength : 1 , reg : gp11 , asm : "ROTL" , aux : "Int64" }, // arg0 rotate left by auxInt bits
219
219
{name : "ROTLWconst" , argLength : 1 , reg : gp11 , asm : "ROTLW" , aux : "Int64" }, // uint32(arg0) rotate left by auxInt bits
0 commit comments