问题标签 [suncc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linker - 以字节码形式使用指令时需要 -xarch=XXX 吗?
我有一个 x86 RDRAND 实现,如下所示。我对 RDSEED 有类似的实现。
发出的字节码是rdrand eax
并且有能力的处理器会愉快地使用它们。Sun Studio 12.1 及更高版本支持 GCC 内联汇编并使用它们。
Sun 文档说我需要-xarch=avx_i
提供 RDRAND(和 RDSEED -xarch=avx2_i
)的 ISA。另请参阅Sun Studio 12.6 | -xarch x86 的标志。
在这个用例中,我还需要添加-xarch=avx_i
到我的链接器标志吗?RDRAND
万一这很重要,我们在运行时保护 CPU 功能并使用 Mapfile 来降低 ISA(因为运行时路径受到保护):
x86 - 在 Solaris x86 平台上覆盖 mapfile 中的 hwcap_2
我们有一个保护运行时路径的库。如果 cpu 功能可用,则采用更快的代码路径。我们正在尝试在 Solaris 11.3 上添加 AVX2 代码路径。
在没有 AVX2 的旧下层机器上,我们遇到:
由于运行时特征检测,我们有一个地图文件可以清除功能。它适用于CA_SUNW_HW_1
AESNI、CLMUL、SSE4.2、SSE4.1 和 SSE3:
我们需要清除hwcap_2
. 根据 Sun 的Mapfile Directives,我们应该能够使用空赋值来清除大写:
如果使用“=”运算符,则指定的值将替换先前的值,并且 exclude 重置为 0。此外,“=”的使用会覆盖从输入文件处理中收集的任何功能。
然后在文档的后面:
要从输出对象中完全消除给定的能力,使用“=”运算符和一个空值列表就足够了......
所以我们添加了一个空hwcap_2
来消除这个能力:
但它会导致相同的运行时错误。
我们在libgfortran 上的 Disable hwcaps 中发现了一份错误报告,但它有 Autools 解决方法,而不是 mapfile 修复。
我们如何在 Solaris x86 上的映射文件中清除 AVX 和 AVX2 功能?
在链接时设置hwcap_2 = 0;
结果如下:
我们不能使用hwcap_2 = SSE SSE2
because SSE
and from与and SSE2
fromhwcap_1
碰撞。AV2_386_RDSEED
AV2_386_ADX
hwcap_2
这是使用映射文件的完整链接命令:
链接器包含-xarch
选项(被映射文件删除)的原因是,手册告诉我们链接命令必须包含所有-xarch
选项。所以我们没有选择忽略它。
这是<sys/auxv_386.h>
:
c++ - SunCC std::allocator 和 size_type max_size(size_type) const 成员函数?
我们使用一个自定义分配器来清零内存。没什么大不了的。它具有std::allocator中描述的类型和成员函数。
我最近将自定义分配器用于std::vector<T, A>
(带A
分配器),这是自定义分配器的新应用。它在 AIX、BSD、Linux、OSX 和 Windows 上测试正常。
在 Solaris 上进行测试导致编译失败。看起来 SunCC 需要一个size_type max_size(size_type) const
成员函数:
从同一个文件中,有一个size_type max_size (size_type) const
:
在搜索有关 Sun 分配器的信息时,我没有找到有用的结果。
我的第一个问题是,这个成员函数是从哪里来的?它是 SunCC 特有的吗?它是早期 Rogue Wave 实施的遗迹吗?或者也许是别的什么?
我的第二个问题是,是否应该只为 SunCC 添加这个成员函数?或者我们应该使用一个选项来禁用它以实现可移植性?或者也许是别的什么?
以下是 Sun Studio 12.3 和 12.4 的编译结果:
以下是 Sun Studio 12.5 和 12.6 的编译结果: