@@ -136,10 +136,11 @@ func init() {
136
136
readflags = regInfo {inputs : nil , outputs : gponly }
137
137
flagsgpax = regInfo {inputs : nil , clobbers : ax , outputs : []regMask {gp &^ ax }}
138
138
139
- gpload = regInfo {inputs : []regMask {gpspsb , 0 }, outputs : gponly }
140
- gp21load = regInfo {inputs : []regMask {gp , gpspsb , 0 }, outputs : gponly }
141
- gploadidx = regInfo {inputs : []regMask {gpspsb , gpsp , 0 }, outputs : gponly }
142
- gp21pax = regInfo {inputs : []regMask {gp &^ ax , gp }, outputs : []regMask {gp &^ ax }, clobbers : ax }
139
+ gpload = regInfo {inputs : []regMask {gpspsb , 0 }, outputs : gponly }
140
+ gp21load = regInfo {inputs : []regMask {gp , gpspsb , 0 }, outputs : gponly }
141
+ gploadidx = regInfo {inputs : []regMask {gpspsb , gpsp , 0 }, outputs : gponly }
142
+ gp21loadidx = regInfo {inputs : []regMask {gp , gpspsb , gpsp , 0 }, outputs : gponly }
143
+ gp21pax = regInfo {inputs : []regMask {gp &^ ax , gp }, outputs : []regMask {gp &^ ax }, clobbers : ax }
143
144
144
145
gpstore = regInfo {inputs : []regMask {gpspsb , gpsp , 0 }}
145
146
gpstoreconst = regInfo {inputs : []regMask {gpspsb , 0 }}
@@ -409,6 +410,32 @@ func init() {
409
410
{name : "XORQload" , argLength : 3 , reg : gp21load , asm : "XORQ" , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , faultOnNilArg1 : true , symEffect : "Read" }, // arg0 ^ tmp, tmp loaded from arg1+auxint+aux, arg2 = mem
410
411
{name : "XORLload" , argLength : 3 , reg : gp21load , asm : "XORL" , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , faultOnNilArg1 : true , symEffect : "Read" }, // arg0 ^ tmp, tmp loaded from arg1+auxint+aux, arg2 = mem
411
412
413
+ {name : "ADDLloadidx1" , argLength : 4 , reg : gp21loadidx , asm : "ADDL" , scale : 1 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 + tmp, tmp loaded from arg1+ arg2+auxint+aux, arg3 = mem
414
+ {name : "ADDLloadidx4" , argLength : 4 , reg : gp21loadidx , asm : "ADDL" , scale : 4 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 + tmp, tmp loaded from arg1+4*arg2+auxint+aux, arg3 = mem
415
+ {name : "ADDLloadidx8" , argLength : 4 , reg : gp21loadidx , asm : "ADDL" , scale : 8 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 + tmp, tmp loaded from arg1+8*arg2+auxint+aux, arg3 = mem
416
+ {name : "ADDQloadidx1" , argLength : 4 , reg : gp21loadidx , asm : "ADDQ" , scale : 1 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 + tmp, tmp loaded from arg1+ arg2+auxint+aux, arg3 = mem
417
+ {name : "ADDQloadidx8" , argLength : 4 , reg : gp21loadidx , asm : "ADDQ" , scale : 8 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 + tmp, tmp loaded from arg1+8*arg2+auxint+aux, arg3 = mem
418
+ {name : "SUBLloadidx1" , argLength : 4 , reg : gp21loadidx , asm : "SUBL" , scale : 1 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 - tmp, tmp loaded from arg1+ arg2+auxint+aux, arg3 = mem
419
+ {name : "SUBLloadidx4" , argLength : 4 , reg : gp21loadidx , asm : "SUBL" , scale : 4 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 - tmp, tmp loaded from arg1+4*arg2+auxint+aux, arg3 = mem
420
+ {name : "SUBLloadidx8" , argLength : 4 , reg : gp21loadidx , asm : "SUBL" , scale : 8 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 - tmp, tmp loaded from arg1+8*arg2+auxint+aux, arg3 = mem
421
+ {name : "SUBQloadidx1" , argLength : 4 , reg : gp21loadidx , asm : "SUBQ" , scale : 1 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 - tmp, tmp loaded from arg1+ arg2+auxint+aux, arg3 = mem
422
+ {name : "SUBQloadidx8" , argLength : 4 , reg : gp21loadidx , asm : "SUBQ" , scale : 8 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 - tmp, tmp loaded from arg1+8*arg2+auxint+aux, arg3 = mem
423
+ {name : "ANDLloadidx1" , argLength : 4 , reg : gp21loadidx , asm : "ANDL" , scale : 1 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 & tmp, tmp loaded from arg1+ arg2+auxint+aux, arg3 = mem
424
+ {name : "ANDLloadidx4" , argLength : 4 , reg : gp21loadidx , asm : "ANDL" , scale : 4 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 & tmp, tmp loaded from arg1+4*arg2+auxint+aux, arg3 = mem
425
+ {name : "ANDLloadidx8" , argLength : 4 , reg : gp21loadidx , asm : "ANDL" , scale : 8 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 & tmp, tmp loaded from arg1+8*arg2+auxint+aux, arg3 = mem
426
+ {name : "ANDQloadidx1" , argLength : 4 , reg : gp21loadidx , asm : "ANDQ" , scale : 1 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 & tmp, tmp loaded from arg1+ arg2+auxint+aux, arg3 = mem
427
+ {name : "ANDQloadidx8" , argLength : 4 , reg : gp21loadidx , asm : "ANDQ" , scale : 8 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 & tmp, tmp loaded from arg1+8*arg2+auxint+aux, arg3 = mem
428
+ {name : "ORLloadidx1" , argLength : 4 , reg : gp21loadidx , asm : "ORL" , scale : 1 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 | tmp, tmp loaded from arg1+ arg2+auxint+aux, arg3 = mem
429
+ {name : "ORLloadidx4" , argLength : 4 , reg : gp21loadidx , asm : "ORL" , scale : 4 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 | tmp, tmp loaded from arg1+4*arg2+auxint+aux, arg3 = mem
430
+ {name : "ORLloadidx8" , argLength : 4 , reg : gp21loadidx , asm : "ORL" , scale : 8 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 | tmp, tmp loaded from arg1+8*arg2+auxint+aux, arg3 = mem
431
+ {name : "ORQloadidx1" , argLength : 4 , reg : gp21loadidx , asm : "ORQ" , scale : 1 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 | tmp, tmp loaded from arg1+ arg2+auxint+aux, arg3 = mem
432
+ {name : "ORQloadidx8" , argLength : 4 , reg : gp21loadidx , asm : "ORQ" , scale : 8 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 | tmp, tmp loaded from arg1+8*arg2+auxint+aux, arg3 = mem
433
+ {name : "XORLloadidx1" , argLength : 4 , reg : gp21loadidx , asm : "XORL" , scale : 1 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 ^ tmp, tmp loaded from arg1+ arg2+auxint+aux, arg3 = mem
434
+ {name : "XORLloadidx4" , argLength : 4 , reg : gp21loadidx , asm : "XORL" , scale : 4 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 ^ tmp, tmp loaded from arg1+4*arg2+auxint+aux, arg3 = mem
435
+ {name : "XORLloadidx8" , argLength : 4 , reg : gp21loadidx , asm : "XORL" , scale : 8 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 ^ tmp, tmp loaded from arg1+8*arg2+auxint+aux, arg3 = mem
436
+ {name : "XORQloadidx1" , argLength : 4 , reg : gp21loadidx , asm : "XORQ" , scale : 1 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 ^ tmp, tmp loaded from arg1+ arg2+auxint+aux, arg3 = mem
437
+ {name : "XORQloadidx8" , argLength : 4 , reg : gp21loadidx , asm : "XORQ" , scale : 8 , aux : "SymOff" , resultInArg0 : true , clobberFlags : true , symEffect : "Read" }, // arg0 ^ tmp, tmp loaded from arg1+8*arg2+auxint+aux, arg3 = mem
438
+
412
439
// direct binary-op on memory (read-modify-write)
413
440
{name : "ADDQmodify" , argLength : 3 , reg : gpstore , asm : "ADDQ" , aux : "SymOff" , typ : "Mem" , clobberFlags : true , faultOnNilArg0 : true , symEffect : "Read,Write" }, // *(arg0+auxint+aux) += arg1, arg2=mem
414
441
{name : "SUBQmodify" , argLength : 3 , reg : gpstore , asm : "SUBQ" , aux : "SymOff" , typ : "Mem" , clobberFlags : true , faultOnNilArg0 : true , symEffect : "Read,Write" }, // *(arg0+auxint+aux) -= arg1, arg2=mem
0 commit comments