]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/asm/internal/asm: add additional tests for constant loads on riscv64
authorJoel Sing <joel@sing.id.au>
Tue, 18 Feb 2025 06:53:19 +0000 (17:53 +1100)
committerJoel Sing <joel@sing.id.au>
Sat, 22 Mar 2025 00:38:35 +0000 (17:38 -0700)
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 <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Meng Zhuo <mengzhuo1203@gmail.com>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Mark Ryan <markdryan@rivosinc.com>
src/cmd/asm/internal/asm/testdata/riscv64.s

index 5aa2563b6ffb0da37c7393e28b0c6476946a5718..243fa590efaadebde69281d4c7ccf0a09f4c7851 100644 (file)
@@ -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