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