]> Cypherpunks.ru repositories - gostls13.git/blobdiff - test/codegen/comparisons.go
cmd/compile: optimize absorbing InvertFlags into Noov comparisons for arm64
[gostls13.git] / test / codegen / comparisons.go
index 071b68facfce44d63d09c487ed1e97ca5f72ae82..4edf9303dfd29d93b96e7f62f2f762302709970a 100644 (file)
@@ -788,3 +788,16 @@ func cmp7() {
        cmp5[string]("") // force instantiation
        cmp6[string]("") // force instantiation
 }
+
+type Point struct {
+       X, Y int
+}
+
+// invertLessThanNoov checks (LessThanNoov (InvertFlags x)) is lowered as
+// CMP, CSET, CSEL instruction sequence. InvertFlags are only generated under
+// certain conditions, see canonLessThan, so if the code below does not
+// generate an InvertFlags OP, this check may fail.
+func invertLessThanNoov(p1, p2, p3 Point) bool {
+       // arm64:`CMP`,`CSET`,`CSEL`
+       return (p1.X-p3.X)*(p2.Y-p3.Y)-(p2.X-p3.X)*(p1.Y-p3.Y) < 0
+}