用于分支预测的扩展助记符

汇编程序源程序可以通过将分支预测后缀添加到指令的助记符来具有关于分支条件指令的信息。

如果已知给定 "分支条件" 指令的可能结果 (分支或掉线) ,那么程序员可以通过向指令的助记符添加分支预测后缀,将此信息包括在汇编程序源程序中。 汇编程序使用分支预测信息来确定机器指令中的位的值。 使用分支预测后缀可以提高分支条件指令的平均性能。

可以将以下后缀添加到任何 "分支条件" 助记符 (基本或扩展):

描述
+ 预测要采用的分支
- 预测不采用的分支 (通过)

分支预测后缀应紧跟在助记符的其余部分之后 (没有分隔符)。 应该在分支预测后缀和操作数之间使用分隔符 (空格或制表符)。

如果助记符中未包含任何分支预测后缀,那么汇编程序在构造机器指令时将使用以下缺省假设:

  • 对于具有负位移字段的相对或绝对分支 ( bc[l] [a]) ,预测将采用该分支。
  • 对于具有非负位移字段的相对或绝对分支 ( bc[l] [a]) ,预测不会采用分支 (通过预测)。
  • 对于到 LR 或 CTR (bclr[l]) 或 (bcctr[l]) 中的地址的分支,预测不会采用该分支 (通过预测)。

由分支预测后缀控制的机器指令部分是 BO 字段的 y 位。 y 位设置如下:

  • 不指定分支预测后缀,或者使用与缺省假设相同的后缀将导致 y 位设置为 0。
  • 指定与缺省假设相反的分支预测后缀会导致 y 位设置为 1。

以下示例说明了如何使用分支预测后缀:

  1. 分支 (如果 CR0 反映的条件小于)。 执行指令通常会导致分支。
    
    blt+  target
    
  2. 分支 (如果 CR0 反映的条件小于)。 目标地址在链接寄存器中。 执行该指令通常会导致进入下一个指令。
    
    bltlr-
    

以下是 AIX® 汇编程序支持的分支预测指令的列表:


       bc+             bc-             bca+            bca-
       bcctr+          bcctr-          bcctrl+         bcctrl-
       bcl+            bcl-            bcla+           bcla-
       bclr+           bclr-           bclrl+          bclrl-
       bdneq+          bdneq-          bdnge+          bdnge-
       bdngt+          bdngt-          bdnle+          bdnle-
       bdnlt+          bdnlt-          bdnne+          bdnne-
       bdnns+          bdnns-          bdnso+          bdnso-
       bdnz+           bdnz-           bdnza+          bdnza-
       bdnzf+          bdnzf-          bdnzfa+         bdnzfa-
       bdnzfl+         bdnzfl-         bdnzfla+        bdnzfla-
       bdnzflr+        bdnzflr-        bdnzflrl+       bdnzflrl-
       bdnzl+          bdnzl-          bdnzla+         bdnzla-
       bdnzlr+         bdnzlr-         bdnzlrl+        bdnzlrl-
       bdnzt+          bdnzt-          bdnzta+         bdnzta-
       bdnztl+         bdnztl-         bdnztla+        bdnztla-
       bdnztlr+        bdnztlr-        bdnztlrl+       bdnztlrl-
       bdz+            bdz-            bdza+           bdza-
       bdzeq+          bdzeq-          bdzf+           bdzf-
       bdzfa+          bdzfa-          bdzfl+          bdzfl-
       bdzfla+         bdzfla-         bdzflr+         bdzflr-
       bdzflrl+        bdzflrl-        bdzge+          bdzge-
       bdzgt+          bdzgt-          bdzl+           bdzl-
       bdzla+          bdzla-          bdzle+          bdzle-
       bdzlr+          bdzlr-          bdzlrl+         bdzlrl-
       bdzlt+          bdzlt-          bdzne+          bdzne-
       bdzns+          bdzns-          bdzso+          bdzso-
       bdzt+           bdzt-           bdzta+          bdzta-
       bdztl+          bdztl-          bdztla+         bdztla-
       bdztlr+         bdztlr-         bdztlrl+        bdztlrl-
       beq+            beq-            beqa+           beqa-
       beqctr+         beqctr-         beqctrl+        beqctrl-
       beql+           beql-           beqla+          beqla-
       beqlr+          beqlr-          beqlrl+         beqlrl-
       bf+             bf-             bfa+            bfa-
       bfctr+          bfctr-          bfctrl+         bfctrl-
       bfl+            bfl-            bfla+           bfla-
       bflr+           bflr-           bflrl+          bflrl-
       bge+            bge-            bgea+           bgea-
       bgectr+         bgectr-         bgectrl+        bgectrl-
       bgel+           bgel-           bgela+          bgela-
       bgelr+          bgelr-          bgelrl+         bgelrl-
       bgt+            bgt-            bgta+           bgta-
       bgtctr+         bgtctr-         bgtctrl+        bgtctrl-
       bgtl+           bgtl-           bgtla+          bgtla-
       bgtlr+          bgtlr-          bgtlrl+         bgtlrl-
       ble+            ble-            blea+           blea-
       blectr+         blectr-         blectrl+        blectrl-
       blel+           blel-           blela+          blela-
       blelr+          blelr-          blelrl+         blelrl-
       blt+            blt-            blta+           blta-
       bltctr+         bltctr-         bltctrl+        bltctrl-
       bltl+           bltl-           bltla+          bltla-
       bltlr+          bltlr-          bltlrl+         bltlrl-
       bne+            bne-            bnea+           bnea-
       bnectr+         bnectr-         bnectrl+        bnectrl-
       bnel+           bnel-           bnela+          bnela-
       bnelr+          bnelr-          bnelrl+         bnelrl-
       bng+            bng-            bnga+           bnga-
       bngctr+         bngctr-         bngctrl+        bngctrl-
       bngl+           bngl-           bngla+          bngla-
       bnglr+          bnglr-          bnglrl+         bnglrl-
       bnl+            bnl-            bnla+           bnla-
       bnlctr+         bnlctr-         bnlctrl+        bnlctrl-
       bnll+           bnll-           bnlla+          bnlla-
       bnllr+          bnllr-          bnllrl+         bnllrl-
       bns+            bns-            bnsa+           bnsa-
       bnsctr+         bnsctr-         bnsctrl+        bnsctrl-
       bnsl+           bnsl-           bnsla+          bnsla-
       bnslr+          bnslr-          bnslrl+         bnslrl-
       bnu+            bnu-            bnua+           bnua-
       bnuctr+         bnuctr-         bnuctrl+        bnuctrl-
       bnul+           bnul-           bnula+          bnula-
       bnulr+          bnulr-          bnulrl+         bnulrl-
       bnz+            bnz-            bnza+           bnza-
       bnzctr+         bnzctr-         bnzctrl+        bnzctrl-
       bnzl+           bnzl-           bnzla+          bnzla-
       bnzlr+          bnzlr-          bnzlrl+         bnzlrl-
       bso+            bso-            bsoa+           bsoa-
       bsoctr+         bsoctr-         bsoctrl+        bsoctrl-
       bsol+           bsol-           bsola+          bsola-
       bsolr+          bsolr-          bsolrl+         bsolrl-
       bt+             bt-             bta+            bta-
       btctr+          btctr-          btctrl+         btctrl-
       btl+            btl-            btla+           btla-
       btlr+           btlr-           btlrl+          btlrl-
       bun+            bun-            buna+           buna-
       bunctr+         bunctr-         bunctrl+        bunctrl-
       bunl+           bunl-           bunla+          bunla-
       bunlr+          bunlr-          bunlrl+         bunlrl-
       bz+             bz-             bza+            bza-
       bzctr+          bzctr-          bzctrl+         bzctrl-
       bzl+            bzl-            bzla+           bzla-
       bzlr+           bzlr-           bzlrl+          bzlrl-