From 574e836055f2b329824ae3646bf1cb563ca03d54 Mon Sep 17 00:00:00 2001 From: Joel Sing Date: Tue, 18 Feb 2025 17:53:19 +1100 Subject: [PATCH] cmd/asm/internal/asm: add additional tests for constant loads on riscv64 This improves test coverage around the various constant load edge cases. Change-Id: Ibafeec78e76d95e9f56b48fa6bd012772bf505c5 Reviewed-on: https://go-review.googlesource.com/c/go/+/652776 LUCI-TryBot-Result: Go LUCI Reviewed-by: Cherry Mui Reviewed-by: Meng Zhuo Reviewed-by: David Chase Reviewed-by: Mark Ryan --- src/cmd/asm/internal/asm/testdata/riscv64.s | 40 ++++++++++++++------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/src/cmd/asm/internal/asm/testdata/riscv64.s b/src/cmd/asm/internal/asm/testdata/riscv64.s index 5aa2563b6f..243fa590ef 100644 --- a/src/cmd/asm/internal/asm/testdata/riscv64.s +++ b/src/cmd/asm/internal/asm/testdata/riscv64.s @@ -561,20 +561,36 @@ start: WORD $0x9abcdef0 // WORD $2596069104 // f0debc9a // MOV pseudo-instructions - MOV X5, X6 // 13830200 - MOV $2047, X5 // 9302f07f - MOV $-2048, X5 // 93020080 - MOV $2048, X5 // b71200009b820280 - MOV $-2049, X5 // b7f2ffff9b82f27f - MOV $4096, X5 // b7120000 - MOV $2147479552, X5 // b7f2ff7f - MOV $2147483647, X5 // b70200809b82f2ff - MOV $-2147483647, X5 // b70200809b821200 + MOV X5, X6 // 13830200 + MOV $2047, X5 // 9302f07f + MOV $-2048, X5 // 93020080 + MOV $2048, X5 // b71200009b820280 + MOV $-2049, X5 // b7f2ffff9b82f27f + MOV $4096, X5 // b7120000 + MOV $0x7ffff000, X5 // MOV $2147479552, X5 // b7f2ff7f + MOV $-0x7ffff000, X5 // MOV $-2147479552, X5 // b7120080 + MOV $0x7fffffff, X5 // MOV $2147483647, X5 // b70200809b82f2ff + MOV $-0x7fffffff, X5 // MOV $-2147483647, X5 // b70200809b821200 + + // Converted to load and shift (MOV + SLLI) + MOV $0x100000000, X5 // MOV $4294967296, X5 // 9302100093920202 + MOV $0x7fffffff00000000, X5 // MOV $9223372032559808512, X5 // b70200809b82f2ff93920202 + MOV $0x8000000100000000, X5 // MOV $-9223372032559808512, X5 // b70200809b82120093920202 + MOV $0xffffffff00000000, X5 // MOV $-4294967296, X5 // 9302f0ff93920202 // Converted to load of symbol (AUIPC + LD) - MOV $4294967295, X5 // 9702000083b20200 - // Converted to MOV $1, X5 + SLLI $32, X5 - MOV $4294967296, X5 // 9302100093920202 + MOV $0x80000001, X5 // MOV $2147483649, X5 // 9702000083b20200 + MOV $0xffffffff, X5 // MOV $4294967295, X5 // 9702000083b20200 + MOV $0x100000001, X5 // MOV $4294967297, X5 // 9702000083b20200 + MOV $0xfffffffffffda, X5 // MOV $4503599627370458, X5 // 9702000083b20200 + MOV $0xffffffffffffe, X5 // MOV $4503599627370494, X5 // 9702000083b20200 + MOV $0x0800000010000000, X5 // MOV $576460752571858944, X5 // 9702000083b20200 + MOV $0x8000000010000000, X5 // MOV $-9223372036586340352, X5 // 9702000083b20200 + MOV $0x0abcdabcd0000000, X5 // MOV $773733740479250432, X5 // 9702000083b20200 + MOV $0x8abcdabcd0000000, X5 // MOV $-8449638296375525376, X5 // 9702000083b20200 + MOV $0x1ffffffff0000000, X5 // MOV $2305843008945258496, X5 // 9702000083b20200 + MOV $0x7fffffffffffffff, X5 // MOV $9223372036854775807, X5 // 9702000083b20200 + MOV $0xfff0000000ffffff, X5 // MOV $-4503599610593281, X5 // 9702000083b20200 MOV (X5), X6 // 03b30200 MOV 4(X5), X6 // 03b34200 -- 2.51.0