diff options
Diffstat (limited to 'src/cmd/compile/internal/ssa/gen/ARMOps.go')
-rw-r--r-- | src/cmd/compile/internal/ssa/gen/ARMOps.go | 51 |
1 files changed, 8 insertions, 43 deletions
diff --git a/src/cmd/compile/internal/ssa/gen/ARMOps.go b/src/cmd/compile/internal/ssa/gen/ARMOps.go index 85e1e2f941..865dc1034e 100644 --- a/src/cmd/compile/internal/ssa/gen/ARMOps.go +++ b/src/cmd/compile/internal/ssa/gen/ARMOps.go @@ -415,17 +415,18 @@ func init() { }, }, - // large zeroing (must be 4-byte aligned) + // large or unaligned zeroing // arg0 = address of memory to zero (in R1, changed as side effect) - // arg1 = address of the end of the memory to zero + // arg1 = address of the last element to zero // arg2 = value to store (always zero) // arg3 = mem // returns mem // MOVW.P Rarg2, 4(R1) // CMP R1, Rarg1 - // BLT -2(PC) + // BLE -2(PC) { name: "LoweredZero", + aux: "Int64", argLength: 4, reg: regInfo{ inputs: []regMask{buildReg("R1"), gp, gp}, @@ -433,55 +434,19 @@ func init() { }, }, - // large move (must be 4-byte aligned) + // large or unaligned move // arg0 = address of dst memory (in R2, changed as side effect) // arg1 = address of src memory (in R1, changed as side effect) - // arg2 = address of the end of src memory + // arg2 = address of the last element of src // arg3 = mem // returns mem // MOVW.P 4(R1), Rtmp // MOVW.P Rtmp, 4(R2) // CMP R1, Rarg2 - // BLT -3(PC) + // BLE -3(PC) { name: "LoweredMove", - argLength: 4, - reg: regInfo{ - inputs: []regMask{buildReg("R2"), buildReg("R1"), gp}, - clobbers: buildReg("R1 R2 FLAGS"), - }, - }, - - // unaligned zeroing - // arg0 = address of memory to zero (in R1, changed as side effect) - // arg1 = address of the end of the memory to zero - // arg2 = value to store (always zero) - // arg3 = mem - // returns mem - // MOVB.P Rarg2, 1(R1) - // CMP R1, Rarg1 - // BLT -2(PC) - { - name: "LoweredZeroU", - argLength: 4, - reg: regInfo{ - inputs: []regMask{buildReg("R1"), gp, gp}, - clobbers: buildReg("R1 FLAGS"), - }, - }, - - // unaligned move - // arg0 = address of dst memory (in R2, changed as side effect) - // arg1 = address of src memory (in R1, changed as side effect) - // arg2 = address of the end of src memory - // arg3 = mem - // returns mem - // MOVB.P 1(R1), Rtmp - // MOVB.P Rtmp, 1(R2) - // CMP R1, Rarg2 - // BLT -3(PC) - { - name: "LoweredMoveU", + aux: "Int64", argLength: 4, reg: regInfo{ inputs: []regMask{buildReg("R2"), buildReg("R1"), gp}, |