12.07.2015 Views

RealView Compilation Tools コンパイラユーザガイド - ARM ...

RealView Compilation Tools コンパイラユーザガイド - ARM ...

RealView Compilation Tools コンパイラユーザガイド - ARM ...

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

NEON ベ ク ト ル 化 コ ンパイ ラの 使 用関 数 呼 び 出 し と イ ン ラ イ ン 展 開ループ 内 で 非 イ ン ラ イ ン 関 数 を 呼 び 出 す と 、 ベ ク ト ル 化 で き ません。わか り やす く する ための 一 般 的 な 手 段 と し て、 複 雑 な 演 算 を 複 数 の 関 数 に 分割 します。 このよ う な 関 数 をベク ト ル 化 の 対 象 にするには、 __inline キーワードか __forceinline キーワードでマーク を 付 ける 必 要 があ り ます。 これらの 関数 は、 ベク ト ル 化 のためにイ ン ラ イ ン 展 開 されます。 『コンパイ ラ リ ファレンスガイド』 の 「__inline」 (ページ 4-10) および「__forceinline」(ページ 4-7) を 参 照 して 下 さい。条 件 付 き ステー ト メ ン トベ ク ト ル 化 を 効 率 的 に 行 う には、 ループを 主 に 代 入 式 で 構 成 し、 if ステートメントおよび switch ス テー ト メ ン ト の 使 用 を 制 限 する 必 要 があ り ます。ループの 繰 り 返 しの 間 に 変 化 し ない 単 純 な 条 件 は、 ループ 不 変 と いわれます。これらは、 コンパイラによってループの 前 に 移 動 され、 ループの 繰 り 返 し 時に 実 行 する 必 要 がな く な り ます。 よ り 複 雑 な 条 件 オペレーションは、ベクタモードですべてのパスを 計 算 し、 結 果 をマージしてベク ト ル 化 されます。 条件 付 き の 実 行 で 大 量 の 計 算 が 行 われる 場 合 は、 かな り の 時 間 が 浪 費 さ れます。例 3-15 に、 許 容 さ れる 条 件 付 き ス テー ト メ ン ト の 使 用 方 法 を 示 し ます。例 3-15 ベ ク ト ル 化 可 能 な 条 件float a[99], b[99], c[i];int i, n;...for (i = 0; i < n; i++){if (c[i] > 0) a[i] = b[i] - 5.0;else a[i] = b[i] * 2.0;};構 造 体NEON 構 造 体 を ロー ド する には、 構 造 体 の メ ンバすべてが 同 じ 長 さ であ る 必要 があ り ます。 したがって、 コンパイラは、 例 3-16 (ページ 3-16) に 示 すコー ド ではベ ク タ ロー ド を 使 用 し ません。<strong>ARM</strong> DUI 0205IJ Copyright © 2002-2010 <strong>ARM</strong> Limited. All rights reserved. 3-15ID 100419Non-Confidential,

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!