[llvm] 39256ed - [RISCV][test] Add more tests of immediate materialisation

Ben Shi via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 15 15:34:45 PST 2021


Author: Ben Shi
Date: 2021-11-15T23:34:27Z
New Revision: 39256ed58ce96daac0e4153af7b73122505c1626

URL: https://github.com/llvm/llvm-project/commit/39256ed58ce96daac0e4153af7b73122505c1626
DIFF: https://github.com/llvm/llvm-project/commit/39256ed58ce96daac0e4153af7b73122505c1626.diff

LOG: [RISCV][test] Add more tests of immediate materialisation

Reviewed By: craig.topper, luismarques

Differential Revision: https://reviews.llvm.org/D113567

Added: 
    

Modified: 
    llvm/test/CodeGen/RISCV/imm.ll
    llvm/test/MC/RISCV/rv64zba-aliases-valid.s

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/RISCV/imm.ll b/llvm/test/CodeGen/RISCV/imm.ll
index 1ce3ebd55ae64..30f2c0025c9b9 100644
--- a/llvm/test/CodeGen/RISCV/imm.ll
+++ b/llvm/test/CodeGen/RISCV/imm.ll
@@ -1693,3 +1693,170 @@ define i64 @imm_12900925247761() {
 ; RV64IZBS-NEXT:    ret
   ret i64 12900925247761
 }
