This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM62D-Q1:有关__ atomic_swap 的文档

Guru**** 2810285 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1619102/am62d-q1-documentation-on-__atomic_swap

器件型号: AM62D-Q1

您好、

我需要使用 C7x 内核上 c7x.h 中提供的__atomic_swap。 可用文档中提到了该问题、但未对其进行详细介绍。 我正在查找该详细说明。 我可以猜测如何通过它查看签名`int ___vBIFF __atomic_swap (__WR int*、int、int)`。 但最后一个参数除外。 我想这是内存顺序。 我必须找到正确的文档。 编译器不会对其进行描述、因此无编号编程指南可用。 在哪里可以找到合适的文档?

到目前为止

  • spruip0 - C71x DSP CPU、指令集和矩阵乘法加速器
  • spruiv4d - C7000 C C++优化 Guide.pdf
  • spruig8k—C7000 优化 C C++编译器 v5.0.0.LTS
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Michael:
    有关内在函数的详细信息、请参阅 SPRUIU4(C7 ISA 指南)。 您可以从以下位置申请文档: https://www.ti.com/secureresources/C7X-EA-DEV。

    但是、我看不到有关与第三个参数的映射的更多详细信息。 让我在内部进行检查、并就此向您提出问题。


    谢谢、
    Shreyansh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Michal、
    以下是我基于测试脚本发现的、因为 ISA 对此有点不清楚:

        /* ASW */
        int asw_mem = 2;
        int res1 = __atomic_swap(&asw_mem, /* unused? */ 0, /* replace */ 1);
        assert(res1 == 2);
        assert(asw_mem == 1);
    

    由此可以看到、要交换的值在存储器(第一个)操作数和寄存器(第三个)操作数之间。 它还表明第二个操作数未使用。 我希望这能清楚地说明这一点。

    谢谢、
    Shreyansh