Skip to content

Commit

Permalink
Merge pull request #7 from jdmitrovic-syrmia/moptions
Browse files Browse the repository at this point in the history
Added -mload-store-bonding and turned load-store-pairs off by default
  • Loading branch information
djtodoro authored Aug 4, 2023
2 parents 449ad67 + c616964 commit d7d9c7a
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 8 deletions.
2 changes: 2 additions & 0 deletions clang/include/clang/Driver/Options.td
Original file line number Diff line number Diff line change
Expand Up @@ -3308,6 +3308,8 @@ def mno_save_restore : Flag<["-"], "mno-save-restore">, Group<m_riscv_Features_G
HelpText<"Disable using library calls for save and restore">;
def mload_store_pairs : Flag<["-"], "mload-store-pairs">, Group<m_riscv_Features_Group>;
def mno_load_store_pairs : Flag<["-"], "mno-load-store-pairs">, Group<m_riscv_Features_Group>;
def mload_store_bonding : Flag<["-"], "mload-store-bonding">, Group<m_riscv_Features_Group>;
def mno_load_store_bonding : Flag<["-"], "mno-load-store-bonding">, Group<m_riscv_Features_Group>;
def mccmov : Flag<["-"], "mccmov">, Group<m_riscv_Features_Group>;
def mno_ccmov : Flag<["-"], "mno-ccmov">, Group<m_riscv_Features_Group>;
def mext : Flag<["-"], "mext">, Group<m_riscv_Features_Group>;
Expand Down
16 changes: 14 additions & 2 deletions clang/lib/Driver/ToolChains/Clang.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2158,14 +2158,26 @@ void Clang::AddRISCVTargetArgs(const ArgList &Args,
}

if (Arg *A = Args.getLastArg(options::OPT_mload_store_pairs,
options::OPT_mno_load_store_pairs)) {
if (A->getOption().matches(options::OPT_mno_load_store_pairs)) {
options::OPT_mno_load_store_pairs,
options::OPT_mload_store_bonding,
options::OPT_mno_load_store_bonding)) {
if (A->getOption().matches(options::OPT_mload_store_pairs) ||
A->getOption().matches(options::OPT_mload_store_bonding)) {
CmdArgs.push_back("-mllvm");
CmdArgs.push_back("-riscv-load-store-pairs=1");
}
if (A->getOption().matches(options::OPT_mno_load_store_pairs) ||
A->getOption().matches(options::OPT_mno_load_store_bonding)) {
CmdArgs.push_back("-mllvm");
CmdArgs.push_back("-riscv-load-store-pairs=0");
}
}
if (Arg *A = Args.getLastArg(options::OPT_mccmov,
options::OPT_mno_ccmov)) {
if (A->getOption().matches(options::OPT_mccmov)) {
CmdArgs.push_back("-mllvm");
CmdArgs.push_back("-riscv-custom-cmov=1");
}
if (A->getOption().matches(options::OPT_mno_ccmov)) {
CmdArgs.push_back("-mllvm");
CmdArgs.push_back("-riscv-custom-cmov=0");
Expand Down
2 changes: 1 addition & 1 deletion llvm/lib/Target/RISCV/RISCVSubtarget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ static cl::opt<unsigned> RISCVMaxBuildIntsCost(
static cl::opt<bool> UseLoadStorePairsOpt(
"riscv-load-store-pairs",
cl::desc("RISCV: Optimize for load-store bonding"),
cl::init(true), cl::Hidden);
cl::init(false), cl::Hidden);

static cl::opt<bool> UseCustomCMovInsn(
"riscv-custom-cmov",
Expand Down
10 changes: 5 additions & 5 deletions llvm/test/CodeGen/RISCV/load-store-pair.ll
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@
; RUN: | FileCheck %s -check-prefix=RV64I
; RUN: llc -mtriple=riscv64 -target-abi lp64d -mattr=+d -verify-machineinstrs < %s \
; RUN: | FileCheck %s -check-prefix=RV64D
; RUN: llc -mtriple=riscv32 -mattr=+load-store-pairs -verify-machineinstrs < %s \
; RUN: llc -mtriple=riscv32 -mattr=+load-store-pairs -riscv-load-store-pairs=1 -verify-machineinstrs < %s \
; RUN: | FileCheck %s -check-prefix=RV32I_PAIR
; RUN: llc -mtriple=riscv32 -target-abi ilp32d -mattr=+d,+load-store-pairs -verify-machineinstrs < %s \
; RUN: llc -mtriple=riscv32 -target-abi ilp32d -mattr=+d,+load-store-pairs -riscv-load-store-pairs=1 -verify-machineinstrs < %s \
; RUN: | FileCheck %s -check-prefix=RV32D_PAIR
; RUN: llc -mtriple=riscv64 -mattr=+load-store-pairs -verify-machineinstrs < %s \
; RUN: llc -mtriple=riscv64 -mattr=+load-store-pairs -riscv-load-store-pairs=1 -verify-machineinstrs < %s \
; RUN: | FileCheck %s -check-prefix=RV64I_PAIR
; RUN: llc -mtriple=riscv64 -mcpu i8500 -mattr=+load-store-pairs -verify-machineinstrs < %s \
; RUN: llc -mtriple=riscv64 -mcpu i8500 -mattr=+load-store-pairs -riscv-load-store-pairs=1 -verify-machineinstrs < %s \
; RUN: | FileCheck %s -check-prefix=RV64I_8500
; RUN: llc -mtriple=riscv64 -target-abi lp64d -mattr=+d,+load-store-pairs -verify-machineinstrs < %s \
; RUN: llc -mtriple=riscv64 -target-abi lp64d -mattr=+d,+load-store-pairs -riscv-load-store-pairs=1 -verify-machineinstrs < %s \
; RUN: | FileCheck %s -check-prefix=RV64D_PAIR

define dso_local void @testi(i8** nocapture noundef readonly %a) local_unnamed_addr #0 {
Expand Down

0 comments on commit d7d9c7a

Please sign in to comment.