From 188e2bf89712fcb97bd5329f167fedc6dd90316b Mon Sep 17 00:00:00 2001 From: Alberto Donizetti Date: Tue, 10 Apr 2018 11:20:20 +0200 Subject: test/codegen: port arm64 BIC/EON/ORN and masking tests And delete them from asm_test. Change-Id: I24f421b87e8cb4770c887a6dfd58eacd0088947d Reviewed-on: https://go-review.googlesource.com/106056 Reviewed-by: Keith Randall --- test/codegen/bits.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'test/codegen') diff --git a/test/codegen/bits.go b/test/codegen/bits.go index 53f03094d7..9de2201cb1 100644 --- a/test/codegen/bits.go +++ b/test/codegen/bits.go @@ -261,3 +261,32 @@ func bitcompl32(a, b uint32) (n uint32) { return n } + +// Check AND masking on arm64 (Issue #19857) + +func and_mask_1(a uint64) uint64 { + // arm64:`AND\t` + return a & ((1 << 63) - 1) +} + +func and_mask_2(a uint64) uint64 { + // arm64:`AND\t` + return a & (1 << 63) +} + +// Check generation of arm64 BIC/EON/ORN instructions + +func op_bic(x, y uint32) uint32 { + // arm64:`BIC\t`,-`AND` + return x &^ y +} + +func op_eon(x, y uint32) uint32 { + // arm64:`EON\t`,-`XOR` + return x ^ ^y +} + +func op_orn(x, y uint32) uint32 { + // arm64:`ORN\t`,-`ORR` + return x | ^y +} -- cgit v1.3