P6-family CPUs would have a partial-register stall when the caller read RAX after xorb
wrote AL.
但在Sandybridge,一个低级登记册上的RMW是整个登记册上的RMW,而不是将其与诸如<代码>上流星号”等全方位名称重新命名。 在Ivy Bridge或Haswell,完全放弃了独立于整个登记册的低频登记册的重新命名(仅保留AH/BH/CH/DH的高度重新命名,因为这仍然足以独立使用AL和AH。) 因此,即便是<条码>冲重m,%al是负荷+缩微薄的ALU uop,在现代英特尔P核心和其他一切方面合并低 by。 部分注册的重新命名从来不是其他微型产权家庭的事情,如P4、Silmont或AMD。
The default -mtune=generic
shouldn t care much if at all about Nehalem and earlier. And GCC/Clang nightly builds still use movzbl
(aka Intel movzx
) with -mtune=skylake
, -march=skylake
, or -mtune=znver1
(Godbolt), so presumably this code-gen choice is baked in, not a matter of updating tune=generic
settings.
也许从历史上看,P6是如何工作的,现在没有人会变换,因为CPU是不同的。 这类事情并不罕见。 或者说,他们不知道如何做这种优化,而没有犯错误,例如只写低8个登记点,在其他一些案件中制造错误的附属地。
海湾合作委员会和部族确实知道,<代码>hash < 0x100<>/code>是一个固定的<代码>1,因此,如果它们想这样做,它们确实有足够的价值-距离追踪,以知道该数值已经是零延伸。
www.un.org/Depts/DGACM/index_spanish.htm 您可在上报告这一报告,同时在Clang 发行人https/>。
缩略语 感到可以自由引用你汇编者报告撰写的任何文章,并将这一Q&与A联系起来。