diff options
Diffstat (limited to 'src/cmd/compile/internal/ssa/gen/S390X.rules')
-rw-r--r-- | src/cmd/compile/internal/ssa/gen/S390X.rules | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/cmd/compile/internal/ssa/gen/S390X.rules b/src/cmd/compile/internal/ssa/gen/S390X.rules index 2084179edc..d8c27c7ce1 100644 --- a/src/cmd/compile/internal/ssa/gen/S390X.rules +++ b/src/cmd/compile/internal/ssa/gen/S390X.rules @@ -386,17 +386,17 @@ (MOVWstore dst (MOVWZload src mem) mem))) // MVC for other moves. Use up to 4 instructions (sizes up to 1024 bytes). -(Move [s] dst src mem) && s > 0 && s <= 256 -> +(Move [s] dst src mem) && s > 0 && s <= 256 && logLargeCopy(v, s) -> (MVC [makeValAndOff(s, 0)] dst src mem) -(Move [s] dst src mem) && s > 256 && s <= 512 -> +(Move [s] dst src mem) && s > 256 && s <= 512 && logLargeCopy(v, s) -> (MVC [makeValAndOff(s-256, 256)] dst src (MVC [makeValAndOff(256, 0)] dst src mem)) -(Move [s] dst src mem) && s > 512 && s <= 768 -> +(Move [s] dst src mem) && s > 512 && s <= 768 && logLargeCopy(v, s) -> (MVC [makeValAndOff(s-512, 512)] dst src (MVC [makeValAndOff(256, 256)] dst src (MVC [makeValAndOff(256, 0)] dst src mem))) -(Move [s] dst src mem) && s > 768 && s <= 1024 -> +(Move [s] dst src mem) && s > 768 && s <= 1024 && logLargeCopy(v, s) -> (MVC [makeValAndOff(s-768, 768)] dst src (MVC [makeValAndOff(256, 512)] dst src (MVC [makeValAndOff(256, 256)] dst src (MVC [makeValAndOff(256, 0)] dst src mem)))) // Move more than 1024 bytes using a loop. -(Move [s] dst src mem) && s > 1024 -> +(Move [s] dst src mem) && s > 1024 && logLargeCopy(v, s) -> (LoweredMove [s%256] dst src (ADD <src.Type> src (MOVDconst [(s/256)*256])) mem) // Lowering Zero instructions @@ -421,7 +421,7 @@ (Zero [s] destptr mem) && s > 0 && s <= 1024 -> (CLEAR [makeValAndOff(s, 0)] destptr mem) -// Move more than 1024 bytes using a loop. +// Zero more than 1024 bytes using a loop. (Zero [s] destptr mem) && s > 1024 -> (LoweredZero [s%256] destptr (ADDconst <destptr.Type> destptr [(s/256)*256]) mem) |