使 用 NEON 支 持E.3 内 在 函 数本 节 介 绍 的 内 在 函 数 紧 密 映 射 至 NEON 指 令 。 每 节 开 头 是 函 数 原 型 列 表 , 并 包含 指 定 等 效 汇 编 器 指 令 的 注 释 。 编 译 器 会 选 择 一 条 具 有 所 需 语 义 的 指 令 , 但 不保 证 编 译 器 会 生 成 列 出 的 指 令 。内 在 函 数 使 用 类 似 于 NEON 统 一 汇 编 器 语 法 的 命 名 方 案 。 即 , 每 个 内 在 函 数 的格 式 如 下 :_另 外 提 供 q 标 记 来 指 定 内 在 函 数 对 128 位 向 量 进 行 运 算 。例 如 :• vmul_s16, 表 示 两 个 有 符 号 16 位 值 的 向 量 相 乘 。这 编 译 为 VMUL.I16 d2, d0, d1。• vaddl_u8, 是 指 两 个 包 含 无 符 号 8 位 值 的 64 位 向 量 按 长 型 相 加 , 结 果 为 无符 号 16 位 值 的 128 位 向 量 。这 编 译 为 VADDL.U8 q1, d0, d1。注 意本 手 册 中 的 内 在 函 数 原 型 使 用 以 下 类 型 注 释 :__const(n)参 数 n 必 须 是 编 译 时 常 数__constrange(min, max)参 数 必 须 是 编 译 时 常 数 , 范 围 为 min 至 max__transfersize(n)内 在 函 数 从 此 指 针 加 载 n 个 字 节 。注 意使 用 __fp16 的 NEON 内 在 函 数 原 型 仅 可 用 于 具 有 NEON 半 精 度 VFP 扩 展 的 目标 。 若 要 启 用 __fp16, 请 使 用 --fp16_format 命 令 行 选 项 。 请 参 阅 第 2-59 页的 --fp16_format=format。E-4 Copyright © 2007-2009 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0348BCNon-Confidential, Unrestricted AccessID090708
使 用 NEON 支 持E.3.1加 法以 下 内 在 函 数 对 向 量 进 行 加 法 运 算 。 结 果 中 的 每 条 向 量 线 都 是 对 每 个 操 作 数 向量 中 的 相 应 向 量 线 执 行 加 法 运 算 的 结 果 。 执 行 的 运 算 如 下 :• 向 量 加 法 :vadd -> Vr[i]:=Va[i]+Vb[i]• 向 量 长 型 加 法 :vadd -> Vr[i]:=Va[i]+Vb[i]• 第 E-6 页 的 向 量 宽 型 加 法 :vadd -> Vr[i]:=Va[i]+Vb[i]• 第 E-6 页 的 向 量 半 加 :vhadd -> Vr[i]:=(Va[i]+Vb[i])>>1• 第 E-6 页 的 向 量 舍 入 半 加 :vrhadd -> Vr[i]:=(Va[i]+Vb[i]+1)>>1• 第 E-7 页 的 向 量 饱 和 加 法 :vqadd -> Vr[i]:=sat(Va[i]+Vb[i])• 第 E-7 页 的 高 位 半 部 分 向 量 加 法 :- > Vr[i]:=Va[i]+Vb[i]• 第 E-7 页 的 高 位 半 部 分 向 量 舍 入 加 法向 量 加 法 :vadd -> Vr[i]:=Va[i]+Vb[i]Vr、 Va、 Vb 具 有 相 等 的 向 量 线 大 小 。int8x8_t vadd_s8(int8x8_t a, int8x8_t b); // VADD.I8 d0,d0,d0int16x4_t vadd_s16(int16x4_t a, int16x4_t b); // VADD.I16 d0,d0,d0int32x2_t vadd_s32(int32x2_t a, int32x2_t b); // VADD.I32 d0,d0,d0int64x1_t vadd_s64(int64x1_t a, int64x1_t b); // VADD.I64 d0,d0,d0float32x2_t vadd_f32(float32x2_t a, float32x2_t b); // VADD.F32 d0,d0,d0uint8x8_t vadd_u8(uint8x8_t a, uint8x8_t b); // VADD.I8 d0,d0,d0uint16x4_t vadd_u16(uint16x4_t a, uint16x4_t b); // VADD.I16 d0,d0,d0uint32x2_t vadd_u32(uint32x2_t a, uint32x2_t b); // VADD.I32 d0,d0,d0uint64x1_t vadd_u64(uint64x1_t a, uint64x1_t b); // VADD.I64 d0,d0,d0int8x16_t vaddq_s8(int8x16_t a, int8x16_t b); // VADD.I8 q0,q0,q0int16x8_t vaddq_s16(int16x8_t a, int16x8_t b); // VADD.I16 q0,q0,q0int32x4_t vaddq_s32(int32x4_t a, int32x4_t b); // VADD.I32 q0,q0,q0int64x2_t vaddq_s64(int64x2_t a, int64x2_t b); // VADD.I64 q0,q0,q0float32x4_t vaddq_f32(float32x4_t a, float32x4_t b); // VADD.F32 q0,q0,q0uint8x16_t vaddq_u8(uint8x16_t a, uint8x16_t b); // VADD.I8 q0,q0,q0uint16x8_t vaddq_u16(uint16x8_t a, uint16x8_t b); // VADD.I16 q0,q0,q0uint32x4_t vaddq_u32(uint32x4_t a, uint32x4_t b); // VADD.I32 q0,q0,q0uint64x2_t vaddq_u64(uint64x2_t a, uint64x2_t b); // VADD.I64 q0,q0,q0向 量 长 型 加 法 :vadd -> Vr[i]:=Va[i]+Vb[i]Va、 Vb 具 有 相 等 的 向 量 线 大 小 , 结 果 为 向 量 线 宽 度 变 成 两 倍 的 128 位 向 量 。int16x8_t vaddl_s8(int8x8_t a, int8x8_t b);int32x4_t vaddl_s16(int16x4_t a, int16x4_t b);int64x2_t vaddl_s32(int32x2_t a, int32x2_t b);// VADDL.S8 q0,d0,d0// VADDL.S16 q0,d0,d0// VADDL.S32 q0,d0,d0<strong>ARM</strong> DUI 0348BC Copyright © 2007-2009 <strong>ARM</strong> Limited. All rights reserved. E-5ID090708Non-Confidential, Unrestricted Access
- Page 1 and 2:
®RealView编 译 工 具4.0 版编
- Page 3 and 4:
目 录RealView 编 译 工 具编
- Page 5 and 6:
前 言本 前 言 介 绍 了 《R
- Page 7 and 8:
前 言附 录 B 标 准 C 实 现
- Page 9 and 10:
前 言其 他 出 版 物以 下
- Page 11 and 12:
第 1 章简 介本 章 介 绍 随
- Page 13 and 14:
简 介1.2 源 语 言 模 式ARM
- Page 15 and 16:
简 介1.3 语 言 扩 展 和 语
- Page 17 and 18:
简 介1.4 C 和 C++ 库RVCT 提
- Page 19 and 20:
第 2 章编 译 器 命 令 行
- Page 21 and 22:
编 译 器 命 令 行 选 项2.1.
- Page 23 and 24:
编 译 器 命 令 行 选 项/fpi
- Page 25 and 26:
编 译 器 命 令 行 选 项/rwp
- Page 27 and 28:
编 译 器 命 令 行 选 项从
- Page 29 and 30:
编 译 器 命 令 行 选 项•
- Page 31 and 32:
编 译 器 命 令 行 选 项2.1.
- Page 33 and 34:
编 译 器 命 令 行 选 项另
- Page 35 and 36:
编 译 器 命 令 行 选 项另
- Page 37 and 38:
编 译 器 命 令 行 选 项2.1.
- Page 39 and 40:
编 译 器 命 令 行 选 项示
- Page 41 and 42:
编 译 器 命 令 行 选 项缺
- Page 43 and 44:
编 译 器 命 令 行 选 项•
- Page 45 and 46:
编 译 器 命 令 行 选 项2.1.
- Page 47 and 48:
编 译 器 命 令 行 选 项•
- Page 49 and 50:
编 译 器 命 令 行 选 项如
- Page 51 and 52:
编 译 器 命 令 行 选 项•
- Page 53 and 54:
编 译 器 命 令 行 选 项2.1.
- Page 55 and 56:
编 译 器 命 令 行 选 项另
- Page 57 and 58:
编 译 器 命 令 行 选 项另
- Page 59 and 60:
编 译 器 命 令 行 选 项示
- Page 61 and 62:
编 译 器 命 令 行 选 项2.1.
- Page 63 and 64:
编 译 器 命 令 行 选 项2.1.
- Page 65 and 66:
编 译 器 命 令 行 选 项其
- Page 67 and 68:
编 译 器 命 令 行 选 项用
- Page 69 and 70:
编 译 器 命 令 行 选 项2.1.
- Page 71 and 72:
编 译 器 命 令 行 选 项语
- Page 73 and 74:
编 译 器 命 令 行 选 项用
- Page 75 and 76:
编 译 器 命 令 行 选 项•
- Page 77 and 78:
编 译 器 命 令 行 选 项2.1.
- Page 79 and 80:
编 译 器 命 令 行 选 项•
- Page 81 and 82:
编 译 器 命 令 行 选 项soft
- Page 83 and 84:
编 译 器 命 令 行 选 项声
- Page 85 and 86:
编 译 器 命 令 行 选 项2.1.
- Page 87 and 88:
编 译 器 命 令 行 选 项2.1.
- Page 89 and 90:
编 译 器 命 令 行 选 项2.1.
- Page 91 and 92:
编 译 器 命 令 行 选 项2.1.
- Page 93 and 94:
编 译 器 命 令 行 选 项2.1.
- Page 95 and 96:
编 译 器 命 令 行 选 项另
- Page 97 and 98:
编 译 器 命 令 行 选 项示
- Page 99 and 100:
编 译 器 命 令 行 选 项用
- Page 101 and 102:
编 译 器 命 令 行 选 项•
- Page 103 and 104:
编 译 器 命 令 行 选 项2.1.
- Page 105 and 106:
编 译 器 命 令 行 选 项如
- Page 107 and 108:
编 译 器 命 令 行 选 项另
- Page 109 and 110:
编 译 器 命 令 行 选 项缺
- Page 111 and 112:
编 译 器 命 令 行 选 项语
- Page 113 and 114:
编 译 器 命 令 行 选 项此
- Page 115 and 116:
编 译 器 命 令 行 选 项2.1.
- Page 117 and 118:
编 译 器 命 令 行 选 项另
- Page 119 and 120:
编 译 器 命 令 行 选 项2.1.
- Page 121 and 122:
编 译 器 命 令 行 选 项注
- Page 123 and 124:
编 译 器 命 令 行 选 项另
- Page 125 and 126:
编 译 器 命 令 行 选 项模
- Page 127 and 128:
编 译 器 命 令 行 选 项另
- Page 129 and 130:
编 译 器 命 令 行 选 项2.1.
- Page 131 and 132:
编 译 器 命 令 行 选 项2.1.
- Page 133 and 134:
编 译 器 命 令 行 选 项—
- Page 135 and 136:
编 译 器 命 令 行 选 项示
- Page 137 and 138:
编 译 器 命 令 行 选 项2.1.
- Page 139 and 140:
编 译 器 命 令 行 选 项2.1.
- Page 141 and 142:
编 译 器 命 令 行 选 项另
- Page 143 and 144:
编 译 器 命 令 行 选 项2.1.
- Page 145 and 146:
编 译 器 命 令 行 选 项错
- Page 147 and 148:
编 译 器 命 令 行 选 项缺
- Page 149 and 150:
编 译 器 命 令 行 选 项另
- Page 151 and 152:
编 译 器 命 令 行 选 项2.1.
- Page 153 and 154:
第 3 章语 言 扩 展本 章 介
- Page 155 and 156:
语 言 扩 展注 意此 预 处
- Page 157 and 158:
语 言 扩 展{}return Subscriptin
- Page 159 and 160:
语 言 扩 展3.3.2 long longARM
- Page 161 and 162:
语 言 扩 展3.4 标 准 C 语
- Page 163 and 164:
语 言 扩 展• 可 以 分 配
- Page 165 and 166:
语 言 扩 展3.4.7 外 部 实
- Page 167 and 168:
语 言 扩 展示 例class B;class
- Page 169 and 170:
语 言 扩 展3.5.6 非 成 员
- Page 171 and 172:
语 言 扩 展3.6.3 匿 名 类
- Page 173 and 174:
语 言 扩 展int Incomplete_Enums
- Page 175 and 176:
语 言 扩 展3.7 GNU 语 言 扩
- Page 177 and 178:
语 言 扩 展}u = (foo_t) b ; //
- Page 179 and 180:
语 言 扩 展• 可 以 使 用
- Page 181 and 182:
语 言 扩 展模 式仅 在 C90
- Page 183 and 184:
第 4 章编 译 器 特 有 的
- Page 185 and 186:
编 译 器 特 有 的 功 能用
- Page 187 and 188:
编 译 器 特 有 的 功 能__AL
- Page 189 and 190:
编 译 器 特 有 的 功 能4.1.
- Page 191 and 192:
编 译 器 特 有 的 功 能示
- Page 193 and 194:
编 译 器 特 有 的 功 能另
- Page 195 and 196:
编 译 器 特 有 的 功 能} Y;
- Page 197 and 198:
编 译 器 特 有 的 功 能语
- Page 199 and 200:
编 译 器 特 有 的 功 能示
- Page 201 and 202:
编 译 器 特 有 的 功 能其
- Page 203 and 204:
编 译 器 特 有 的 功 能4.1.
- Page 205 and 206:
编 译 器 特 有 的 功 能4.1.
- Page 207 and 208:
编 译 器 特 有 的 功 能如
- Page 209 and 210:
编 译 器 特 有 的 功 能示
- Page 211 and 212:
编 译 器 特 有 的 功 能{}S
- Page 213 and 214:
编 译 器 特 有 的 功 能4.3
- Page 215 and 216:
编 译 器 特 有 的 功 能4.3.
- Page 217 and 218:
编 译 器 特 有 的 功 能4.3.
- Page 219 and 220:
编 译 器 特 有 的 功 能另
- Page 221 and 222:
编 译 器 特 有 的 功 能4.3.
- Page 223 and 224:
编 译 器 特 有 的 功 能另
- Page 225 and 226:
编 译 器 特 有 的 功 能void
- Page 227 and 228:
编 译 器 特 有 的 功 能使
- Page 229 and 230:
编 译 器 特 有 的 功 能4.5.
- Page 231 and 232:
编 译 器 特 有 的 功 能4.5.
- Page 233 and 234:
编 译 器 特 有 的 功 能long
- Page 235 and 236:
编 译 器 特 有 的 功 能注
- Page 237 and 238:
编 译 器 特 有 的 功 能4.6
- Page 239 and 240:
编 译 器 特 有 的 功 能有
- Page 241 and 242:
编 译 器 特 有 的 功 能•
- Page 243 and 244:
编 译 器 特 有 的 功 能4.6.
- Page 245 and 246:
编 译 器 特 有 的 功 能micr
- Page 247 and 248:
编 译 器 特 有 的 功 能4.6.
- Page 249 and 250:
编 译 器 特 有 的 功 能4.6.
- Page 251 and 252:
编 译 器 特 有 的 功 能}{}f
- Page 253 and 254:
编 译 器 特 有 的 功 能4.7
- Page 255 and 256:
编 译 器 特 有 的 功 能opco
- Page 257 and 258:
编 译 器 特 有 的 功 能另
- Page 259 and 260:
编 译 器 特 有 的 功 能4.7.
- Page 261 and 262:
编 译 器 特 有 的 功 能4.7.
- Page 263 and 264:
编 译 器 特 有 的 功 能其
- Page 265 and 266:
编 译 器 特 有 的 功 能LDRB
- Page 267 and 268:
编 译 器 特 有 的 功 能另
- Page 269 and 270:
编 译 器 特 有 的 功 能4.7.
- Page 271 and 272:
编 译 器 特 有 的 功 能4.7.
- Page 273 and 274:
编 译 器 特 有 的 功 能另
- Page 275 and 276:
编 译 器 特 有 的 功 能另
- Page 277 and 278:
编 译 器 特 有 的 功 能其
- Page 279 and 280:
编 译 器 特 有 的 功 能另
- Page 281 and 282:
编 译 器 特 有 的 功 能示
- Page 283 and 284:
编 译 器 特 有 的 功 能其
- Page 285 and 286:
编 译 器 特 有 的 功 能另
- Page 287 and 288:
编 译 器 特 有 的 功 能4.7.
- Page 289 and 290:
编 译 器 特 有 的 功 能4.7.
- Page 291 and 292:
编 译 器 特 有 的 功 能表
- Page 293 and 294:
编 译 器 特 有 的 功 能4.8
- Page 295 and 296:
编 译 器 特 有 的 功 能__bu
- Page 297 and 298:
编 译 器 特 有 的 功 能4.10
- Page 299 and 300:
编 译 器 特 有 的 功 能表
- Page 301 and 302: 编 译 器 特 有 的 功 能表
- Page 303 and 304: 编 译 器 特 有 的 功 能表
- Page 305 and 306: 第 5 章C 和 C++ 实 现 细 节
- Page 307 and 308: C 和 C++ 实 现 细 节• 表 5-
- Page 309 and 310: C 和 C++ 实 现 细 节整 数整
- Page 311 and 312: C 和 C++ 实 现 细 节注 意适
- Page 313 and 314: C 和 C++ 实 现 细 节字 段
- Page 315 and 316: C 和 C++ 实 现 细 节struct X{i
- Page 317 and 318: C 和 C++ 实 现 细 节5.2 C++
- Page 319 and 320: C 和 C++ 实 现 细 节注 意可
- Page 321 and 322: C 和 C++ 实 现 细 节与 自
- Page 323 and 324: 附 录 Avia 文 件 语 法本 附
- Page 325 and 326: via 文 件 语 法A.2 语 法via
- Page 327 and 328: 附 录 B标 准 C 实 现 定 义
- Page 329 and 330: 标 准 C 实 现 定 义B.1.1转
- Page 331 and 332: 标 准 C 实 现 定 义>& file将
- Page 333 and 334: 标 准 C 实 现 定 义B.1.11表
- Page 335 and 336: 标 准 C 实 现 定 义B.2 被
- Page 337 and 338: 附 录 C标 准 C++ 实 现 定
- Page 339 and 340: 标 准 C++ 实 现 定 义C.2 调
- Page 341 and 342: 标 准 C++ 实 现 定 义C.4 标
- Page 343 and 344: 附 录 DC 和 C++ 编 译 器 实
- Page 345 and 346: C 和 C++ 编 译 器 实 现 限
- Page 347 and 348: C 和 C++ 编 译 器 实 现 限
- Page 349 and 350: 附 录 E使 用 NEON 支 持本
- Page 351: 使 用 NEON 支 持E.2 向 量 数
- Page 355 and 356: 使 用 NEON 支 持向 量 饱 和
- Page 357 and 358: 使 用 NEON 支 持int8x16_t vmlsq
- Page 359 and 360: 使 用 NEON 支 持向 量 宽 型
- Page 361 and 362: 使 用 NEON 支 持uint32x2_t vcge
- Page 363 and 364: 使 用 NEON 支 持uint16x8_t vtst
- Page 365 and 366: 使 用 NEON 支 持uint16x8_t vmin
- Page 367 and 368: 使 用 NEON 支 持int8x16_t vshlq
- Page 369 and 370: 使 用 NEON 支 持uint8x8_t vshl_
- Page 371 and 372: 使 用 NEON 支 持uint16x8_t vqsh
- Page 373 and 374: 使 用 NEON 支 持向 量 左 移
- Page 375 and 376: 使 用 NEON 支 持// VLD1.16 {d0[
- Page 377 and 378: 使 用 NEON 支 持void vst1q_u16(
- Page 379 and 380: 使 用 NEON 支 持E.3.15加 载
- Page 381 and 382: 使 用 NEON 支 持// VLD4.8 {d0,
- Page 383 and 384: 使 用 NEON 支 持// VLD1.64 {d0,
- Page 385 and 386: 使 用 NEON 支 持lane);// VLD3.8
- Page 387 and 388: 使 用 NEON 支 持// VST1.64 {d0,
- Page 389 and 390: 使 用 NEON 支 持// VST4.16 {d0,
- Page 391 and 392: 使 用 NEON 支 持// VST4.16 {d0[
- Page 393 and 394: 使 用 NEON 支 持uint16x4_t vcre
- Page 395 and 396: 使 用 NEON 支 持uint64x2_t vcom
- Page 397 and 398: 使 用 NEON 支 持向 量 饱 和
- Page 399 and 400: 使 用 NEON 支 持// VMLS.I16 q0,
- Page 401 and 402: 使 用 NEON 支 持向 量 与 标
- Page 403 and 404:
使 用 NEON 支 持int8x16_t vrev6
- Page 405 and 406:
使 用 NEON 支 持计 算 设 置
- Page 407 and 408:
使 用 NEON 支 持int16x8_t veorq
- Page 409 and 410:
使 用 NEON 支 持uint16x8x2_t vt