aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-openmp.cc
diff options
context:
space:
mode:
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>2023-04-25 14:50:32 +0100
committerKyrylo Tkachov <kyrylo.tkachov@arm.com>2023-04-25 14:51:09 +0100
commitc69db3ef7f7d82a50f46038aa5457b7c8cc2d643 (patch)
treefbd52c0666243d2095f2348e09ce9dcce45ee46e /gcc/fortran/trans-openmp.cc
parent784e03f378bb2c330b96459928d0472d38748970 (diff)
downloadgcc-c69db3ef7f7d82a50f46038aa5457b7c8cc2d643.zip
gcc-c69db3ef7f7d82a50f46038aa5457b7c8cc2d643.tar.gz
gcc-c69db3ef7f7d82a50f46038aa5457b7c8cc2d643.tar.bz2
aarch64: Implement V2DI,V4SI division optabs for TARGET_SVE
Similar to the mulv2di case, we can use SVE instruction to implement the V4SI and V2DI optabs for signed and unsigned integer division. This allows us to generate much cleaner code for the testcase than the current: food: fmov x1, d1 fmov x0, d0 umov x2, v0.d[1] sdiv x0, x0, x1 umov x1, v1.d[1] sdiv x1, x2, x1 fmov d0, x0 ins v0.d[1], x1 ret which now becomes: food: ptrue p0.b, all sdiv z0.d, p0/m, z0.d, z1.d ret Bootstrapped and tested on aarch64-none-linux-gnu. gcc/ChangeLog: * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand. * config/aarch64/iterators.md (VQDIV): New mode iterator. (vnx2di): New mode attribute. gcc/testsuite/ChangeLog: * gcc.target/aarch64/sve-neon-modes_3.c: New test.
Diffstat (limited to 'gcc/fortran/trans-openmp.cc')
0 files changed, 0 insertions, 0 deletions