
请注意,.NET9 PreView6并没有对AOT进行重大更新。在.NET9 PreView2中曾经对AOT进行了自举模式,参考:.NET9 AOT ILC的重大变化。
硬件内部生成的大多数硬件内部都有其相应的优化,而应用层级只需要传递相应的参数即可。比如一些硬件希望用户为硬件内部的API的某些参数传递常量,这些常量可以直接编码到硬件内部底层的指令中,不需要加载到寄存器或内存中,然后进行访问。如果没有提供常量,则会有相同逻辑但速度较慢的实现。
例如:
static byte Test1(){ Vector128 v = Vector128.Zero; byte size = 1; v = Sse2.ShiftRightLogical128BitLane(v, size); return Sse41.Extract(v, 0);}
v是Vector128初始化的128个0,Sse2.ShiftRightLogical128BitLane把v向右移动size位,返回结果。Sse41.Extract则是返回v里面的某个索引项。比如以下返回3:
Vector128 vector = Vector128.Create(1, 2, 3, 4);int extractedValue = Sse41.Extract(vector, 2);
在调用Sse2.ShiftRightLogical128BitLane的时候,JIT可以用常量替代,JIT具备这种优化。但是在确定生成加速代码还是等逻辑慢实现的时候,如果JIT检测到参数变量而不是常量,于是很早就确定了不对其进行优化形式的调用。
京点点
京东AIGC内容生成平台
26 查看详情
之前的代码:
; Method Program:Test1():ubyte (FullOpts)G_M000_IG01: ;; offset=0x0000 sub rsp, 72G_M000_IG02: ;; offset=0x0004 vxorps xmm0, xmm0, xmm0 vmovaps xmmword ptr [rsp+0x20], xmm0 lea rdx, [rsp+0x20] lea rcx, [rsp+0x30] mov r8d, 1 call [System.Runtime.Intrinsics.X86.Sse2:ShiftRightLogical128BitLane(System.Runtime.Intrinsics.Vector128`1[ubyte],ubyte):System.Runtime.Intrinsics.Vector128`1[ubyte]] vmovaps xmm0, xmmword ptr [rsp+0x30] vpextrb eax, xmm0, 0G_M000_IG03: ;; offset=0x0030 add rsp, 72 ret; Total bytes of code: 53
RyuJIT 现在可以识别更多像这个例子这样的情况,并用其常量值替换变量参数,从而生成加速代码,而不会过早地确定不优化。下面是上述示例的新代码生成所示:
; Method Program:Test1():ubyte (FullOpts)G_M11031_IG01: ;; offset=0x0000G_M11031_IG02: ;; offset=0x0000 vxorps xmm0, xmm0, xmm0 vpsrldq xmm0, xmm0, 1 vpextrb eax, xmm0, 0G_M11031_IG03: ;; offset=0x000F ret; Total bytes of code: 16
用于浮点和 SIMD 运算的恒定折叠是 RyuJIT 中现有的优化,其中可以在编译时计算的表达式被替换为它们计算的常量,从而消除了运行时的计算。许多新功能的示例:
浮点二进制运算,其中一个操作数是一个常量:x + NaN现在折叠成 NaN,x * 1.0现在折叠成 x,x + -0现在折叠成 x。例如,硬件内部函数假设是:Vector,x + Vector.Zero现在折叠成 x,x & Vector.Zero现在折叠成 Vector.Zero,x & Vector.AllBitsSet现在折叠成 x。查看 dotnet/runtime #103206 和 dotnet/runtime #103143 进行更深入的了解。
以上就是.NET9 PreView6硬件内部生成和浮点SMID运算的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/466672.html
微信扫一扫
支付宝扫一扫