]> Cypherpunks.ru repositories - gostls13.git/blobdiff - test/codegen/memops.go
cmd/compile: don't use BTS when OR works, add direct memory BTS operations
[gostls13.git] / test / codegen / memops.go
index f6cf9450a1eb455b58f130c8d8bc46f3e8081160..e5e89c2acc9f4470a3489d47c6bdc0b8dc8fdc65 100644 (file)
@@ -372,3 +372,32 @@ func storeTest(a []bool, v int, i int) {
        // amd64: `BTL\t\$1,`,`SETCS\t3\([A-Z]+[0-9]*\)\([A-Z]+[0-9]*\*1\)`
        a[3+i] = v&2 != 0
 }
+
+func bitOps(p *[12]uint64) {
+       // amd64: `ORQ\t\$8, \(AX\)`
+       p[0] |= 8
+       // amd64: `ORQ\t\$1073741824, 8\(AX\)`
+       p[1] |= 1 << 30
+       // amd64: `BTSQ\t\$31, 16\(AX\)`
+       p[2] |= 1 << 31
+       // amd64: `BTSQ\t\$63, 24\(AX\)`
+       p[3] |= 1 << 63
+
+       // amd64: `ANDQ\t\$-9, 32\(AX\)`
+       p[4] &^= 8
+       // amd64: `ANDQ\t\$-1073741825, 40\(AX\)`
+       p[5] &^= 1 << 30
+       // amd64: `BTRQ\t\$31, 48\(AX\)`
+       p[6] &^= 1 << 31
+       // amd64: `BTRQ\t\$63, 56\(AX\)`
+       p[7] &^= 1 << 63
+
+       // amd64: `XORQ\t\$8, 64\(AX\)`
+       p[8] ^= 8
+       // amd64: `XORQ\t\$1073741824, 72\(AX\)`
+       p[9] ^= 1 << 30
+       // amd64: `BTCQ\t\$31, 80\(AX\)`
+       p[10] ^= 1 << 31
+       // amd64: `BTCQ\t\$63, 88\(AX\)`
+       p[11] ^= 1 << 63
+}