[llvm] [SPARC][IAS] Implement Solaris Natural Instruction extension (PR #170794)
via llvm-commits
llvm-commits at lists.llvm.org
Sat Jan 3 05:45:48 PST 2026
================
@@ -101,114 +101,168 @@ multiclass int_cond_alias<string cond, int condVal> {
// b<cond> %icc, $imm
def : InstAlias<!strconcat(!strconcat("b", cond), " %icc, $imm"),
(BPICC brtarget:$imm, condVal)>, Requires<[HasV9]>;
+ def : InstAlias<!strconcat(!strconcat("b", cond), " %ncc, $imm"),
+ (BPICC brtarget:$imm, condVal)>, Requires<[HasV9, Is32Bit]>;
// b<cond>,pt %icc, $imm
def : InstAlias<!strconcat(!strconcat("b", cond), ",pt %icc, $imm"),
(BPICC brtarget:$imm, condVal)>, Requires<[HasV9]>;
+ def : InstAlias<!strconcat(!strconcat("b", cond), ",pt %ncc, $imm"),
+ (BPICC brtarget:$imm, condVal)>, Requires<[HasV9, Is32Bit]>;
// b<cond>,a %icc, $imm
def : InstAlias<!strconcat(!strconcat("b", cond), ",a %icc, $imm"),
(BPICCA brtarget:$imm, condVal)>, Requires<[HasV9]>;
+ def : InstAlias<!strconcat(!strconcat("b", cond), ",a %ncc, $imm"),
+ (BPICCA brtarget:$imm, condVal)>, Requires<[HasV9, Is32Bit]>;
// b<cond>,a,pt %icc, $imm
def : InstAlias<!strconcat(!strconcat("b", cond), ",a,pt %icc, $imm"),
(BPICCA brtarget:$imm, condVal)>, Requires<[HasV9]>;
+ def : InstAlias<!strconcat(!strconcat("b", cond), ",a,pt %ncc, $imm"),
+ (BPICCA brtarget:$imm, condVal)>, Requires<[HasV9, Is32Bit]>;
// b<cond>,pn %icc, $imm
def : InstAlias<!strconcat(!strconcat("b", cond), ",pn %icc, $imm"),
(BPICCNT brtarget:$imm, condVal)>, Requires<[HasV9]>;
+ def : InstAlias<!strconcat(!strconcat("b", cond), ",pn %ncc, $imm"),
+ (BPICCNT brtarget:$imm, condVal)>, Requires<[HasV9, Is32Bit]>;
// b<cond>,a,pn %icc, $imm
def : InstAlias<!strconcat(!strconcat("b", cond), ",a,pn %icc, $imm"),
(BPICCANT brtarget:$imm, condVal)>, Requires<[HasV9]>;
+ def : InstAlias<!strconcat(!strconcat("b", cond), ",a,pn %ncc, $imm"),
+ (BPICCANT brtarget:$imm, condVal)>, Requires<[HasV9, Is32Bit]>;
// b<cond> %xcc, $imm
def : InstAlias<!strconcat(!strconcat("b", cond), " %xcc, $imm"),
(BPXCC brtarget:$imm, condVal)>, Requires<[Is64Bit]>;
+ def : InstAlias<!strconcat(!strconcat("b", cond), " %ncc, $imm"),
+ (BPXCC brtarget:$imm, condVal)>, Requires<[Is64Bit]>;
// b<cond>,pt %xcc, $imm
def : InstAlias<!strconcat(!strconcat("b", cond), ",pt %xcc, $imm"),
(BPXCC brtarget:$imm, condVal)>, Requires<[Is64Bit]>;
+ def : InstAlias<!strconcat(!strconcat("b", cond), ",pt %ncc, $imm"),
+ (BPXCC brtarget:$imm, condVal)>, Requires<[Is64Bit]>;
// b<cond>,a %xcc, $imm
def : InstAlias<!strconcat(!strconcat("b", cond), ",a %xcc, $imm"),
(BPXCCA brtarget:$imm, condVal)>, Requires<[Is64Bit]>;
+ def : InstAlias<!strconcat(!strconcat("b", cond), ",a %ncc, $imm"),
+ (BPXCCA brtarget:$imm, condVal)>, Requires<[Is64Bit]>;
// b<cond>,a,pt %xcc, $imm
def : InstAlias<!strconcat(!strconcat("b", cond), ",a,pt %xcc, $imm"),
(BPXCCA brtarget:$imm, condVal)>, Requires<[Is64Bit]>;
+ def : InstAlias<!strconcat(!strconcat("b", cond), ",a,pt %ncc, $imm"),
+ (BPXCCA brtarget:$imm, condVal)>, Requires<[Is64Bit]>;
// b<cond>,pn %xcc, $imm
def : InstAlias<!strconcat(!strconcat("b", cond), ",pn %xcc, $imm"),
(BPXCCNT brtarget:$imm, condVal)>, Requires<[Is64Bit]>;
+ def : InstAlias<!strconcat(!strconcat("b", cond), ",pn %ncc, $imm"),
+ (BPXCCNT brtarget:$imm, condVal)>, Requires<[Is64Bit]>;
// b<cond>,a,pn %xcc, $imm
def : InstAlias<!strconcat(!strconcat("b", cond), ",a,pn %xcc, $imm"),
(BPXCCANT brtarget:$imm, condVal)>, Requires<[Is64Bit]>;
-
+ def : InstAlias<!strconcat(!strconcat("b", cond), ",a,pn %ncc, $imm"),
+ (BPXCCANT brtarget:$imm, condVal)>, Requires<[Is64Bit]>;
defm : intcond_mov_alias<cond, condVal, " %icc",
MOVICCrr, MOVICCri,
FMOVS_ICC, FMOVD_ICC>, Requires<[HasV9]>;
+ defm : intcond_mov_alias<cond, condVal, " %ncc",
+ MOVICCrr, MOVICCri,
+ FMOVS_ICC, FMOVD_ICC>, Requires<[Is32Bit, HasV9]>;
+
defm : intcond_mov_alias<cond, condVal, " %xcc",
MOVXCCrr, MOVXCCri,
FMOVS_XCC, FMOVD_XCC>, Requires<[Is64Bit]>;
+ defm : intcond_mov_alias<cond, condVal, " %ncc",
+ MOVXCCrr, MOVXCCri,
+ FMOVS_XCC, FMOVD_XCC>, Requires<[Is64Bit]>;
+
// fmovq<cond> (%icc|%xcc), $rs2, $rd
def : InstAlias<!strconcat(!strconcat("fmovq", cond), " %icc, $rs2, $rd"),
(FMOVQ_ICC QFPRegs:$rd, QFPRegs:$rs2, condVal)>,
Requires<[HasV9, HasHardQuad]>;
+ def : InstAlias<!strconcat(!strconcat("fmovq", cond), " %ncc, $rs2, $rd"),
----------------
koachan wrote:
My bad, I forgot about it. Added fmovq test too.
https://github.com/llvm/llvm-project/pull/170794
More information about the llvm-commits
mailing list