diff options
Diffstat (limited to 'gas/testsuite/gas/arm/vfp-neon-syntax-inc.s')
-rw-r--r-- | gas/testsuite/gas/arm/vfp-neon-syntax-inc.s | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/gas/testsuite/gas/arm/vfp-neon-syntax-inc.s b/gas/testsuite/gas/arm/vfp-neon-syntax-inc.s new file mode 100644 index 000000000000..fad0bded369c --- /dev/null +++ b/gas/testsuite/gas/arm/vfp-neon-syntax-inc.s @@ -0,0 +1,162 @@ +@ VFP with Neon-style syntax + .syntax unified + + .include "itblock.s" + +func: + .macro testvmov cond="" f32=".f32" f64=".f64" + itblock 4 \cond + vmov\cond\f32 s0,s1 + vmov\cond\f64 d0,d1 + vmov\cond\f32 s0,#0.25 + vmov\cond\f64 d0,#1.0 + itblock 4 \cond + vmov\cond r0,s1 + vmov\cond s0,r1 + vmov\cond r0,r1,s2,s3 + vmov\cond s0,s1,r2,r4 + .endm + + @ Test VFP vmov variants. These can all be conditional. + testvmov + testvmov eq + + .macro monadic op cond="" f32=".f32" f64=".f64" + itblock 2 \cond + \op\cond\f32 s0,s1 + \op\cond\f64 d0,d1 + .endm + + .macro monadic_c op + monadic \op + monadic \op eq + .endm + + .macro dyadic op cond="" f32=".f32" f64=".f64" + itblock 2 \cond + \op\cond\f32 s0,s1,s2 + \op\cond\f64 d0,d1,d2 + .endm + + .macro dyadic_c op + dyadic \op + dyadic \op eq + .endm + + .macro dyadicz op cond="" f32=".f32" f64=".f64" + itblock 2 \cond + \op\cond\f32 s0,#0 + \op\cond\f64 d0,#0 + .endm + + .macro dyadicz_c op + dyadicz \op + dyadicz \op eq + .endm + + monadic_c vsqrt + monadic_c vabs + monadic_c vneg + monadic_c vcmp + monadic_c vcmpe + + dyadic_c vnmul + dyadic_c vnmla + dyadic_c vnmls + + dyadic_c vmul + dyadic_c vmla + dyadic_c vmls + + dyadic_c vadd + dyadic_c vsub + + dyadic_c vdiv + + dyadicz_c vcmp + dyadicz_c vcmpe + + .macro cvtz cond="" s32=".s32" u32=".u32" f32=".f32" f64=".f64" + itblock 4 \cond + vcvtz\cond\s32\f32 s0,s1 + vcvtz\cond\u32\f32 s0,s1 + vcvtz\cond\s32\f64 s0,d1 + vcvtz\cond\u32\f64 s0,d1 + .endm + + cvtz + cvtz eq + + .macro cvt cond="" s32=".s32" u32=".u32" f32=".f32" f64=".f64" + itblock 4 \cond + vcvt\cond\s32\f32 s0,s1 + vcvt\cond\u32\f32 s0,s1 + vcvt\cond\f32\s32 s0,s1 + vcvt\cond\f32\u32 s0,s1 + itblock 4 \cond + vcvt\cond\f32\f64 s0,d1 + vcvt\cond\f64\f32 d0,s1 + vcvt\cond\s32\f64 s0,d1 + vcvt\cond\u32\f64 s0,d1 + itblock 2 \cond + vcvt\cond\f64\s32 d0,s1 + vcvt\cond\f64\u32 d0,s1 + .endm + + cvt + cvt eq + + .macro cvti cond="" s32=".s32" u32=".u32" f32=".f32" f64=".f64" s16=".s16" u16=".u16" + itblock 4 \cond + vcvt\cond\s32\f32 s0,s0,#1 + vcvt\cond\u32\f32 s0,s0,#1 + vcvt\cond\f32\s32 s0,s0,#1 + vcvt\cond\f32\u32 s0,s0,#1 + itblock 4 \cond + vcvt\cond\s32\f64 d0,d0,#1 + vcvt\cond\u32\f64 d0,d0,#1 + vcvt\cond\f64\s32 d0,d0,#1 + vcvt\cond\f64\u32 d0,d0,#1 + itblock 4 \cond + vcvt\cond\f32\s16 s0,s0,#1 + vcvt\cond\f32\u16 s0,s0,#1 + vcvt\cond\f64\s16 d0,d0,#1 + vcvt\cond\f64\u16 d0,d0,#1 + itblock 4 \cond + vcvt\cond\s16\f32 s0,s0,#1 + vcvt\cond\u16\f32 s0,s0,#1 + vcvt\cond\s16\f64 d0,d0,#1 + vcvt\cond\u16\f64 d0,d0,#1 + .endm + + cvti + cvti eq + + .macro multi op cond="" n="" ia="ia" db="db" + itblock 4 \cond + \op\n\cond r0,{s3-s6} + \op\ia\cond r0,{s3-s6} + \op\ia\cond r0!,{s3-s6} + \op\db\cond r0!,{s3-s6} + itblock 4 \cond + \op\n\cond r0,{d3-d6} + \op\ia\cond r0,{d3-d6} + \op\ia\cond r0!,{d3-d6} + \op\db\cond r0!,{d3-d6} + .endm + + multi vldm + multi vldm eq + multi vstm + multi vstm eq + + .macro single op cond="" + itblock 2 \cond + \op\cond s0,[r0,#4] + \op\cond d0,[r0,#4] + .endm + + single vldr + single vldr eq + single vstr + single vstr eq |