[llvm] 405c31f - [RISCV][test] Add i64 materialization tests for BSETI
Piotr Fusik via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 2 09:49:59 PDT 2025
Author: Piotr Fusik
Date: 2025-06-02T18:49:35+02:00
New Revision: 405c31fbd16e9c8594a760fea339d83937712812
URL: https://github.com/llvm/llvm-project/commit/405c31fbd16e9c8594a760fea339d83937712812
DIFF: https://github.com/llvm/llvm-project/commit/405c31fbd16e9c8594a760fea339d83937712812.diff
LOG: [RISCV][test] Add i64 materialization tests for BSETI
Added:
Modified:
llvm/test/CodeGen/RISCV/imm.ll
llvm/test/CodeGen/RISCV/zbb-logic-neg-imm.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/RISCV/imm.ll b/llvm/test/CodeGen/RISCV/imm.ll
index f324a9bc120ef..fc3af22f082d7 100644
--- a/llvm/test/CodeGen/RISCV/imm.ll
+++ b/llvm/test/CodeGen/RISCV/imm.ll
@@ -4637,3 +4637,129 @@ define i64 @imm64_0xFF7FFFFF7FFFFFFE() {
; RV64-REMAT-NEXT: ret
ret i64 -36028799166447617 ; 0xFF7FFFFF7FFFFFFE
}
+
+define i64 @imm64_0xFFFFFFFF0() {
+; RV32I-LABEL: imm64_0xFFFFFFFF0:
+; RV32I: # %bb.0:
+; RV32I-NEXT: li a0, -16
+; RV32I-NEXT: li a1, 15
+; RV32I-NEXT: ret
+;
+; RV32IXQCILI-LABEL: imm64_0xFFFFFFFF0:
+; RV32IXQCILI: # %bb.0:
+; RV32IXQCILI-NEXT: li a0, -16
+; RV32IXQCILI-NEXT: li a1, 15
+; RV32IXQCILI-NEXT: ret
+;
+; RV64I-LABEL: imm64_0xFFFFFFFF0:
+; RV64I: # %bb.0:
+; RV64I-NEXT: li a0, 1
+; RV64I-NEXT: slli a0, a0, 36
+; RV64I-NEXT: addi a0, a0, -16
+; RV64I-NEXT: ret
+;
+; RV64IZBA-LABEL: imm64_0xFFFFFFFF0:
+; RV64IZBA: # %bb.0:
+; RV64IZBA-NEXT: li a0, 1
+; RV64IZBA-NEXT: slli a0, a0, 36
+; RV64IZBA-NEXT: addi a0, a0, -16
+; RV64IZBA-NEXT: ret
+;
+; RV64IZBB-LABEL: imm64_0xFFFFFFFF0:
+; RV64IZBB: # %bb.0:
+; RV64IZBB-NEXT: li a0, 1
+; RV64IZBB-NEXT: slli a0, a0, 36
+; RV64IZBB-NEXT: addi a0, a0, -16
+; RV64IZBB-NEXT: ret
+;
+; RV64IZBS-LABEL: imm64_0xFFFFFFFF0:
+; RV64IZBS: # %bb.0:
+; RV64IZBS-NEXT: li a0, 1
+; RV64IZBS-NEXT: slli a0, a0, 36
+; RV64IZBS-NEXT: addi a0, a0, -16
+; RV64IZBS-NEXT: ret
+;
+; RV64IXTHEADBB-LABEL: imm64_0xFFFFFFFF0:
+; RV64IXTHEADBB: # %bb.0:
+; RV64IXTHEADBB-NEXT: li a0, 1
+; RV64IXTHEADBB-NEXT: slli a0, a0, 36
+; RV64IXTHEADBB-NEXT: addi a0, a0, -16
+; RV64IXTHEADBB-NEXT: ret
+;
+; RV32-REMAT-LABEL: imm64_0xFFFFFFFF0:
+; RV32-REMAT: # %bb.0:
+; RV32-REMAT-NEXT: li a0, -16
+; RV32-REMAT-NEXT: li a1, 15
+; RV32-REMAT-NEXT: ret
+;
+; RV64-REMAT-LABEL: imm64_0xFFFFFFFF0:
+; RV64-REMAT: # %bb.0:
+; RV64-REMAT-NEXT: li a0, 1
+; RV64-REMAT-NEXT: slli a0, a0, 36
+; RV64-REMAT-NEXT: addi a0, a0, -16
+; RV64-REMAT-NEXT: ret
+ ret i64 68719476720 ; 0xFFFFFFFF0
+}
+
+define i64 @imm64_0x1FFFFFF08() {
+; RV32I-LABEL: imm64_0x1FFFFFF08:
+; RV32I: # %bb.0:
+; RV32I-NEXT: li a0, -248
+; RV32I-NEXT: li a1, 1
+; RV32I-NEXT: ret
+;
+; RV32IXQCILI-LABEL: imm64_0x1FFFFFF08:
+; RV32IXQCILI: # %bb.0:
+; RV32IXQCILI-NEXT: li a0, -248
+; RV32IXQCILI-NEXT: li a1, 1
+; RV32IXQCILI-NEXT: ret
+;
+; RV64I-LABEL: imm64_0x1FFFFFF08:
+; RV64I: # %bb.0:
+; RV64I-NEXT: li a0, 1
+; RV64I-NEXT: slli a0, a0, 33
+; RV64I-NEXT: addi a0, a0, -248
+; RV64I-NEXT: ret
+;
+; RV64IZBA-LABEL: imm64_0x1FFFFFF08:
+; RV64IZBA: # %bb.0:
+; RV64IZBA-NEXT: li a0, 1
+; RV64IZBA-NEXT: slli a0, a0, 33
+; RV64IZBA-NEXT: addi a0, a0, -248
+; RV64IZBA-NEXT: ret
+;
+; RV64IZBB-LABEL: imm64_0x1FFFFFF08:
+; RV64IZBB: # %bb.0:
+; RV64IZBB-NEXT: li a0, 1
+; RV64IZBB-NEXT: slli a0, a0, 33
+; RV64IZBB-NEXT: addi a0, a0, -248
+; RV64IZBB-NEXT: ret
+;
+; RV64IZBS-LABEL: imm64_0x1FFFFFF08:
+; RV64IZBS: # %bb.0:
+; RV64IZBS-NEXT: li a0, 1
+; RV64IZBS-NEXT: slli a0, a0, 33
+; RV64IZBS-NEXT: addi a0, a0, -248
+; RV64IZBS-NEXT: ret
+;
+; RV64IXTHEADBB-LABEL: imm64_0x1FFFFFF08:
+; RV64IXTHEADBB: # %bb.0:
+; RV64IXTHEADBB-NEXT: li a0, 1
+; RV64IXTHEADBB-NEXT: slli a0, a0, 33
+; RV64IXTHEADBB-NEXT: addi a0, a0, -248
+; RV64IXTHEADBB-NEXT: ret
+;
+; RV32-REMAT-LABEL: imm64_0x1FFFFFF08:
+; RV32-REMAT: # %bb.0:
+; RV32-REMAT-NEXT: li a0, -248
+; RV32-REMAT-NEXT: li a1, 1
+; RV32-REMAT-NEXT: ret
+;
+; RV64-REMAT-LABEL: imm64_0x1FFFFFF08:
+; RV64-REMAT: # %bb.0:
+; RV64-REMAT-NEXT: li a0, 1
+; RV64-REMAT-NEXT: slli a0, a0, 33
+; RV64-REMAT-NEXT: addi a0, a0, -248
+; RV64-REMAT-NEXT: ret
+ ret i64 8589934344 ; 0x1FFFFFF08
+}
diff --git a/llvm/test/CodeGen/RISCV/zbb-logic-neg-imm.ll b/llvm/test/CodeGen/RISCV/zbb-logic-neg-imm.ll
index 449e983fb6b52..0a7dd57d03969 100644
--- a/llvm/test/CodeGen/RISCV/zbb-logic-neg-imm.ll
+++ b/llvm/test/CodeGen/RISCV/zbb-logic-neg-imm.ll
@@ -385,3 +385,32 @@ define i64 @xornofff(i64 %x) {
%xor = xor i64 %x, -1152921504606846721
ret i64 %xor
}
+
+define i64 @and_or_or(i64 %x, i64 %y) {
+; RV32-LABEL: and_or_or:
+; RV32: # %bb.0:
+; RV32-NEXT: ori a1, a1, -2
+; RV32-NEXT: ori a0, a0, 1
+; RV32-NEXT: ori a3, a3, 1
+; RV32-NEXT: ori a2, a2, -2
+; RV32-NEXT: and a0, a0, a2
+; RV32-NEXT: and a1, a1, a3
+; RV32-NEXT: ret
+;
+; RV64-LABEL: and_or_or:
+; RV64: # %bb.0:
+; RV64-NEXT: li a2, -1
+; RV64-NEXT: slli a2, a2, 33
+; RV64-NEXT: addi a2, a2, 1
+; RV64-NEXT: or a0, a0, a2
+; RV64-NEXT: li a2, 1
+; RV64-NEXT: slli a2, a2, 33
+; RV64-NEXT: addi a2, a2, -2
+; RV64-NEXT: or a1, a1, a2
+; RV64-NEXT: and a0, a0, a1
+; RV64-NEXT: ret
+ %a = or i64 %x, -8589934591
+ %b = or i64 %y, 8589934590
+ %c = and i64 %a, %b
+ ret i64 %c
+}
More information about the llvm-commits
mailing list