search for: tpush

Displaying 11 results from an estimated 11 matches for "tpush".

Did you mean: push
2019 Apr 14
3
[A bug?] Failed to use BuildMI to add R7 - R12 registers for tADDi8 and tPUSH of ARM
...4 rather than adds r8, 4. Similar problems happen to push and pop instructions. I can create a push/pop if the register list only contains registers R0 - R7, but for registers whose number are greater than R7, the generated asm code doesn’t have it. For example, BuildMI(……, TII->get(ARM::tPUSH), R8)….. would give me push {} Is this a bug in the LLVM ARM code generator? Or is there a reason why we cannot use big-number registers for add/sub and push/pop? Thanks, - Jie
2019 Apr 14
2
[A bug?] Failed to use BuildMI to add R7 - R12 registers for tADDi8 and tPUSH of ARM
...e mov instructions but not add/sub and push/pop confuses me. - Jie On Apr 14, 2019, at 14:55, Craig Topper <craig.topper at gmail.com<mailto:craig.topper at gmail.com>> wrote: I don't know much about ARM. But it looks like tADDi8 is a Thumb instruction and it can only use R0-R7. tPUSH probably as a similar issue. But it's also a store instruction and doesn't produce a register output. So you should use the form of BuildMI that doesn't take a register as its last argument. ~Craig On Sun, Apr 14, 2019 at 11:17 AM Jie Zhou via llvm-dev <llvm-dev at lists.llvm.org&...
2019 Apr 14
2
[A bug?] Failed to use BuildMI to add R7 - R12 registers for tADDi8 and tPUSH of ARM
...e mov instructions but not add/sub and push/pop confuses me. - Jie On Apr 14, 2019, at 14:55, Craig Topper <craig.topper at gmail.com<mailto:craig.topper at gmail.com>> wrote: I don't know much about ARM. But it looks like tADDi8 is a Thumb instruction and it can only use R0-R7. tPUSH probably as a similar issue. But it's also a store instruction and doesn't produce a register output. So you should use the form of BuildMI that doesn't take a register as its last argument. ~Craig On Sun, Apr 14, 2019 at 11:17 AM Jie Zhou via llvm-dev <llvm-dev at lists.llvm.org&...
2015 Jan 11
3
[LLVMdev] [RFC] [PATCH] add tail call optimization to thumb1-only targets
...InCSI) { + // We need to restore LR and need a scratch register for this purpose + int StackSlotForSavedLR = CSI.size() - 1; + assert (StackSlotForSavedLR >= 0 && "Wrong Stack slot for LR."); + + // Make sure that R4 may be used as scratch. Add an additional tPUSH (R4) + // if necessary. + if (!IsR4IncludedInCSI) { + IsR4ToBeAdditionallyAddedToPopIns = true; + + AddDefaultPred(BuildMI(MBB, MBBI, dl, TII.get(ARM::tPUSH)) + .addReg(ARM::R4,RegState::Kill)); + + StackSlotForSavedLR ++; + } + + AddDefaultPred(B...
2013 Sep 26
2
[LLVMdev] Register scavenger and SP/FP adjustments
...lign=4, at location [SP-1032] fi#1: size=1024, align=4, at location [SP-2056] fi#2: size=4, align=4, at location [SP-4] fi#3: size=4, align=4, at location [SP-8] Constant Pool: cp#0: -2048, align=4 cp#1: 2048, align=4 BB#0: derived from LLVM BB %entry Live Ins: %R4 %LR tPUSH pred:14, pred:%noreg, %R4<kill>, %LR<kill>, %SP<imp-def>, %SP<imp-use>; flags: FrameSetup %vreg0<def> = tLDRpci <cp#0>, pred:14, pred:%noreg; flags: FrameSetup tGPR:%vreg0 %SP<def,tied1> = tADDhirr %SP<tied0>, %vreg0<kill>, p...
2013 Sep 26
0
[LLVMdev] Register scavenger and SP/FP adjustments
...fi#1: size=1024, align=4, at location [SP-2056] > fi#2: size=4, align=4, at location [SP-4] > fi#3: size=4, align=4, at location [SP-8] > Constant Pool: > cp#0: -2048, align=4 > cp#1: 2048, align=4 > > BB#0: derived from LLVM BB %entry > Live Ins: %R4 %LR > tPUSH pred:14, pred:%noreg, %R4<kill>, %LR<kill>, %SP<imp-def>, %SP<imp-use>; flags: FrameSetup > %vreg0<def> = tLDRpci <cp#0>, pred:14, pred:%noreg; flags: FrameSetup tGPR:%vreg0 > %SP<def,tied1> = tADDhirr %SP<tied0>, %vreg0<kill&gt...
2004 Aug 06
2
[PATCH] Make SSE Run Time option. Add Win32 SSE code
...movss [edx], xmm3 + + pop edi + pop edx + pop ecx + pop ebx + pop eax + } +#endif +#if defined(GCC_COMPILER) && defined(_USE_SSE) + __asm__ __volatile__ ( + "\tpush %%eax\n" + "\tpush %%edi\n" + "\tpush %%ecx\n" + "\txorps %%xmm3, %%xmm3\n" + "\txorps %%xmm4, %%xmm4\n" + + "\tsub $20, %%ecx\n" + + ".mul20_loo...
2013 Sep 26
1
[LLVMdev] Register scavenger and SP/FP adjustments
...on [SP-2056] >> fi#2: size=4, align=4, at location [SP-4] >> fi#3: size=4, align=4, at location [SP-8] >> Constant Pool: >> cp#0: -2048, align=4 >> cp#1: 2048, align=4 >> >> BB#0: derived from LLVM BB %entry >> Live Ins: %R4 %LR >> tPUSH pred:14, pred:%noreg, %R4<kill>, %LR<kill>, %SP<imp-def>, >> %SP<imp-use>; flags: FrameSetup >> %vreg0<def> = tLDRpci <cp#0>, pred:14, pred:%noreg; flags: >> FrameSetup tGPR:%vreg0 >> %SP<def,tied1> = tADDhirr %SP<ti...
2014 Aug 20
2
[LLVMdev] ARMv4T Copy Lowering
...g) + || ! ARM::tGPRRegClass.contains(DestReg)) { + AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::tMOVr), DestReg) + .addReg(SrcReg, getKillRegState(KillSrc))); + } else { + // This is the only way we can move low -> low for < v6. + AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::tPUSH))) + .addReg(SrcReg, getKillRegState(KillSrc)); + AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::tPOP))) + .addReg(DestReg, getDefRegState(true)); + } } void Thumb1InstrInfo:: storeRegToStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator I, unsigne...
2013 Sep 26
0
[LLVMdev] Register scavenger and SP/FP adjustments
CallFrameSetupOpcode is a pseudo opcode like X86::ADJCALLSTACKDOWN64. That means when the code is expected to be called before the pseudo instructions are eliminated. I don't know why it's not the case for you. A quick look at PEI code indicates the pseudo's should not have been removed at the time when replaceFrameIndices are run. Evan On Sep 25, 2013, at 8:57 AM, Krzysztof
2013 Sep 25
2
[LLVMdev] Register scavenger and SP/FP adjustments
Hi All, I'm dealing with a problem where the spill/restore instructions inserted during scavenging span an adjustment of the SP/FP register. The result is that despite the base register (SP/FP) being changed between the spill and the restore, both store and load use the same immediate offset. I see code in the PEI (replaceFrameIndices) that is supposed to track the SP/FP adjustment: