[llvm] [Xtensa] Implement lowering SELECT_CC/BRCC for Xtensa FP Option. (PR #145544)
Andrei Safronov via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 27 07:01:26 PDT 2025
================
@@ -841,21 +847,94 @@ static unsigned getBranchOpcode(ISD::CondCode Cond) {
}
}
+static void GetFPBranchKind(ISD::CondCode Cond, unsigned &BrKind,
+ unsigned &CmpKind) {
+ switch (Cond) {
+ case ISD::SETUNE:
+ BrKind = Xtensa::BF;
+ CmpKind = Xtensa::OEQ_S;
+ break;
+ case ISD::SETUO:
+ BrKind = Xtensa::BT;
+ CmpKind = Xtensa::UN_S;
+ break;
+ case ISD::SETO:
+ BrKind = Xtensa::BF;
+ CmpKind = Xtensa::UN_S;
+ break;
+ case ISD::SETUEQ:
+ BrKind = Xtensa::BT;
+ CmpKind = Xtensa::UEQ_S;
+ break;
+ case ISD::SETULE:
+ BrKind = Xtensa::BT;
+ CmpKind = Xtensa::ULE_S;
+ break;
+ case ISD::SETULT:
+ BrKind = Xtensa::BT;
+ CmpKind = Xtensa::ULT_S;
+ break;
+ case ISD::SETEQ:
+ case ISD::SETOEQ:
+ BrKind = Xtensa::BT;
+ CmpKind = Xtensa::OEQ_S;
+ break;
+ case ISD::SETNE:
+ BrKind = Xtensa::BF;
+ CmpKind = Xtensa::OEQ_S;
+ break;
+ case ISD::SETLE:
+ case ISD::SETOLE:
+ BrKind = Xtensa::BT;
+ CmpKind = Xtensa::OLE_S;
+ break;
+ case ISD::SETLT:
+ case ISD::SETOLT:
+ BrKind = Xtensa::BT;
+ CmpKind = Xtensa::OLT_S;
+ break;
+ case ISD::SETGE:
+ BrKind = Xtensa::BF;
+ CmpKind = Xtensa::OLT_S;
+ break;
+ case ISD::SETGT:
+ BrKind = Xtensa::BF;
+ CmpKind = Xtensa::OLE_S;
+ break;
+ default:
+ llvm_unreachable("Invalid condition!");
+ break;
----------------
andreisfr wrote:
Thank you very much for comments. Fixed.
https://github.com/llvm/llvm-project/pull/145544
More information about the llvm-commits
mailing list