为什么LuaJIT不使用`-mavx2`打印?

时间:2018-06-22 13:47:34

标签: compiler-flags luajit

我试图用LuaJIT的C ffi为C库编写一个Lua绑定,但是遇到了这个问题。 LuaJIT不打印行,而仅设置-mavx2标志。

以下是重现此问题的步骤:

  1. 环境

    • CPU :Intel(R)Core(TM)i5 CPU M 560 @ 2.67GHz
    • 操作系统:Ubuntu 16.04,64位
    • GCC 版本:gcc(Ubuntu 5.4.0-6ubuntu1〜16.04.9)5.4.0 20160609
    • LuaJIT 版本:2.0.4
    • 实际上,我是在梦幻般的ZeroBrane Studio(最新版本)中运行的
  2. test.c

    #include <stdint.h>
    
    uint64_t aux(const uint64_t b)
    {
        return b & b;
    }
    
    void test(uint64_t state)
    {
    
        uint64_t b[64];
    
        for (int i = 0; i < 64; i++)
        {
            b[i] = (state<<1) ^ state;
        }
    
        aux(b[0]);
    
    }
    
  3. 编译为共享库

    gcc -W -Wall -Winline -g -fPIC -shared -O3 -o libtest.so test.c # without -mavx2
    gcc -W -Wall -Winline -g -fPIC -shared -O3 -mavx2 -o libtest.so test.c # with -mavx2
    
  4. 在LuaJIT中使用库

    test.lua

    local ffi = require("ffi")
    local L = ffi.load("./libtest.so")
    
    ffi.cdef[[
    void test(uint64_t);
    ]]
    local s = ffi.new("uint64_t", 0);
    print("Hello!")
    L.test(s)
    print("Hello!") 
    
  5. 输出

    没有-mavx2hello!\nhello\n符合预期。
    使用-mavx2hello!\n

0 个答案:

没有答案