FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

clangでRISC-V Vector ExtensionのAuto Vectorizationを試す

Ubuntu 22.04 LTS上でインストールできるclang14を試す。

void vector_test (const long long *a, const long long *b, long long *c)
{
  for (int i = 0; i < 256; i++) {
    c[i] = a[i] + b[i];
  }

  return;
}
clang-14 -c vector_test.c -menable-experimental-extensions -march=rv64gcv -target riscv64 -O3 -mllvm --riscv-v-vector-bits-min=256
riscv64-unknown-elf-objdump -d vector_test.o
  4e:   00e507b3                add     a5,a0,a4
  52:   c5827057                vsetivli        zero,4,e64,m1,ta,mu
  56:   0207f407                vle64.v v8,(a5)
  5a:   02078793                addi    a5,a5,32
  5e:   0207f487                vle64.v v9,(a5)
  62:   00e587b3                add     a5,a1,a4
  66:   0207f507                vle64.v v10,(a5)
  6a:   02078793                addi    a5,a5,32
  6e:   0207f587                vle64.v v11,(a5)
  72:   02a40457                vadd.vv v8,v10,v8
  76:   02b484d7                vadd.vv v9,v11,v9
  7a:   00e607b3                add     a5,a2,a4
  7e:   0207f427                vse64.v v8,(a5)
  82:   02078793                addi    a5,a5,32
  86:   04070713                addi    a4,a4,64
  8a:   0207f4a7                vse64.v v9,(a5)
  8e:   fc5710e3                bne     a4,t0,4e <vector_test+0x4e>
  92:   8082                    ret