+
+define i64 @imm_7158272001() {
+; RV32I-LABEL: imm_7158272001:
+; RV32I:       # %bb.0:
+; RV32I-NEXT:    lui a0, 699049
+; RV32I-NEXT:    addi a0, a0, 1
+; RV32I-NEXT:    addi a1, zero, 1
+; RV32I-NEXT:    ret
+;
+; RV64I-LABEL: imm_7158272001:
+; RV64I:       # %bb.0:
+; RV64I-NEXT:    lui a0, 427
+; RV64I-NEXT:    addiw a0, a0, -1367
+; RV64I-NEXT:    slli a0, a0, 12
+; RV64I-NEXT:    addi a0, a0, 1
+; RV64I-NEXT:    ret
+;
+; RV64IZBA-LABEL: imm_7158272001:
+; RV64IZBA:       # %bb.0:
+; RV64IZBA-NEXT:    lui a0, 427
+; RV64IZBA-NEXT:    addiw a0, a0, -1367
+; RV64IZBA-NEXT:    slli a0, a0, 12
+; RV64IZBA-NEXT:    addi a0, a0, 1
+; RV64IZBA-NEXT:    ret
+;
+; RV64IZBS-LABEL: imm_7158272001:
+; RV64IZBS:       # %bb.0:
+; RV64IZBS-NEXT:    lui a0, 427
+; RV64IZBS-NEXT:    addiw a0, a0, -1367
+; RV64IZBS-NEXT:    slli a0, a0, 12
+; RV64IZBS-NEXT:    addi a0, a0, 1
+; RV64IZBS-NEXT:    ret
+  ret i64 7158272001 ; 0x0000_0001_aaaa_9001
+}
+
+define i64 @imm_12884889601() {
+; RV32I-LABEL: imm_12884889601:
+; RV32I:       # %bb.0:
+; RV32I-NEXT:    lui a0, 1048573
+; RV32I-NEXT:    addi a0, a0, 1
+; RV32I-NEXT:    addi a1, zero, 2
+; RV32I-NEXT:    ret
+;
+; RV64I-LABEL: imm_12884889601:
+; RV64I:       # %bb.0:
+; RV64I-NEXT:    lui a0, 768
+; RV64I-NEXT:    addiw a0, a0, -3
+; RV64I-NEXT:    slli a0, a0, 12
+; RV64I-NEXT:    addi a0, a0, 1
+; RV64I-NEXT:    ret
+;
+; RV64IZBA-LABEL: imm_12884889601:
+; RV64IZBA:       # %bb.0:
+; RV64IZBA-NEXT:    lui a0, 768
+; RV64IZBA-NEXT:    addiw a0, a0, -3
+; RV64IZBA-NEXT:    slli a0, a0, 12
+; RV64IZBA-NEXT:    addi a0, a0, 1
+; RV64IZBA-NEXT:    ret
+;
+; RV64IZBS-LABEL: imm_12884889601:
+; RV64IZBS:       # %bb.0:
+; RV64IZBS-NEXT:    lui a0, 768
+; RV64IZBS-NEXT:    addiw a0, a0, -3
+; RV64IZBS-NEXT:    slli a0, a0, 12
+; RV64IZBS-NEXT:    addi a0, a0, 1
+; RV64IZBS-NEXT:    ret
+  ret i64 12884889601 ; 0x0000_0002_ffff_d001
+}
+
+define i64 @imm_neg_3435982847() {
+; RV32I-LABEL: imm_neg_3435982847:
+; RV32I:       # %bb.0:
+; RV32I-NEXT:    lui a0, 209713
+; RV32I-NEXT:    addi a0, a0, 1
+; RV32I-NEXT:    addi a1, zero, -1
+; RV32I-NEXT:    ret
+;
+; RV64I-LABEL: imm_neg_3435982847:
+; RV64I:       # %bb.0:
+; RV64I-NEXT:    lui a0, 1048371
+; RV64I-NEXT:    addiw a0, a0, 817
+; RV64I-NEXT:    slli a0, a0, 12
+; RV64I-NEXT:    addi a0, a0, 1
+; RV64I-NEXT:    ret
+;
+; RV64IZBA-LABEL: imm_neg_3435982847:
+; RV64IZBA:       # %bb.0:
+; RV64IZBA-NEXT:    lui a0, 1048371
+; RV64IZBA-NEXT:    addiw a0, a0, 817
+; RV64IZBA-NEXT:    slli a0, a0, 12
+; RV64IZBA-NEXT:    addi a0, a0, 1
+; RV64IZBA-NEXT:    ret
+;
+; RV64IZBS-LABEL: imm_neg_3435982847:
+; RV64IZBS:       # %bb.0:
+; RV64IZBS-NEXT:    lui a0, 734001
+; RV64IZBS-NEXT:    addiw a0, a0, 1
+; RV64IZBS-NEXT:    bclri a0, a0, 31
+; RV64IZBS-NEXT:    ret
+  ret i64 -3435982847 ; 0xffff_ffff_3333_1001
+}
+
+define i64 @imm_neg_5726842879() {
+; RV32I-LABEL: imm_neg_5726842879:
+; RV32I:       # %bb.0:
+; RV32I-NEXT:    lui a0, 698997
+; RV32I-NEXT:    addi a0, a0, 1
+; RV32I-NEXT:    addi a1, zero, -2
+; RV32I-NEXT:    ret
+;
+; RV64I-LABEL: imm_neg_5726842879:
+; RV64I:       # %bb.0:
+; RV64I-NEXT:    lui a0, 1048235
+; RV64I-NEXT:    addiw a0, a0, -1419
+; RV64I-NEXT:    slli a0, a0, 12
+; RV64I-NEXT:    addi a0, a0, 1
+; RV64I-NEXT:    ret
+;
+; RV64IZBA-LABEL: imm_neg_5726842879:
+; RV64IZBA:       # %bb.0:
+; RV64IZBA-NEXT:    lui a0, 1048235
+; RV64IZBA-NEXT:    addiw a0, a0, -1419
+; RV64IZBA-NEXT:    slli a0, a0, 12
+; RV64IZBA-NEXT:    addi a0, a0, 1
+; RV64IZBA-NEXT:    ret
+;
+; RV64IZBS-LABEL: imm_neg_5726842879:
+; RV64IZBS:       # %bb.0:
+; RV64IZBS-NEXT:    lui a0, 698997
+; RV64IZBS-NEXT:    addiw a0, a0, 1
+; RV64IZBS-NEXT:    bclri a0, a0, 32
+; RV64IZBS-NEXT:    ret
+  ret i64 -5726842879 ; 0xffff_fffe_aaa7_5001
+}
+
+define i64 @imm_neg_10307948543() {
+; RV32I-LABEL: imm_neg_10307948543:
+; RV32I:       # %bb.0:
+; RV32I-NEXT:    lui a0, 629139
+; RV32I-NEXT:    addi a0, a0, 1
+; RV32I-NEXT:    addi a1, zero, -3
+; RV32I-NEXT:    ret
+;
+; RV64I-LABEL: imm_neg_10307948543:
+; RV64I:       # %bb.0:
+; RV64I-NEXT:    lui a0, 1047962
+; RV64I-NEXT:    addiw a0, a0, -1645
+; RV64I-NEXT:    slli a0, a0, 12
+; RV64I-NEXT:    addi a0, a0, 1
+; RV64I-NEXT:    ret
+;
+; RV64IZBA-LABEL: imm_neg_10307948543:
+; RV64IZBA:       # %bb.0:
+; RV64IZBA-NEXT:    lui a0, 1047962
+; RV64IZBA-NEXT:    addiw a0, a0, -1645
+; RV64IZBA-NEXT:    slli a0, a0, 12
+; RV64IZBA-NEXT:    addi a0, a0, 1
+; RV64IZBA-NEXT:    ret
+;
+; RV64IZBS-LABEL: imm_neg_10307948543:
+; RV64IZBS:       # %bb.0:
+; RV64IZBS-NEXT:    lui a0, 629139
+; RV64IZBS-NEXT:    addiw a0, a0, 1
+; RV64IZBS-NEXT:    bclri a0, a0, 33
+; RV64IZBS-NEXT:    ret
+  ret i64 -10307948543 ; 0xffff_fffd_9999_3001
+}

