Lines Matching full:neon
2 Kernel mode NEON
7 * Use only NEON instructions, or VFP instructions that don't rely on support
9 * Isolate your NEON code in a separate compilation unit, and compile it with
10 '-march=armv7-a -mfpu=neon -mfloat-abi=softfp'
12 NEON code
13 * Don't sleep in your NEON code, and be aware that it will be executed with
19 It is possible to use NEON instructions (and in some cases, VFP instructions) in
20 code that runs in kernel mode. However, for performance reasons, the NEON/VFP
24 may call schedule()], as NEON or VFP instructions will be executed in a
30 The NEON/VFP register file is managed using lazy preserve (on UP systems) and
33 contending for the NEON/VFP unit (or, in the SMP case, when a task migrates to
34 another core). Lazy restore is implemented by disabling the NEON/VFP unit after
35 every context switch, resulting in a trap when subsequently a NEON/VFP
39 Any use of the NEON/VFP unit in kernel mode should not interfere with this, so
40 it is required to do an 'eager' preserve of the NEON/VFP register file, and
41 enable the NEON/VFP unit explicitly so no exceptions are generated on first
43 should be called before any kernel mode NEON or VFP instructions are issued.
44 Likewise, the NEON/VFP unit should be disabled again after use to make sure user
52 preserve/restore mechanism for the kernel mode NEON/VFP register contents. This
53 implies that interruptions of a kernel mode NEON section can only be allowed if
54 they are guaranteed not to touch the NEON/VFP registers. For this reason, the
56 * NEON/VFP code is not allowed in interrupt context;
57 * NEON/VFP code is not allowed to sleep;
58 * NEON/VFP code is executed with preemption disabled.
62 the NEON registers are live. (Additional calls to kernel_neon_begin() should be
79 Separating NEON code from ordinary code
82 kernel_neon_end(), i.e., that it is only allowed to issue NEON/VFP instructions
83 between calls to these respective functions. Furthermore, GCC may generate NEON
84 instructions of its own at -O3 level if -mfpu=neon is selected, and even if the
85 kernel is currently compiled at -O2, future changes may result in NEON/VFP
88 Therefore, the recommended and only supported way of using NEON/VFP in the
91 * isolate the NEON code in a separate compilation unit and compile it with
92 '-march=armv7-a -mfpu=neon -mfloat-abi=softfp';
94 into the unit containing the NEON code from a compilation unit which is *not*
95 built with the GCC flag '-mfpu=neon' set.
98 both NEON and VFP instructions will only ever appear in designated compilation
102 NEON assembler
104 NEON assembler is supported with no additional caveats as long as the rules
108 NEON code generated by GCC
111 parallelism, and generates NEON code from ordinary C source code. This is fully
115 NEON intrinsics
117 NEON intrinsics are also supported. However, as code using NEON intrinsics
121 * Compile the unit containing the NEON intrinsics with '-ffreestanding' so GCC