小编Sim*_*n F的帖子

Doxygen:是否可以控制依赖图的方向?

直到今天,我一直在使用doxygen(+ dot)的"古代"版本(1.4.7),它通常绘制具有垂直方向的图形,例如
在此输入图像描述

..但是最近的一个(通过Ubuntu分发1.8.6),图表似乎是水平的,即
在此输入图像描述

水平方向的问题在于许多图形远离窗口的右边缘,因此您必须进行"2D"滚动才能看到数据.

我查看了doxygen网页,但看不到是否有一个选项告诉dot用垂直方向绘制它们.有谁知道这样的选项是否存在?

doxygen dot

5
推荐指数
1
解决办法
615
查看次数

gcc(6.1.0)使用SSE内在函数中的"错误"指令

背景:我开发了一个用C/C++编写的计算密集型工具,它必须能够在各种不同的x86_64处理器上运行.为了加速浮点和整数的计算,代码包含了很多SSE*内在函数,它们具有针对不同CPU SSE功能定制的不同路径.(由于在程序开始时检测到CPU标志并用于设置布尔值,我假设定制的代码块的分支预测将非常有效地工作).

为简单起见,我假设只需要考虑SSE2到SSE4.2.

为了访问4.2路径的SSE4.2内在函数fpr,我需要使用gcc的-msse4.2选项.

这个问题 的问题我遇到的是,至少在6.1.0,GCC去并实现了SSE2内在的,mm_cvtsi32_si128,与SSE4.2指令,pinsrd.

如果我使用-msse2限制编译,它将使用sse2指令,movd,即.英特尔"内在指南"说它应该使用的那个.

这有点令人讨厌.

1)关键问题是当程序在pre4.2 CPU上运行时,程序现在会因非法指令而崩溃.我无法控制使用什么硬件,因此可执行文件需要与旧机器兼容,但需要利用新硬件上的功能.

2)根据英特尔内在指南,pinrd指令比它取代的mov慢得多.(pinsrd更通用但不需要这样).

有谁知道如何使gcc 使用内在指南所说的应该使用的指令,但仍然允许在同一个编译单元中通过SSE4*访问所有SSE2?

更新:我还应该注意,在Linux,Windows和OSX下使用各种不同的编译器编译相同的代码,因此如果可能的话,宁愿避免或至少拥有最少的编译器特定扩展.

Update2 :(感谢@PeterCordes)似乎如果启用了优化,gcc将在适当的时候恢复使用来自pinsrd的movd.

c gcc sse intrinsics

2
推荐指数
1
解决办法
413
查看次数

标签 统计

c ×1

dot ×1

doxygen ×1

gcc ×1

intrinsics ×1

sse ×1