问题标签 [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.

0 投票
1 回答
65 浏览

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(因为运行时路径受到保护):

0 投票
1 回答
191 浏览

x86 - 在 Solaris x86 平台上覆盖 mapfile 中的 hwcap_2

我们有一个保护运行时路径的库。如果 cpu 功能可用,则采用更快的代码路径。我们正在尝试在 Solaris 11.3 上添加 AVX2 代码路径。

在没有 AVX2 的旧下层机器上,我们遇到:

由于运行时特征检测,我们有一个地图文件可以清除功能。它适用于CA_SUNW_HW_1AESNI、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 SSE2because SSEand from与and SSE2fromhwcap_1碰撞。AV2_386_RDSEEDAV2_386_ADXhwcap_2


这是使用映射文件的完整链接命令:

链接器包含-xarch选项(被映射文件删除)的原因是,手册告诉我们链接命令必须包含所有-xarch选项。所以我们没有选择忽略它。


这是<sys/auxv_386.h>

0 投票
0 回答
160 浏览

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 的编译结果: