Lines Matching full:loongarch

16 #include "LoongArch.h"
27 "LoongArch atomic pseudo instruction expansion pass"
91 case LoongArch::PseudoMaskedAtomicSwap32: in expandMI()
94 case LoongArch::PseudoAtomicSwap32: in expandMI()
97 case LoongArch::PseudoMaskedAtomicLoadAdd32: in expandMI()
99 case LoongArch::PseudoMaskedAtomicLoadSub32: in expandMI()
101 case LoongArch::PseudoAtomicLoadNand32: in expandMI()
104 case LoongArch::PseudoAtomicLoadNand64: in expandMI()
107 case LoongArch::PseudoMaskedAtomicLoadNand32: in expandMI()
110 case LoongArch::PseudoAtomicLoadAdd32: in expandMI()
113 case LoongArch::PseudoAtomicLoadSub32: in expandMI()
116 case LoongArch::PseudoAtomicLoadAnd32: in expandMI()
119 case LoongArch::PseudoAtomicLoadOr32: in expandMI()
121 case LoongArch::PseudoAtomicLoadXor32: in expandMI()
124 case LoongArch::PseudoMaskedAtomicLoadUMax32: in expandMI()
127 case LoongArch::PseudoMaskedAtomicLoadUMin32: in expandMI()
130 case LoongArch::PseudoCmpXchg32: in expandMI()
132 case LoongArch::PseudoCmpXchg64: in expandMI()
134 case LoongArch::PseudoMaskedCmpXchg32: in expandMI()
136 case LoongArch::PseudoMaskedAtomicLoadMax32: in expandMI()
139 case LoongArch::PseudoMaskedAtomicLoadMin32: in expandMI()
163 TII->get(Width == 32 ? LoongArch::LL_W : LoongArch::LL_D), DestReg) in doAtomicBinOpExpansion()
170 BuildMI(LoopMBB, DL, TII->get(LoongArch::OR), ScratchReg) in doAtomicBinOpExpansion()
172 .addReg(LoongArch::R0); in doAtomicBinOpExpansion()
175 BuildMI(LoopMBB, DL, TII->get(LoongArch::AND), ScratchReg) in doAtomicBinOpExpansion()
178 BuildMI(LoopMBB, DL, TII->get(LoongArch::NOR), ScratchReg) in doAtomicBinOpExpansion()
180 .addReg(LoongArch::R0); in doAtomicBinOpExpansion()
183 BuildMI(LoopMBB, DL, TII->get(LoongArch::ADD_W), ScratchReg) in doAtomicBinOpExpansion()
188 BuildMI(LoopMBB, DL, TII->get(LoongArch::SUB_W), ScratchReg) in doAtomicBinOpExpansion()
193 BuildMI(LoopMBB, DL, TII->get(LoongArch::AND), ScratchReg) in doAtomicBinOpExpansion()
198 BuildMI(LoopMBB, DL, TII->get(LoongArch::OR), ScratchReg) in doAtomicBinOpExpansion()
203 BuildMI(LoopMBB, DL, TII->get(LoongArch::XOR), ScratchReg) in doAtomicBinOpExpansion()
209 TII->get(Width == 32 ? LoongArch::SC_W : LoongArch::SC_D), ScratchReg) in doAtomicBinOpExpansion()
213 BuildMI(LoopMBB, DL, TII->get(LoongArch::BEQZ)) in doAtomicBinOpExpansion()
227 BuildMI(MBB, DL, TII->get(LoongArch::XOR), ScratchReg) in insertMaskedMerge()
230 BuildMI(MBB, DL, TII->get(LoongArch::AND), ScratchReg) in insertMaskedMerge()
233 BuildMI(MBB, DL, TII->get(LoongArch::XOR), DestReg) in insertMaskedMerge()
257 BuildMI(LoopMBB, DL, TII->get(LoongArch::LL_W), DestReg) in doMaskedAtomicBinOpExpansion()
264 BuildMI(LoopMBB, DL, TII->get(LoongArch::ADDI_W), ScratchReg) in doMaskedAtomicBinOpExpansion()
269 BuildMI(LoopMBB, DL, TII->get(LoongArch::ADD_W), ScratchReg) in doMaskedAtomicBinOpExpansion()
274 BuildMI(LoopMBB, DL, TII->get(LoongArch::SUB_W), ScratchReg) in doMaskedAtomicBinOpExpansion()
279 BuildMI(LoopMBB, DL, TII->get(LoongArch::AND), ScratchReg) in doMaskedAtomicBinOpExpansion()
282 BuildMI(LoopMBB, DL, TII->get(LoongArch::NOR), ScratchReg) in doMaskedAtomicBinOpExpansion()
284 .addReg(LoongArch::R0); in doMaskedAtomicBinOpExpansion()
291 BuildMI(LoopMBB, DL, TII->get(LoongArch::SC_W), ScratchReg) in doMaskedAtomicBinOpExpansion()
295 BuildMI(LoopMBB, DL, TII->get(LoongArch::BEQZ)) in doMaskedAtomicBinOpExpansion()
341 BuildMI(MBB, DL, TII->get(LoongArch::SLL_W), ValReg) in insertSext()
344 BuildMI(MBB, DL, TII->get(LoongArch::SRA_W), ValReg) in insertSext()
393 BuildMI(LoopHeadMBB, DL, TII->get(LoongArch::LL_W), DestReg) in expandAtomicMinMaxOp()
396 BuildMI(LoopHeadMBB, DL, TII->get(LoongArch::AND), Scratch2Reg) in expandAtomicMinMaxOp()
399 BuildMI(LoopHeadMBB, DL, TII->get(LoongArch::OR), Scratch1Reg) in expandAtomicMinMaxOp()
401 .addReg(LoongArch::R0); in expandAtomicMinMaxOp()
408 BuildMI(LoopHeadMBB, DL, TII->get(LoongArch::BGEU)) in expandAtomicMinMaxOp()
415 BuildMI(LoopHeadMBB, DL, TII->get(LoongArch::BGEU)) in expandAtomicMinMaxOp()
423 BuildMI(LoopHeadMBB, DL, TII->get(LoongArch::BGE)) in expandAtomicMinMaxOp()
431 BuildMI(LoopHeadMBB, DL, TII->get(LoongArch::BGE)) in expandAtomicMinMaxOp()
449 BuildMI(LoopTailMBB, DL, TII->get(LoongArch::SC_W), Scratch1Reg) in expandAtomicMinMaxOp()
453 BuildMI(LoopTailMBB, DL, TII->get(LoongArch::BEQZ)) in expandAtomicMinMaxOp()
507 TII->get(Width == 32 ? LoongArch::LL_W : LoongArch::LL_D), DestReg) in expandAtomicCmpXchg()
510 BuildMI(LoopHeadMBB, DL, TII->get(LoongArch::BNE)) in expandAtomicCmpXchg()
519 BuildMI(LoopTailMBB, DL, TII->get(LoongArch::OR), ScratchReg) in expandAtomicCmpXchg()
521 .addReg(LoongArch::R0); in expandAtomicCmpXchg()
523 TII->get(Width == 32 ? LoongArch::SC_W : LoongArch::SC_D), in expandAtomicCmpXchg()
528 BuildMI(LoopTailMBB, DL, TII->get(LoongArch::BEQZ)) in expandAtomicCmpXchg()
531 BuildMI(LoopTailMBB, DL, TII->get(LoongArch::B)).addMBB(DoneMBB); in expandAtomicCmpXchg()
539 TII->get(Width == 32 ? LoongArch::LL_W : LoongArch::LL_D), DestReg) in expandAtomicCmpXchg()
542 BuildMI(LoopHeadMBB, DL, TII->get(LoongArch::AND), ScratchReg) in expandAtomicCmpXchg()
545 BuildMI(LoopHeadMBB, DL, TII->get(LoongArch::BNE)) in expandAtomicCmpXchg()
556 BuildMI(LoopTailMBB, DL, TII->get(LoongArch::ANDN), ScratchReg) in expandAtomicCmpXchg()
559 BuildMI(LoopTailMBB, DL, TII->get(LoongArch::OR), ScratchReg) in expandAtomicCmpXchg()
563 TII->get(Width == 32 ? LoongArch::SC_W : LoongArch::SC_D), in expandAtomicCmpXchg()
568 BuildMI(LoopTailMBB, DL, TII->get(LoongArch::BEQZ)) in expandAtomicCmpXchg()
571 BuildMI(LoopTailMBB, DL, TII->get(LoongArch::B)).addMBB(DoneMBB); in expandAtomicCmpXchg()
591 BuildMI(TailMBB, DL, TII->get(LoongArch::DBAR)).addImm(hint); in expandAtomicCmpXchg()
607 INITIALIZE_PASS(LoongArchExpandAtomicPseudo, "loongarch-expand-atomic-pseudo",