用于分支预测的扩展助记符
汇编程序源程序可以通过将分支预测后缀添加到指令的助记符来具有关于分支条件指令的信息。
如果已知给定 "分支条件" 指令的可能结果 (分支或掉线) ,那么程序员可以通过向指令的助记符添加分支预测后缀,将此信息包括在汇编程序源程序中。 汇编程序使用分支预测信息来确定机器指令中的位的值。 使用分支预测后缀可以提高分支条件指令的平均性能。
可以将以下后缀添加到任何 "分支条件" 助记符 (基本或扩展):
| 项 | 描述 |
|---|---|
| + | 预测要采用的分支 |
| - | 预测不采用的分支 (通过) |
分支预测后缀应紧跟在助记符的其余部分之后 (没有分隔符)。 应该在分支预测后缀和操作数之间使用分隔符 (空格或制表符)。
如果助记符中未包含任何分支预测后缀,那么汇编程序在构造机器指令时将使用以下缺省假设:
- 对于具有负位移字段的相对或绝对分支 ( bc[l] [a]) ,预测将采用该分支。
- 对于具有非负位移字段的相对或绝对分支 ( bc[l] [a]) ,预测不会采用分支 (通过预测)。
- 对于到 LR 或 CTR (bclr[l]) 或 (bcctr[l]) 中的地址的分支,预测不会采用该分支 (通过预测)。
由分支预测后缀控制的机器指令部分是 BO 字段的 y 位。 y 位设置如下:
- 不指定分支预测后缀,或者使用与缺省假设相同的后缀将导致 y 位设置为 0。
- 指定与缺省假设相反的分支预测后缀会导致 y 位设置为 1。
以下示例说明了如何使用分支预测后缀:
- 分支 (如果 CR0 反映的条件小于)。 执行指令通常会导致分支。
blt+ target - 分支 (如果 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-