Re: Delay slot in PowerISA?

Trupti <[email protected]> Wed, 14 Jan 2026 12:27:41 +0530
Newsgroups gmane.linux.debian.ports.powerpc
Message-ID <[email protected]>
On 2026-01-14 04:26, Felix Lechner wrote:
> Hi,
> 
> When I searched for "powerpc64 delay slot" today, the SearchAssist
> bubble on DuckDuckGo called delay slots are a "feature" on PowerPC.  
> The
> full text is at the bottom of this message.
> 
> However, both references in the text state the opposite, namely:
> 
>    "Some RISCs like PowerPC and ARM do not have a delay slot" [1]
> 
> and
> 
>    "MC88000 [...] and SPARC are RISC architectures that each have a
>    single branch delay slot; PowerPC, ARM, Alpha, V850, and RISC-V do
>    not have any." [2]
> 
> Personally, I remain uncertain because sample code in a presentation
> from 2014 has 'nop' instructions after the 'bl' instructions. [3] Does
> the PowerPC architecture have delay slots, please?
> 
> Please copy me on your reply.  I do not subscribe to this list.  
> Thanks!
> 
> Kind regards,
> Felix
> 
> [1] https://www.pagetable.com/?p=313
> [2] https://en.wikipedia.org/wiki/Delay_slot
> [3] pp.30ff,
> https://llvm.org/devmtg/2014-04/PDFs/Talks/Euro-LLVM-2014-Weigand.pdf
> 
> * * *
> 
> A delay slot in PowerPC64 architecture refers to the instruction that
> follows a branch instruction, which is executed regardless of whether
> the branch is taken. This feature helps manage the pipeline in the CPU,
> allowing for more efficient instruction processing.
> 
> Overview of Delay Slots in PowerPC64
> 
> Delay slots are a feature in certain RISC architectures, including
> PowerPC, that help manage instruction execution during branching. They
> allow the CPU to continue executing instructions while waiting for the
> outcome of a branch decision.
> 
> Functionality of Delay Slots
> 
> Purpose
> 
>     Delay slots are used to fill the gap created by branch 
> instructions,
>     which can cause a pipeline stall.  The instruction immediately
>     following a branch instruction is executed regardless of whether 
> the
>     branch is taken.
> 
> Implementation
> 
>     In PowerPC architectures, delay slots can be optional. Programmers
>     can choose to fill these slots with useful instructions or leave
>     them as no-operations (NOPs).  The behavior of delay slots can vary
>     based on the specific PowerPC implementation.
> 
> Examples of Delay Slot Usage
> 
> Independent Instructions
> 
>     If the instruction in the delay slot does not depend on the branch,
>     it can be executed without issues. For example, loading a value 
> from
>     memory that is not affected by the branch condition.
> 
> Dependent Instructions
> 
>     If the instruction modifies a register that the branch depends on,
>     it can lead to undefined behavior. For instance, if a branch
>     instruction relies on a register that is altered in the delay slot,
>     the outcome may not be as expected.
> 
> Conclusion
> 
> Delay slots in PowerPC64 are a mechanism to optimize instruction flow
> during branching. They can be filled with useful instructions or left 
> as
> NOPs, depending on the programmer's needs and the specific
> architecture's capabilities. Understanding how to effectively use delay
> slots can enhance performance in PowerPC applications.
> 
> Sources:
> 
>    https://www.pagetable.com/?p=313
>    https://en.wikipedia.org/wiki/Delay_slot


Hello Felix,

I will review the shared resources and also check with the relevant 
internal teams to confirm this. Since there seems to be some conflicting 
information from external sources, I want to make sure we have an 
accurate and well-referenced answer.

I will get back to you once I have confirmation.

Thanks,
Trupti