From 025aa5ac4cc2274e887f04c98666529f3951bf96 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Thu, 2 Oct 2025 12:05:07 -0700 Subject: [PATCH] [RISCV][GISel] Share an atomic load isel pattern GISel RV64 and SDAG RV32. NFC Use stricter type for RV64 only patterns. Stores are different because atomic_store doesn't differentiate truncating and non-truncating stores. --- llvm/lib/Target/RISCV/RISCVGISel.td | 2 +- llvm/lib/Target/RISCV/RISCVInstrInfoA.td | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/llvm/lib/Target/RISCV/RISCVGISel.td b/llvm/lib/Target/RISCV/RISCVGISel.td index 19d5aff023d53..af1ceb6bcda4e 100644 --- a/llvm/lib/Target/RISCV/RISCVGISel.td +++ b/llvm/lib/Target/RISCV/RISCVGISel.td @@ -118,7 +118,7 @@ let Predicates = [HasAtomicLdSt] in { } let Predicates = [HasAtomicLdSt, IsRV64] in { - def : LdPat; + // Load pattern is in RISCVInstrInfoA.td and shared with RV32. def : StPat; } diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoA.td b/llvm/lib/Target/RISCV/RISCVInstrInfoA.td index 99992d196b43d..25accd93eaa03 100644 --- a/llvm/lib/Target/RISCV/RISCVInstrInfoA.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoA.td @@ -174,15 +174,14 @@ let Predicates = [HasAtomicLdSt] in { def : StPat, SB, GPR, XLenVT>; def : StPat, SH, GPR, XLenVT>; def : StPat, SW, GPR, XLenVT>; -} -let Predicates = [HasAtomicLdSt, IsRV32] in { - def : LdPat, LW>; + // Used by GISel for RV32 and RV64. + def : LdPat, LW, i32>; } let Predicates = [HasAtomicLdSt, IsRV64] in { - def : LdPat, LW>; - def : LdPat, LWU>; + def : LdPat, LW, i64>; + def : LdPat, LWU, i64>; def : LdPat, LD, i64>; def : StPat, SD, GPR, i64>; }