]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/cmd/compile/internal/ssa/_gen/ARM64.rules
cmd/compile: remove more extension ops when not needed
[gostls13.git] / src / cmd / compile / internal / ssa / _gen / ARM64.rules
index 9af771a472938b6386088cefce29ae40ab7b7f9a..4a99771e3b87585ec1e6f2f1df5d24b59fb82a95 100644 (file)
 // zero upper bit of the register; no need to zero-extend
 (MOVBUreg x:((Equal|NotEqual|LessThan|LessThanU|LessThanF|LessEqual|LessEqualU|LessEqualF|GreaterThan|GreaterThanU|GreaterThanF|GreaterEqual|GreaterEqualU|GreaterEqualF) _)) => (MOVDreg x)
 
+// Don't bother extending if we're not using the higher bits.
+(MOV(B|BU)reg x) && v.Type.Size() <= 1 => x
+(MOV(H|HU)reg x) && v.Type.Size() <= 2 => x
+(MOV(W|WU)reg x) && v.Type.Size() <= 4 => x
+
 // omit unsign extension
 (MOVWUreg x) && zeroUpper32Bits(x, 3) => x