diff  --git a/llvm/test/MC/RISCV/rv64zba-aliases-valid.s b/llvm/test/MC/RISCV/rv64zba-aliases-valid.s
index 460db0ffe0bb1..2a341cf8b8b87 100644
--- a/llvm/test/MC/RISCV/rv64zba-aliases-valid.s
+++ b/llvm/test/MC/RISCV/rv64zba-aliases-valid.s
@@ -116,3 +116,53 @@ li x6, 12900925247761
 # CHECK-S-OBJ-NEXT: slli.uw t1, t1, 12
 # CHECK-S-OBJ-NEXT: addi t1, t1, -1366
 li x6, 12900918536874
+
+# CHECK-S-OBJ-NOALIAS: lui t1, 427
+# CHECK-S-OBJ-NOALIAS-NEXT: addiw t1, t1, -1367
+# CHECK-S-OBJ-NOALIAS-NEXT: slli t1, t1, 12
+# CHECK-S-OBJ-NOALIAS-NEXT: addi t1, t1, 1
+# CHECK-S-OBJ: lui t1, 427
+# CHECK-S-OBJ-NEXT: addiw t1, t1, -1367
+# CHECK-S-OBJ-NEXT: slli t1, t1, 12
+# CHECK-S-OBJ-NEXT: addi t1, t1, 1
+li x6, 7158272001 # 0x0000_0001_aaaa_9001
+
+# CHECK-S-OBJ-NOALIAS: lui t1, 768
+# CHECK-S-OBJ-NOALIAS-NEXT: addiw t1, t1, -3
+# CHECK-S-OBJ-NOALIAS-NEXT: slli t1, t1, 12
+# CHECK-S-OBJ-NOALIAS-NEXT: addi t1, t1, 1
+# CHECK-S-OBJ: lui t1, 768
+# CHECK-S-OBJ-NEXT: addiw t1, t1, -3
+# CHECK-S-OBJ-NEXT: slli t1, t1, 12
+# CHECK-S-OBJ-NEXT: addi t1, t1, 1
+li x6, 12884889601 # 0x0000_0002_ffff_d001
+
+# CHECK-S-OBJ-NOALIAS: lui t1, 1048371
+# CHECK-S-OBJ-NOALIAS-NEXT: addiw t1, t1, 817
+# CHECK-S-OBJ-NOALIAS-NEXT: slli t1, t1, 12
+# CHECK-S-OBJ-NOALIAS-NEXT: addi t1, t1, 1
+# CHECK-S-OBJ: lui t1, 1048371
+# CHECK-S-OBJ-NEXT: addiw t1, t1, 817
+# CHECK-S-OBJ-NEXT: slli t1, t1, 12
+# CHECK-S-OBJ-NEXT: addi t1, t1, 1
+li x6, -3435982847 # 0xffff_ffff_3333_1001
+
+# CHECK-S-OBJ-NOALIAS: lui t1, 1048235
+# CHECK-S-OBJ-NOALIAS-NEXT: addiw t1, t1, -1419
+# CHECK-S-OBJ-NOALIAS-NEXT: slli t1, t1, 12
+# CHECK-S-OBJ-NOALIAS-NEXT: addi t1, t1, 1
+# CHECK-S-OBJ: lui t1, 1048235
+# CHECK-S-OBJ-NEXT: addiw t1, t1, -1419
+# CHECK-S-OBJ-NEXT: slli t1, t1, 12
+# CHECK-S-OBJ-NEXT: addi t1, t1, 1
+li x6, -5726842879 # 0xffff_fffe_aaa7_5001
+
+# CHECK-S-OBJ-NOALIAS: lui t1, 1047962
+# CHECK-S-OBJ-NOALIAS-NEXT: addiw t1, t1, -1645
+# CHECK-S-OBJ-NOALIAS-NEXT: slli t1, t1, 12
+# CHECK-S-OBJ-NOALIAS-NEXT: addi t1, t1, 1
+# CHECK-S-OBJ: lui t1, 1047962
+# CHECK-S-OBJ-NEXT: addiw t1, t1, -1645
+# CHECK-S-OBJ-NEXT: slli t1, t1, 12
+# CHECK-S-OBJ-NEXT: addi t1, t1, 1
+li x6, -10307948543 # 0xffff_fffd_9999_3001


        


More information about the llvm-commits mailing list