From 16e5de0a8edc99d0f85de3c9fc0e4aa1bb755072 Mon Sep 17 00:00:00 2001 From: mengqinggang Date: Thu, 11 Dec 2025 14:37:39 +0800 Subject: [PATCH] LoongArch: Testcases for LA32 Delete LA64 testcases in gcc.target/loongarch. Add a new path gcc.target/loongarch/la64 for LA64 testcases in next patch. Delete vector testcases in gcc.target/loongarch. Move these vector testcases to gcc.target/loongarch/vector/lsx or gcc.target/loongarch/vector/lasx in next patch. gcc/testsuite/ChangeLog: * g++.target/loongarch/bytepick.C: Skip on LA32. * g++.target/loongarch/got-load.C: Likewise. * g++.target/loongarch/pr106828.C: Likewise. * g++.target/loongarch/vect-ashr-lshr.C: Add loongarch_asx check. * gcc.dg/ifcvt-4.c: Skip on LA32. * gcc.dg/stack-usage-1.c: Change __loongarch_lp64 to __loongarch__. * gcc.dg/tree-ssa/gen-vect-2.c: Skip on LoongArch. * gcc.dg/tree-ssa/gen-vect-25.c: Likewise. * gcc.dg/tree-ssa/pr83403-1.c: Add dg-additional-options. * gcc.dg/tree-ssa/pr83403-2.c: Likewise. * gcc.target/loongarch/float-load.c: Add hard_float check. * gcc.target/loongarch/larch-builtin.c: Skip some check on LA32. * gcc.target/loongarch/pr115752.c: Add hard_float check. * gcc.target/loongarch/vector/loongarch-vector.exp: Add check_effective_target_loongarch_sx. * lib/target-supports.exp: Add hard float condition to check_effective_target_scalar_all_fma. Disable loongarch for check_effective_target_vect_cmdline_needed. Add check_effective_target_loongarch_sx condition to check_vect_support_and_set_flags. * gcc.target/loongarch/abd-lasx.c: Removed. * gcc.target/loongarch/abd-lsx.c: Removed. * gcc.target/loongarch/add-const.c: Removed. * gcc.target/loongarch/alsl-cost.c: Removed. * gcc.target/loongarch/alsl_wu.c: Removed. * gcc.target/loongarch/and-large-immediate-opt.c: Removed. * gcc.target/loongarch/arch-func-attr-1.c: Removed. * gcc.target/loongarch/arch-pragma-attr-1.c: Removed. * gcc.target/loongarch/attr-model-1.c: Removed. * gcc.target/loongarch/attr-model-2.c: Removed. * gcc.target/loongarch/attr-model-3.c: Removed. * gcc.target/loongarch/attr-model-4.c: Removed. * gcc.target/loongarch/attr-model-5.c: Removed. * gcc.target/loongarch/attr-model-diag.c: Removed. * gcc.target/loongarch/attr-model-test.c: Removed. * gcc.target/loongarch/avg-ceil-lasx.c: Removed. * gcc.target/loongarch/avg-ceil-lsx.c: Removed. * gcc.target/loongarch/avg-floor-lasx.c: Removed. * gcc.target/loongarch/avg-floor-lsx.c: Removed. * gcc.target/loongarch/bitint-alignments.c: Removed. * gcc.target/loongarch/bitint-args.c: Removed. * gcc.target/loongarch/bitint-sizes.c: Removed. * gcc.target/loongarch/bitwise-shift-reassoc.c: Removed. * gcc.target/loongarch/bitwise_extend.c: Removed. * gcc.target/loongarch/bstrins-1.c: Removed. * gcc.target/loongarch/bstrins-2.c: Removed. * gcc.target/loongarch/bstrins-3.c: Removed. * gcc.target/loongarch/bstrins-4.c: Removed. * gcc.target/loongarch/bstrpick_alsl_paired.c: Removed. * gcc.target/loongarch/bytepick_combine.c: Removed. * gcc.target/loongarch/bytepick_shift_128.c: Removed. * gcc.target/loongarch/can_inline_1.c: Removed. * gcc.target/loongarch/can_inline_2.c: Removed. * gcc.target/loongarch/can_inline_3.c: Removed. * gcc.target/loongarch/can_inline_4.c: Removed. * gcc.target/loongarch/can_inline_5.c: Removed. * gcc.target/loongarch/can_inline_6.c: Removed. * gcc.target/loongarch/cmodel-extreme-1.c: Removed. * gcc.target/loongarch/cmodel-extreme-2.c: Removed. * gcc.target/loongarch/cmodel-func-attr-1.c: Removed. * gcc.target/loongarch/cmodel-pragma-attr-1.c: Removed. * gcc.target/loongarch/cmov_ii.c: Removed. * gcc.target/loongarch/compare-both-non-zero.c: Removed. * gcc.target/loongarch/conditional-move-opt-1.c: Removed. * gcc.target/loongarch/conditional-move-opt-2.c: Removed. * gcc.target/loongarch/conditional-move-opt-3.c: Removed. * gcc.target/loongarch/const-double-zero-stx.c: Removed. * gcc.target/loongarch/crc-sext.c: Removed. * gcc.target/loongarch/direct-extern-1.c: Removed. * gcc.target/loongarch/div-div32.c: Removed. * gcc.target/loongarch/div-no-div32.c: Removed. * gcc.target/loongarch/divf.c: Removed. * gcc.target/loongarch/explicit-relocs-auto-extreme-tls-desc.c: Removed. * gcc.target/loongarch/explicit-relocs-auto-lto.c: Removed. * gcc.target/loongarch/explicit-relocs-auto-single-load-store-2.c: Removed. * gcc.target/loongarch/explicit-relocs-auto-single-load-store-3.c: Removed. * gcc.target/loongarch/explicit-relocs-auto-single-load-store-no-anchor.c: Removed. * gcc.target/loongarch/explicit-relocs-auto-single-load-store.c: Removed. * gcc.target/loongarch/explicit-relocs-auto-tls-desc.c: Removed. * gcc.target/loongarch/explicit-relocs-auto-tls-ld-gd.c: Removed. * gcc.target/loongarch/explicit-relocs-auto-tls-le-ie.c: Removed. * gcc.target/loongarch/explicit-relocs-extreme-auto-tls-ld-gd.c: Removed. * gcc.target/loongarch/explicit-relocs-extreme-tls-desc.c: Removed. * gcc.target/loongarch/explicit-relocs-medium-auto-tls-ld-gd.c: Removed. * gcc.target/loongarch/explicit-relocs-medium-call36-auto-tls-ld-gd.c: Removed. * gcc.target/loongarch/explicit-relocs-tls-desc.c: Removed. * gcc.target/loongarch/extendsidi2-combine.c: Removed. * gcc.target/loongarch/fclass-compile.c: Removed. * gcc.target/loongarch/fclass-run.c: Removed. * gcc.target/loongarch/flogb.c: Removed. * gcc.target/loongarch/flt-abi-isa-1.c: Removed. * gcc.target/loongarch/flt-abi-isa-2.c: Removed. * gcc.target/loongarch/flt-abi-isa-3.c: Removed. * gcc.target/loongarch/flt-abi-isa-4.c: Removed. * gcc.target/loongarch/fnmam4-vec.c: Removed. * gcc.target/loongarch/frint.c: Removed. * gcc.target/loongarch/fscaleb.c: Removed. * gcc.target/loongarch/ftint-no-inexact.c: Removed. * gcc.target/loongarch/ftint.c: Removed. * gcc.target/loongarch/func-call-1.c: Removed. * gcc.target/loongarch/func-call-2.c: Removed. * gcc.target/loongarch/func-call-3.c: Removed. * gcc.target/loongarch/func-call-4.c: Removed. * gcc.target/loongarch/func-call-5.c: Removed. * gcc.target/loongarch/func-call-6.c: Removed. * gcc.target/loongarch/func-call-7.c: Removed. * gcc.target/loongarch/func-call-8.c: Removed. * gcc.target/loongarch/func-call-extreme-1.c: Removed. * gcc.target/loongarch/func-call-extreme-2.c: Removed. * gcc.target/loongarch/func-call-extreme-3.c: Removed. * gcc.target/loongarch/func-call-extreme-4.c: Removed. * gcc.target/loongarch/func-call-extreme-5.c: Removed. * gcc.target/loongarch/func-call-extreme-6.c: Removed. * gcc.target/loongarch/func-call-medium-1.c: Removed. * gcc.target/loongarch/func-call-medium-2.c: Removed. * gcc.target/loongarch/func-call-medium-3.c: Removed. * gcc.target/loongarch/func-call-medium-5.c: Removed. * gcc.target/loongarch/func-call-medium-6.c: Removed. * gcc.target/loongarch/func-call-medium-7.c: Removed. * gcc.target/loongarch/func-call-medium-8.c: Removed. * gcc.target/loongarch/func-call-medium-call36-1.c: Removed. * gcc.target/loongarch/func-call-medium-call36.c: Removed. * gcc.target/loongarch/imm-load.c: Removed. * gcc.target/loongarch/imm-load1.c: Removed. * gcc.target/loongarch/invariant-recip.c: Removed. * gcc.target/loongarch/larch-frecipe-builtin.c: Removed. * gcc.target/loongarch/larch-frecipe-intrinsic.c: Removed. * gcc.target/loongarch/lasx-andn-iorn.c: Removed. * gcc.target/loongarch/lasx-extract-even_odd-opt.c: Removed. * gcc.target/loongarch/lasx-func-attr-1.c: Removed. * gcc.target/loongarch/lasx-func-attr-2.c: Removed. * gcc.target/loongarch/lasx-pragma-attr-1.c: Removed. * gcc.target/loongarch/lasx-pragma-attr-2.c: Removed. * gcc.target/loongarch/lasx-reduc-1.c: Removed. * gcc.target/loongarch/lasx-xvpermi_q-opt.c: Removed. * gcc.target/loongarch/lsx-andn-iorn.c: Removed. * gcc.target/loongarch/lsx-func-attr-1.c: Removed. * gcc.target/loongarch/lsx-func-attr-2.c: Removed. * gcc.target/loongarch/lsx-pragma-attr-1.c: Removed. * gcc.target/loongarch/lsx-pragma-attr-2.c: Removed. * gcc.target/loongarch/math-float-128.c: Removed. * gcc.target/loongarch/mem-and-mask-opt.c: Removed. * gcc.target/loongarch/memcpy-vec-1.c: Removed. * gcc.target/loongarch/memcpy-vec-2.c: Removed. * gcc.target/loongarch/memcpy-vec-3.c: Removed. * gcc.target/loongarch/mode-tieable-opt.c: Removed. * gcc.target/loongarch/mov-zero-1.c: Removed. * gcc.target/loongarch/mov-zero-2.c: Removed. * gcc.target/loongarch/movcf2gr-via-fr.c: Removed. * gcc.target/loongarch/movcf2gr.c: Removed. * gcc.target/loongarch/mul-const-reduction.c: Removed. * gcc.target/loongarch/mulh_wu.c: Removed. * gcc.target/loongarch/mulw_d_w.c: Removed. * gcc.target/loongarch/mulw_d_wu.c: Removed. * gcc.target/loongarch/popcnt.c: Removed. * gcc.target/loongarch/popcount.c: Removed. * gcc.target/loongarch/pr109465-1.c: Removed. * gcc.target/loongarch/pr109465-2.c: Removed. * gcc.target/loongarch/pr109465-3.c: Removed. * gcc.target/loongarch/pr112476-1.c: Removed. * gcc.target/loongarch/pr112476-2.c: Removed. * gcc.target/loongarch/pr112476-3.c: Removed. * gcc.target/loongarch/pr112476-4.c: Removed. * gcc.target/loongarch/pr113033.c: Removed. * gcc.target/loongarch/pr113148.c: Removed. * gcc.target/loongarch/pr114861.c: Removed. * gcc.target/loongarch/pr118561.c: Removed. * gcc.target/loongarch/pr118828-2.c: Removed. * gcc.target/loongarch/pr118828-3.c: Removed. * gcc.target/loongarch/pr118828-4.c: Removed. * gcc.target/loongarch/pr118828.c: Removed. * gcc.target/loongarch/pr118843.c: Removed. * gcc.target/loongarch/pr119084.c: Removed. * gcc.target/loongarch/pr119127.c: Removed. * gcc.target/loongarch/pr121064.c: Removed. * gcc.target/loongarch/pr121542.c: Removed. * gcc.target/loongarch/pr121634.c: Removed. * gcc.target/loongarch/pr121875.c: Removed. * gcc.target/loongarch/pr122097.c: Removed. * gcc.target/loongarch/pragma-push-pop.c: Removed. * gcc.target/loongarch/prolog-opt.c: Removed. * gcc.target/loongarch/recip-divf.c: Removed. * gcc.target/loongarch/recip-sqrtf.c: Removed. * gcc.target/loongarch/relocs-symbol-noaddend.c: Removed. * gcc.target/loongarch/revb.c: Removed. * gcc.target/loongarch/rotl-with-rotr.c: Removed. * gcc.target/loongarch/rotl-with-vrotr-b.c: Removed. * gcc.target/loongarch/rotl-with-vrotr-d.c: Removed. * gcc.target/loongarch/rotl-with-vrotr-h.c: Removed. * gcc.target/loongarch/rotl-with-vrotr-w.c: Removed. * gcc.target/loongarch/rotl-with-xvrotr-b.c: Removed. * gcc.target/loongarch/rotl-with-xvrotr-d.c: Removed. * gcc.target/loongarch/rotl-with-xvrotr-h.c: Removed. * gcc.target/loongarch/rotl-with-xvrotr-w.c: Removed. * gcc.target/loongarch/rotrw.c: Removed. * gcc.target/loongarch/sad-lasx.c: Removed. * gcc.target/loongarch/sad-lsx.c: Removed. * gcc.target/loongarch/sign-extend-1.c: Removed. * gcc.target/loongarch/sign-extend-2.c: Removed. * gcc.target/loongarch/sign-extend-3.c: Removed. * gcc.target/loongarch/sign-extend-4.c: Removed. * gcc.target/loongarch/sign-extend-5.c: Removed. * gcc.target/loongarch/sign-extend-6.c: Removed. * gcc.target/loongarch/sign-extend-bitwise.c: Removed. * gcc.target/loongarch/sign_extend_ashift.c: Removed. * gcc.target/loongarch/slt-sign-extend.c: Removed. * gcc.target/loongarch/smuldi3_highpart.c: Removed. * gcc.target/loongarch/spill-less.c: Removed. * gcc.target/loongarch/sqrtf.c: Removed. * gcc.target/loongarch/strict-align.c: Removed. * gcc.target/loongarch/switch-qi.c: Removed. * gcc.target/loongarch/tls-extreme-macro.c: Removed. * gcc.target/loongarch/tls-gd-noplt.c: Removed. * gcc.target/loongarch/tls-ie-extreme.c: Removed. * gcc.target/loongarch/tls-ie-norelax.c: Removed. * gcc.target/loongarch/tls-ie-relax.c: Removed. * gcc.target/loongarch/tls-le-relax.c: Removed. * gcc.target/loongarch/vec_pack_unpack_128.c: Removed. * gcc.target/loongarch/vec_pack_unpack_256.c: Removed. * gcc.target/loongarch/vec_reduc_half.c: Removed. * gcc.target/loongarch/vect-extract.c: Removed. * gcc.target/loongarch/vect-frint-no-inexact.c: Removed. * gcc.target/loongarch/vect-frint-scalar-no-inexact.c: Removed. * gcc.target/loongarch/vect-frint-scalar.c: Removed. * gcc.target/loongarch/vect-frint.c: Removed. * gcc.target/loongarch/vect-ftint-no-inexact.c: Removed. * gcc.target/loongarch/vect-ftint.c: Removed. * gcc.target/loongarch/vect-ld-st-imm12.c: Removed. * gcc.target/loongarch/vect-muh.c: Removed. * gcc.target/loongarch/vect-rotr.c: Removed. * gcc.target/loongarch/vect-shift-imm-round.c: Removed. * gcc.target/loongarch/vect-shuf-fp.c: Removed. * gcc.target/loongarch/vect-slp-two-operator.c: Removed. * gcc.target/loongarch/vect-widen-add.c: Removed. * gcc.target/loongarch/vect-widen-mul.c: Removed. * gcc.target/loongarch/vect-widen-sub.c: Removed. * gcc.target/loongarch/vector-func-attr-1.c: Removed. * gcc.target/loongarch/vector-pragma-attr-1.c: Removed. * gcc.target/loongarch/vfcmp-d.c: Removed. * gcc.target/loongarch/vfcmp-f.c: Removed. * gcc.target/loongarch/vfmax-vfmin.c: Removed. * gcc.target/loongarch/vrepli.c: Removed. * gcc.target/loongarch/wide-mul-reduc-1.c: Removed. * gcc.target/loongarch/wide-mul-reduc-2.c: Removed. * gcc.target/loongarch/widen-mul-rtx-cost-signed.c: Removed. * gcc.target/loongarch/widen-mul-rtx-cost-unsigned.c: Removed. * gcc.target/loongarch/xorsign-run.c: Removed. * gcc.target/loongarch/xorsign.c: Removed. * gcc.target/loongarch/xvfcmp-d.c: Removed. * gcc.target/loongarch/xvfcmp-f.c: Removed. * gcc.target/loongarch/zero-size-field-pass.c: Removed. * gcc.target/loongarch/zero-size-field-ret.c: Removed. --- gcc/testsuite/g++.target/loongarch/bytepick.C | 2 +- gcc/testsuite/g++.target/loongarch/got-load.C | 2 +- gcc/testsuite/g++.target/loongarch/pr106828.C | 2 +- .../g++.target/loongarch/vect-ashr-lshr.C | 1 + gcc/testsuite/gcc.dg/ifcvt-4.c | 2 +- gcc/testsuite/gcc.dg/stack-usage-1.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c | 2 - gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c | 2 - gcc/testsuite/gcc.dg/tree-ssa/pr83403-1.c | 2 +- gcc/testsuite/gcc.dg/tree-ssa/pr83403-2.c | 2 +- gcc/testsuite/gcc.target/loongarch/abd-lasx.c | 67 ---- gcc/testsuite/gcc.target/loongarch/abd-lsx.c | 67 ---- .../gcc.target/loongarch/add-const.c | 45 --- .../gcc.target/loongarch/alsl-cost.c | 14 - gcc/testsuite/gcc.target/loongarch/alsl_wu.c | 9 - .../loongarch/and-large-immediate-opt.c | 14 - .../gcc.target/loongarch/arch-func-attr-1.c | 20 - .../gcc.target/loongarch/arch-pragma-attr-1.c | 7 - .../gcc.target/loongarch/attr-model-1.c | 6 - .../gcc.target/loongarch/attr-model-2.c | 6 - .../gcc.target/loongarch/attr-model-3.c | 6 - .../gcc.target/loongarch/attr-model-4.c | 6 - .../gcc.target/loongarch/attr-model-5.c | 8 - .../gcc.target/loongarch/attr-model-diag.c | 7 - .../gcc.target/loongarch/attr-model-test.c | 25 -- .../gcc.target/loongarch/avg-ceil-lasx.c | 22 -- .../gcc.target/loongarch/avg-ceil-lsx.c | 22 -- .../gcc.target/loongarch/avg-floor-lasx.c | 22 -- .../gcc.target/loongarch/avg-floor-lsx.c | 22 -- .../gcc.target/loongarch/bitint-alignments.c | 58 --- .../gcc.target/loongarch/bitint-args.c | 81 ---- .../gcc.target/loongarch/bitint-sizes.c | 60 --- .../loongarch/bitwise-shift-reassoc.c | 98 ----- .../gcc.target/loongarch/bitwise_extend.c | 45 --- .../gcc.target/loongarch/bstrins-1.c | 9 - .../gcc.target/loongarch/bstrins-2.c | 14 - .../gcc.target/loongarch/bstrins-3.c | 16 - .../gcc.target/loongarch/bstrins-4.c | 9 - .../loongarch/bstrpick_alsl_paired.c | 21 - .../gcc.target/loongarch/bytepick_combine.c | 11 - .../gcc.target/loongarch/bytepick_shift_128.c | 9 - .../gcc.target/loongarch/can_inline_1.c | 15 - .../gcc.target/loongarch/can_inline_2.c | 16 - .../gcc.target/loongarch/can_inline_3.c | 16 - .../gcc.target/loongarch/can_inline_4.c | 15 - .../gcc.target/loongarch/can_inline_5.c | 16 - .../gcc.target/loongarch/can_inline_6.c | 15 - .../gcc.target/loongarch/cmodel-extreme-1.c | 18 - .../gcc.target/loongarch/cmodel-extreme-2.c | 7 - .../gcc.target/loongarch/cmodel-func-attr-1.c | 21 - .../loongarch/cmodel-pragma-attr-1.c | 7 - gcc/testsuite/gcc.target/loongarch/cmov_ii.c | 15 - .../loongarch/compare-both-non-zero.c | 10 - .../loongarch/conditional-move-opt-1.c | 58 --- .../loongarch/conditional-move-opt-2.c | 42 -- .../loongarch/conditional-move-opt-3.c | 14 - .../loongarch/const-double-zero-stx.c | 18 - gcc/testsuite/gcc.target/loongarch/crc-sext.c | 13 - .../gcc.target/loongarch/direct-extern-1.c | 6 - .../gcc.target/loongarch/div-div32.c | 31 -- .../gcc.target/loongarch/div-no-div32.c | 11 - gcc/testsuite/gcc.target/loongarch/divf.c | 10 - .../explicit-relocs-auto-extreme-tls-desc.c | 10 - .../loongarch/explicit-relocs-auto-lto.c | 26 -- ...explicit-relocs-auto-single-load-store-2.c | 11 - ...explicit-relocs-auto-single-load-store-3.c | 18 - ...-relocs-auto-single-load-store-no-anchor.c | 6 - .../explicit-relocs-auto-single-load-store.c | 14 - .../loongarch/explicit-relocs-auto-tls-desc.c | 10 - .../explicit-relocs-auto-tls-ld-gd.c | 10 - .../explicit-relocs-auto-tls-le-ie.c | 6 - .../explicit-relocs-extreme-auto-tls-ld-gd.c | 5 - .../explicit-relocs-extreme-tls-desc.c | 16 - .../explicit-relocs-medium-auto-tls-ld-gd.c | 5 - ...icit-relocs-medium-call36-auto-tls-ld-gd.c | 5 - .../loongarch/explicit-relocs-tls-desc.c | 13 - .../loongarch/extendsidi2-combine.c | 13 - .../gcc.target/loongarch/fclass-compile.c | 23 -- .../gcc.target/loongarch/fclass-run.c | 53 --- .../gcc.target/loongarch/float-load.c | 1 + gcc/testsuite/gcc.target/loongarch/flogb.c | 18 - .../gcc.target/loongarch/flt-abi-isa-1.c | 14 - .../gcc.target/loongarch/flt-abi-isa-2.c | 10 - .../gcc.target/loongarch/flt-abi-isa-3.c | 9 - .../gcc.target/loongarch/flt-abi-isa-4.c | 10 - .../gcc.target/loongarch/fnmam4-vec.c | 14 - gcc/testsuite/gcc.target/loongarch/frint.c | 16 - gcc/testsuite/gcc.target/loongarch/fscaleb.c | 48 --- .../gcc.target/loongarch/ftint-no-inexact.c | 44 --- gcc/testsuite/gcc.target/loongarch/ftint.c | 44 --- .../gcc.target/loongarch/func-call-1.c | 32 -- .../gcc.target/loongarch/func-call-2.c | 32 -- .../gcc.target/loongarch/func-call-3.c | 32 -- .../gcc.target/loongarch/func-call-4.c | 32 -- .../gcc.target/loongarch/func-call-5.c | 33 -- .../gcc.target/loongarch/func-call-6.c | 33 -- .../gcc.target/loongarch/func-call-7.c | 34 -- .../gcc.target/loongarch/func-call-8.c | 33 -- .../loongarch/func-call-extreme-1.c | 34 -- .../loongarch/func-call-extreme-2.c | 7 - .../loongarch/func-call-extreme-3.c | 7 - .../loongarch/func-call-extreme-4.c | 7 - .../loongarch/func-call-extreme-5.c | 7 - .../loongarch/func-call-extreme-6.c | 7 - .../gcc.target/loongarch/func-call-medium-1.c | 41 -- .../gcc.target/loongarch/func-call-medium-2.c | 45 --- .../gcc.target/loongarch/func-call-medium-3.c | 54 --- .../gcc.target/loongarch/func-call-medium-5.c | 43 -- .../gcc.target/loongarch/func-call-medium-6.c | 43 -- .../gcc.target/loongarch/func-call-medium-7.c | 44 --- .../gcc.target/loongarch/func-call-medium-8.c | 44 --- .../loongarch/func-call-medium-call36-1.c | 21 - .../loongarch/func-call-medium-call36.c | 32 -- gcc/testsuite/gcc.target/loongarch/imm-load.c | 11 - .../gcc.target/loongarch/imm-load1.c | 27 -- .../gcc.target/loongarch/invariant-recip.c | 33 -- .../gcc.target/loongarch/larch-builtin.c | 72 ++-- .../loongarch/larch-frecipe-builtin.c | 28 -- .../loongarch/larch-frecipe-intrinsic.c | 30 -- .../gcc.target/loongarch/lasx-andn-iorn.c | 11 - .../loongarch/lasx-extract-even_odd-opt.c | 54 --- .../gcc.target/loongarch/lasx-func-attr-1.c | 19 - .../gcc.target/loongarch/lasx-func-attr-2.c | 12 - .../gcc.target/loongarch/lasx-pragma-attr-1.c | 7 - .../gcc.target/loongarch/lasx-pragma-attr-2.c | 12 - .../gcc.target/loongarch/lasx-reduc-1.c | 17 - .../gcc.target/loongarch/lasx-xvpermi_q-opt.c | 44 --- .../gcc.target/loongarch/lsx-andn-iorn.c | 28 -- .../gcc.target/loongarch/lsx-func-attr-1.c | 19 - .../gcc.target/loongarch/lsx-func-attr-2.c | 12 - .../gcc.target/loongarch/lsx-pragma-attr-1.c | 7 - .../gcc.target/loongarch/lsx-pragma-attr-2.c | 12 - .../gcc.target/loongarch/math-float-128.c | 81 ---- .../gcc.target/loongarch/mem-and-mask-opt.c | 23 -- .../gcc.target/loongarch/memcpy-vec-1.c | 11 - .../gcc.target/loongarch/memcpy-vec-2.c | 12 - .../gcc.target/loongarch/memcpy-vec-3.c | 6 - .../gcc.target/loongarch/mode-tieable-opt.c | 17 - .../gcc.target/loongarch/mov-zero-1.c | 15 - .../gcc.target/loongarch/mov-zero-2.c | 15 - .../gcc.target/loongarch/movcf2gr-via-fr.c | 10 - gcc/testsuite/gcc.target/loongarch/movcf2gr.c | 9 - .../loongarch/mul-const-reduction.c | 11 - gcc/testsuite/gcc.target/loongarch/mulh_wu.c | 10 - gcc/testsuite/gcc.target/loongarch/mulw_d_w.c | 10 - .../gcc.target/loongarch/mulw_d_wu.c | 9 - gcc/testsuite/gcc.target/loongarch/popcnt.c | 41 -- gcc/testsuite/gcc.target/loongarch/popcount.c | 17 - .../gcc.target/loongarch/pr109465-1.c | 9 - .../gcc.target/loongarch/pr109465-2.c | 9 - .../gcc.target/loongarch/pr109465-3.c | 12 - .../gcc.target/loongarch/pr112476-1.c | 24 -- .../gcc.target/loongarch/pr112476-2.c | 5 - .../gcc.target/loongarch/pr112476-3.c | 58 --- .../gcc.target/loongarch/pr112476-4.c | 4 - gcc/testsuite/gcc.target/loongarch/pr113033.c | 23 -- gcc/testsuite/gcc.target/loongarch/pr113148.c | 44 --- gcc/testsuite/gcc.target/loongarch/pr114861.c | 39 -- gcc/testsuite/gcc.target/loongarch/pr115752.c | 1 + gcc/testsuite/gcc.target/loongarch/pr118561.c | 9 - .../gcc.target/loongarch/pr118828-2.c | 30 -- .../gcc.target/loongarch/pr118828-3.c | 32 -- .../gcc.target/loongarch/pr118828-4.c | 32 -- gcc/testsuite/gcc.target/loongarch/pr118828.c | 34 -- gcc/testsuite/gcc.target/loongarch/pr118843.c | 6 - gcc/testsuite/gcc.target/loongarch/pr119084.c | 24 -- gcc/testsuite/gcc.target/loongarch/pr119127.c | 14 - gcc/testsuite/gcc.target/loongarch/pr121064.c | 38 -- gcc/testsuite/gcc.target/loongarch/pr121542.c | 54 --- gcc/testsuite/gcc.target/loongarch/pr121634.c | 15 - gcc/testsuite/gcc.target/loongarch/pr121875.c | 5 - gcc/testsuite/gcc.target/loongarch/pr122097.c | 271 ------------- .../gcc.target/loongarch/pragma-push-pop.c | 22 -- .../gcc.target/loongarch/prolog-opt.c | 15 - .../gcc.target/loongarch/recip-divf.c | 9 - .../gcc.target/loongarch/recip-sqrtf.c | 23 -- .../loongarch/relocs-symbol-noaddend.c | 23 -- gcc/testsuite/gcc.target/loongarch/revb.c | 61 --- .../gcc.target/loongarch/rotl-with-rotr.c | 9 - .../gcc.target/loongarch/rotl-with-vrotr-b.c | 7 - .../gcc.target/loongarch/rotl-with-vrotr-d.c | 7 - .../gcc.target/loongarch/rotl-with-vrotr-h.c | 7 - .../gcc.target/loongarch/rotl-with-vrotr-w.c | 28 -- .../gcc.target/loongarch/rotl-with-xvrotr-b.c | 7 - .../gcc.target/loongarch/rotl-with-xvrotr-d.c | 7 - .../gcc.target/loongarch/rotl-with-xvrotr-h.c | 7 - .../gcc.target/loongarch/rotl-with-xvrotr-w.c | 7 - gcc/testsuite/gcc.target/loongarch/rotrw.c | 17 - gcc/testsuite/gcc.target/loongarch/sad-lasx.c | 20 - gcc/testsuite/gcc.target/loongarch/sad-lsx.c | 20 - .../gcc.target/loongarch/sign-extend-1.c | 25 -- .../gcc.target/loongarch/sign-extend-2.c | 60 --- .../gcc.target/loongarch/sign-extend-3.c | 29 -- .../gcc.target/loongarch/sign-extend-4.c | 16 - .../gcc.target/loongarch/sign-extend-5.c | 35 -- .../gcc.target/loongarch/sign-extend-6.c | 17 - .../loongarch/sign-extend-bitwise.c | 21 - .../gcc.target/loongarch/sign_extend_ashift.c | 11 - .../gcc.target/loongarch/slt-sign-extend.c | 14 - .../gcc.target/loongarch/smuldi3_highpart.c | 13 - .../gcc.target/loongarch/spill-less.c | 14 - gcc/testsuite/gcc.target/loongarch/sqrtf.c | 24 -- .../gcc.target/loongarch/strict-align.c | 12 - .../gcc.target/loongarch/switch-qi.c | 16 - .../gcc.target/loongarch/tls-extreme-macro.c | 35 -- .../gcc.target/loongarch/tls-gd-noplt.c | 12 - .../gcc.target/loongarch/tls-ie-extreme.c | 5 - .../gcc.target/loongarch/tls-ie-norelax.c | 5 - .../gcc.target/loongarch/tls-ie-relax.c | 11 - .../gcc.target/loongarch/tls-le-relax.c | 12 - .../loongarch/vec_pack_unpack_128.c | 120 ------ .../loongarch/vec_pack_unpack_256.c | 124 ------ .../gcc.target/loongarch/vec_reduc_half.c | 10 - .../gcc.target/loongarch/vect-extract.c | 20 - .../loongarch/vect-frint-no-inexact.c | 48 --- .../loongarch/vect-frint-scalar-no-inexact.c | 23 -- .../gcc.target/loongarch/vect-frint-scalar.c | 43 -- .../gcc.target/loongarch/vect-frint.c | 85 ---- .../loongarch/vect-ftint-no-inexact.c | 43 -- .../gcc.target/loongarch/vect-ftint.c | 83 ---- .../gcc.target/loongarch/vect-ld-st-imm12.c | 15 - gcc/testsuite/gcc.target/loongarch/vect-muh.c | 36 -- .../gcc.target/loongarch/vect-rotr.c | 36 -- .../loongarch/vect-shift-imm-round.c | 11 - .../gcc.target/loongarch/vect-shuf-fp.c | 16 - .../loongarch/vect-slp-two-operator.c | 38 -- .../gcc.target/loongarch/vect-widen-add.c | 24 -- .../gcc.target/loongarch/vect-widen-mul.c | 24 -- .../gcc.target/loongarch/vect-widen-sub.c | 24 -- .../gcc.target/loongarch/vector-func-attr-1.c | 19 - .../loongarch/vector-pragma-attr-1.c | 7 - .../loongarch/vector/loongarch-vector.exp | 20 +- gcc/testsuite/gcc.target/loongarch/vfcmp-d.c | 188 --------- gcc/testsuite/gcc.target/loongarch/vfcmp-f.c | 373 ------------------ .../gcc.target/loongarch/vfmax-vfmin.c | 31 -- gcc/testsuite/gcc.target/loongarch/vrepli.c | 15 - .../gcc.target/loongarch/wide-mul-reduc-1.c | 18 - .../gcc.target/loongarch/wide-mul-reduc-2.c | 18 - .../loongarch/widen-mul-rtx-cost-signed.c | 12 - .../loongarch/widen-mul-rtx-cost-unsigned.c | 11 - .../gcc.target/loongarch/xorsign-run.c | 25 -- gcc/testsuite/gcc.target/loongarch/xorsign.c | 18 - gcc/testsuite/gcc.target/loongarch/xvfcmp-d.c | 189 --------- gcc/testsuite/gcc.target/loongarch/xvfcmp-f.c | 189 --------- .../loongarch/zero-size-field-pass.c | 30 -- .../loongarch/zero-size-field-ret.c | 28 -- gcc/testsuite/lib/target-supports.exp | 22 +- 247 files changed, 83 insertions(+), 6568 deletions(-) delete mode 100644 gcc/testsuite/gcc.target/loongarch/abd-lasx.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/abd-lsx.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/add-const.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/alsl-cost.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/alsl_wu.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/and-large-immediate-opt.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/arch-func-attr-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/arch-pragma-attr-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/attr-model-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/attr-model-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/attr-model-3.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/attr-model-4.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/attr-model-5.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/attr-model-diag.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/attr-model-test.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/avg-ceil-lasx.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/avg-ceil-lsx.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/avg-floor-lasx.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/avg-floor-lsx.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/bitint-alignments.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/bitint-args.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/bitint-sizes.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/bitwise-shift-reassoc.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/bitwise_extend.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/bstrins-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/bstrins-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/bstrins-3.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/bstrins-4.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/bstrpick_alsl_paired.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/bytepick_combine.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/bytepick_shift_128.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/can_inline_1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/can_inline_2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/can_inline_3.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/can_inline_4.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/can_inline_5.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/can_inline_6.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/cmodel-extreme-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/cmodel-extreme-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/cmodel-func-attr-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/cmodel-pragma-attr-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/cmov_ii.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/compare-both-non-zero.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/conditional-move-opt-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/conditional-move-opt-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/conditional-move-opt-3.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/const-double-zero-stx.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/crc-sext.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/direct-extern-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/div-div32.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/div-no-div32.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/divf.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-extreme-tls-desc.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-lto.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store-3.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store-no-anchor.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-desc.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-ld-gd.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-le-ie.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-extreme-auto-tls-ld-gd.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-extreme-tls-desc.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-medium-auto-tls-ld-gd.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-medium-call36-auto-tls-ld-gd.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/explicit-relocs-tls-desc.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/extendsidi2-combine.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/fclass-compile.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/fclass-run.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/flogb.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/flt-abi-isa-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/flt-abi-isa-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/flt-abi-isa-3.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/flt-abi-isa-4.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/fnmam4-vec.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/frint.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/fscaleb.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/ftint-no-inexact.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/ftint.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-3.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-4.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-5.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-6.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-7.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-8.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-extreme-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-extreme-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-extreme-3.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-extreme-4.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-extreme-5.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-extreme-6.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-medium-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-medium-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-medium-3.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-medium-5.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-medium-6.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-medium-7.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-medium-8.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-medium-call36-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/func-call-medium-call36.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/imm-load.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/imm-load1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/invariant-recip.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/larch-frecipe-builtin.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/larch-frecipe-intrinsic.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/lasx-andn-iorn.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/lasx-extract-even_odd-opt.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/lasx-func-attr-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/lasx-func-attr-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/lasx-pragma-attr-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/lasx-pragma-attr-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/lasx-reduc-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/lasx-xvpermi_q-opt.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/lsx-andn-iorn.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/lsx-func-attr-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/lsx-func-attr-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/lsx-pragma-attr-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/lsx-pragma-attr-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/math-float-128.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/mem-and-mask-opt.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/memcpy-vec-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/memcpy-vec-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/memcpy-vec-3.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/mode-tieable-opt.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/mov-zero-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/mov-zero-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/movcf2gr-via-fr.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/movcf2gr.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/mul-const-reduction.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/mulh_wu.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/mulw_d_w.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/mulw_d_wu.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/popcnt.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/popcount.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr109465-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr109465-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr109465-3.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr112476-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr112476-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr112476-3.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr112476-4.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr113033.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr113148.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr114861.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr118561.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr118828-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr118828-3.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr118828-4.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr118828.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr118843.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr119084.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr119127.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr121064.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr121542.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr121634.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr121875.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pr122097.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/pragma-push-pop.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/prolog-opt.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/recip-divf.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/recip-sqrtf.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/relocs-symbol-noaddend.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/revb.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/rotl-with-rotr.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/rotl-with-vrotr-b.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/rotl-with-vrotr-d.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/rotl-with-vrotr-h.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/rotl-with-vrotr-w.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/rotl-with-xvrotr-b.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/rotl-with-xvrotr-d.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/rotl-with-xvrotr-h.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/rotl-with-xvrotr-w.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/rotrw.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/sad-lasx.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/sad-lsx.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/sign-extend-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/sign-extend-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/sign-extend-3.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/sign-extend-4.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/sign-extend-5.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/sign-extend-6.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/sign-extend-bitwise.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/sign_extend_ashift.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/slt-sign-extend.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/smuldi3_highpart.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/spill-less.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/sqrtf.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/strict-align.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/switch-qi.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/tls-extreme-macro.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/tls-gd-noplt.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/tls-ie-extreme.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/tls-ie-norelax.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/tls-ie-relax.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/tls-le-relax.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vec_pack_unpack_128.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vec_pack_unpack_256.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vec_reduc_half.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vect-extract.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vect-frint-no-inexact.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vect-frint-scalar-no-inexact.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vect-frint-scalar.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vect-frint.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vect-ftint-no-inexact.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vect-ftint.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vect-ld-st-imm12.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vect-muh.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vect-rotr.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vect-shift-imm-round.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vect-shuf-fp.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vect-slp-two-operator.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vect-widen-add.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vect-widen-mul.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vect-widen-sub.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vector-func-attr-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vector-pragma-attr-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vfcmp-d.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vfcmp-f.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vfmax-vfmin.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/vrepli.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/wide-mul-reduc-1.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/wide-mul-reduc-2.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/widen-mul-rtx-cost-signed.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/widen-mul-rtx-cost-unsigned.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/xorsign-run.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/xorsign.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/xvfcmp-d.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/xvfcmp-f.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/zero-size-field-pass.c delete mode 100644 gcc/testsuite/gcc.target/loongarch/zero-size-field-ret.c diff --git a/gcc/testsuite/g++.target/loongarch/bytepick.C b/gcc/testsuite/g++.target/loongarch/bytepick.C index a39e2fa65b7e..8a3e54d42f91 100644 --- a/gcc/testsuite/g++.target/loongarch/bytepick.C +++ b/gcc/testsuite/g++.target/loongarch/bytepick.C @@ -1,4 +1,4 @@ -/* { dg-do compile } */ +/* { dg-do compile { target { loongarch64*-*-* } } } */ /* { dg-options "-O2 -mabi=lp64d" } */ /* { dg-final { scan-assembler-times "bytepick.w\t\\\$r4,\\\$r5,\\\$r4" 3 } } */ /* { dg-final { scan-assembler-times "bytepick.d\t\\\$r4,\\\$r5,\\\$r4" 7 } } */ diff --git a/gcc/testsuite/g++.target/loongarch/got-load.C b/gcc/testsuite/g++.target/loongarch/got-load.C index 17870176ab48..170cc024fac6 100644 --- a/gcc/testsuite/g++.target/loongarch/got-load.C +++ b/gcc/testsuite/g++.target/loongarch/got-load.C @@ -1,4 +1,4 @@ -/* { dg-do compile } */ +/* { dg-do compile { target { loongarch64*-*-* } } } */ /* { dg-options "-mabi=lp64d -O2 -mexplicit-relocs -mcmodel=normal -fdump-rtl-expand -fno-stack-protector" } */ /* { dg-final { scan-rtl-dump-times "mem/u" 2 "expand" } } */ diff --git a/gcc/testsuite/g++.target/loongarch/pr106828.C b/gcc/testsuite/g++.target/loongarch/pr106828.C index 0d13cbbd5153..7a770ec559e5 100644 --- a/gcc/testsuite/g++.target/loongarch/pr106828.C +++ b/gcc/testsuite/g++.target/loongarch/pr106828.C @@ -1,4 +1,4 @@ -/* { dg-do preprocess } */ +/* { dg-do preprocess { target { loongarch64*-*-* } } } */ /* { dg-options "-mabi=lp64d -fsanitize=address" } */ /* Tests whether the compiler supports compile option '-fsanitize=address'. */ diff --git a/gcc/testsuite/g++.target/loongarch/vect-ashr-lshr.C b/gcc/testsuite/g++.target/loongarch/vect-ashr-lshr.C index bcef985fae2e..f0ceb4db2557 100644 --- a/gcc/testsuite/g++.target/loongarch/vect-ashr-lshr.C +++ b/gcc/testsuite/g++.target/loongarch/vect-ashr-lshr.C @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-mlasx -O2" } */ +/* { dg-require-effective-target loongarch_asx } */ /* { dg-final { scan-assembler-times "vsrli.b" 2 } } */ /* { dg-final { scan-assembler-times "vsrli.h" 2 } } */ /* { dg-final { scan-assembler-times "vsrli.w" 2 } } */ diff --git a/gcc/testsuite/gcc.dg/ifcvt-4.c b/gcc/testsuite/gcc.dg/ifcvt-4.c index 2739a8a925b6..485352df6e60 100644 --- a/gcc/testsuite/gcc.dg/ifcvt-4.c +++ b/gcc/testsuite/gcc.dg/ifcvt-4.c @@ -2,7 +2,7 @@ /* { dg-additional-options "-misel" { target { powerpc*-*-* } } } */ /* { dg-additional-options "-march=z196" { target { s390x-*-* } } } */ /* { dg-additional-options "-mtune-ctrl=^one_if_conv_insn" { target { i?86-*-* x86_64-*-* } } } */ -/* { dg-skip-if "Multiple set if-conversion not guaranteed on all subtargets" { "arm*-*-* avr-*-* cris-*-* hppa*64*-*-* visium-*-*" riscv*-*-* msp430-*-* pru-*-* } } */ +/* { dg-skip-if "Multiple set if-conversion not guaranteed on all subtargets" { "arm*-*-* avr-*-* cris-*-* hppa*64*-*-* visium-*-*" riscv*-*-* msp430-*-* pru-*-* loongarch32-*-* } } */ /* { dg-skip-if "" { { sparc*-*-* } && { ! sparc_v9 } } } */ /* { dg-skip-if "" { "s390x-*-*" } { "-m31" } } */ diff --git a/gcc/testsuite/gcc.dg/stack-usage-1.c b/gcc/testsuite/gcc.dg/stack-usage-1.c index 6b1981391e34..8714c57c197b 100644 --- a/gcc/testsuite/gcc.dg/stack-usage-1.c +++ b/gcc/testsuite/gcc.dg/stack-usage-1.c @@ -103,7 +103,7 @@ # define SIZE 252 #elif defined (__CRIS__) # define SIZE 252 -#elif defined (__loongarch_lp64) +#elif defined (__loongarch__) # define SIZE 240 /* 256 - 8 bytes for $fp, and 8 bytes for a temp value */ #else # define SIZE 256 diff --git a/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c b/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c index 00fc8f01991c..15042fc6ddf6 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c @@ -1,8 +1,6 @@ /* { dg-do run { target vect_cmdline_needed } } */ -/* { dg-do compile { target { loongarch_sx && {! loongarch_sx_hw } } } } */ /* { dg-options "-O2 -fno-tree-loop-distribute-patterns -ftree-vectorize -fdump-tree-vect-details -fvect-cost-model=dynamic" } */ /* { dg-additional-options "-mno-sse" { target { i?86-*-* x86_64-*-* } } } */ -/* { dg-additional-options "-mlsx" { target { loongarch*-*-* } } } */ #include diff --git a/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c b/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c index 99d5e6231ff0..94709661953c 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c @@ -1,8 +1,6 @@ /* { dg-do run { target vect_cmdline_needed } } */ -/* { dg-do compile { target { loongarch_sx && {! loongarch_sx_hw } } } } */ /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-details -fvect-cost-model=dynamic" } */ /* { dg-options "-O2 -ftree-vectorize -fdump-tree-vect-details -fvect-cost-model=dynamic -mno-sse" { target { i?86-*-* x86_64-*-* } } } */ -/* { dg-additional-options "-mlsx" { target { loongarch*-*-* } } } */ #include diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr83403-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pr83403-1.c index 64f2bbc76fee..84646b07cab9 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/pr83403-1.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr83403-1.c @@ -1,7 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O3 -funroll-loops -fdump-tree-lim2-details" } */ /* { dg-additional-options "--param max-completely-peeled-insns=200" { target { s390*-*-* } } } */ -/* { dg-additional-options "--param max-completely-peeled-insns=300" { target { arm*-*-* cris-*-* m68k*-*-* } } } */ +/* { dg-additional-options "--param max-completely-peeled-insns=300" { target { arm*-*-* cris-*-* loongarch32-*-* m68k*-*-* } } } */ #define TYPE unsigned int diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr83403-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pr83403-2.c index 3f520720ca2f..7c830353ea18 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/pr83403-2.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr83403-2.c @@ -1,7 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O3 -funroll-loops -fdump-tree-lim2-details" } */ /* { dg-additional-options "--param max-completely-peeled-insns=200" { target { s390*-*-* } } } */ -/* { dg-additional-options "--param max-completely-peeled-insns=300" { target { arm*-*-* cris-*-* m68k*-*-* } } } */ +/* { dg-additional-options "--param max-completely-peeled-insns=300" { target { arm*-*-* cris-*-* loongarch32*-*-* m68k*-*-* } } } */ #define TYPE int diff --git a/gcc/testsuite/gcc.target/loongarch/abd-lasx.c b/gcc/testsuite/gcc.target/loongarch/abd-lasx.c deleted file mode 100644 index 0cb639b969a0..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/abd-lasx.c +++ /dev/null @@ -1,67 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -mlasx -fdump-rtl-expand-all" } */ - -#define ABD(x, y) ((x - y > 0) ? (x - y) : -(x - y)) -#define MAX(x, y) ((x) > (y) ? (x) : (y)) -#define MIN(x, y) ((x) < (y) ? (x) : (y)) -#define N 1024 - -#define FUNC1(T) \ - void \ - sabd1_##T (signed T *restrict a, signed T *restrict b, \ - signed T *restrict out) \ - { \ - for (int i = 0; i < N; i++) \ - out[i] = ABD (a[i], b[i]); \ - } \ - \ - void \ - uabd1_##T (unsigned T *restrict a, unsigned T *restrict b, \ - unsigned T *restrict out) \ - { \ - for (int i = 0; i < N; i++) \ - out[i] = ABD (a[i], b[i]); \ - } - -#define FUNC2(T) \ - void \ - sabd2_##T (signed T *restrict a, signed T *restrict b, \ - signed T *restrict out) \ - { \ - for (int i = 0; i < N; i++) \ - out[i] = MAX (a[i], b[i]) - MIN (a[i], b[i]); \ - } \ - \ - void \ - uabd2_##T (unsigned T *restrict a, unsigned T *restrict b, \ - unsigned T *restrict out) \ - { \ - for (int i = 0; i < N; i++) \ - out[i] = MAX (a[i], b[i]) - MIN (a[i], b[i]); \ - } - -/* Verify if the expand pass fits standard pattern name. */ -FUNC1 (char) -FUNC1 (short) -FUNC1 (int) -FUNC1 (long) - -/* Verify if the combiner works well. */ -FUNC2 (char) -FUNC2 (short) -FUNC2 (int) -FUNC2 (long) -/* { dg-final { scan-rtl-dump "Function sabd1_char.*ABD.*Function uabd1_char" "expand" } } */ -/* { dg-final { scan-rtl-dump "Function uabd1_char.*ABD.*Function sabd1_short" "expand" } } */ -/* { dg-final { scan-rtl-dump "Function sabd1_short.*ABD.*Function uabd1_short" "expand" } } */ -/* { dg-final { scan-rtl-dump "Function uabd1_short.*ABD.*Function sabd1_int" "expand" } } */ -/* { dg-final { scan-rtl-dump "Function sabd1_int.*ABD.*Function uabd1_int" "expand" } } */ -/* { dg-final { scan-rtl-dump "Function sabd1_long.*ABD.*Function uabd1_long" "expand" } } */ -/* { dg-final { scan-assembler-times "sabd2_char:.*\txvabsd\\.b.*-sabd2_char" 1 } } */ -/* { dg-final { scan-assembler-times "uabd2_char:.*\txvabsd\\.bu.*-uabd2_char" 1 } } */ -/* { dg-final { scan-assembler-times "sabd2_short:.*\txvabsd\\.h.*-sabd2_short" 1 } } */ -/* { dg-final { scan-assembler-times "uabd2_short:.*\txvabsd\\.hu.*-uabd2_short" 1 } } */ -/* { dg-final { scan-assembler-times "sabd2_int:.*\txvabsd\\.w.*-sabd2_int" 1 } } */ -/* { dg-final { scan-assembler-times "uabd2_int:.*\txvabsd\\.wu.*-uabd2_int" 1 } } */ -/* { dg-final { scan-assembler-times "sabd2_long:.*\txvabsd\\.d.*-sabd2_long" 1 } } */ -/* { dg-final { scan-assembler-times "uabd2_long:.*\txvabsd\\.du.*-uabd2_long" 1 } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/abd-lsx.c b/gcc/testsuite/gcc.target/loongarch/abd-lsx.c deleted file mode 100644 index c036888e3e4a..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/abd-lsx.c +++ /dev/null @@ -1,67 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -mlsx -fdump-rtl-expand-all" } */ - -#define ABD(x, y) ((x - y > 0) ? (x - y) : -(x - y)) -#define MAX(x, y) ((x) > (y) ? (x) : (y)) -#define MIN(x, y) ((x) < (y) ? (x) : (y)) -#define N 1024 - -#define FUNC1(T) \ - void \ - sabd1_##T (signed T *restrict a, signed T *restrict b, \ - signed T *restrict out) \ - { \ - for (int i = 0; i < N; i++) \ - out[i] = ABD (a[i], b[i]); \ - } \ - \ - void \ - uabd1_##T (unsigned T *restrict a, unsigned T *restrict b, \ - unsigned T *restrict out) \ - { \ - for (int i = 0; i < N; i++) \ - out[i] = ABD (a[i], b[i]); \ - } - -#define FUNC2(T) \ - void \ - sabd2_##T (signed T *restrict a, signed T *restrict b, \ - signed T *restrict out) \ - { \ - for (int i = 0; i < N; i++) \ - out[i] = MAX (a[i], b[i]) - MIN (a[i], b[i]); \ - } \ - \ - void \ - uabd2_##T (unsigned T *restrict a, unsigned T *restrict b, \ - unsigned T *restrict out) \ - { \ - for (int i = 0; i < N; i++) \ - out[i] = MAX (a[i], b[i]) - MIN (a[i], b[i]); \ - } - -/* Verify if the expand pass fits standard pattern name. */ -FUNC1 (char) -FUNC1 (short) -FUNC1 (int) -FUNC1 (long) - -/* Verify if the combiner works well. */ -FUNC2 (char) -FUNC2 (short) -FUNC2 (int) -FUNC2 (long) -/* { dg-final { scan-rtl-dump "Function sabd1_char.*ABD.*Function uabd1_char" "expand" } } */ -/* { dg-final { scan-rtl-dump "Function uabd1_char.*ABD.*Function sabd1_short" "expand" } } */ -/* { dg-final { scan-rtl-dump "Function sabd1_short.*ABD.*Function uabd1_short" "expand" } } */ -/* { dg-final { scan-rtl-dump "Function uabd1_short.*ABD.*Function sabd1_int" "expand" } } */ -/* { dg-final { scan-rtl-dump "Function sabd1_int.*ABD.*Function uabd1_int" "expand" } } */ -/* { dg-final { scan-rtl-dump "Function sabd1_long.*ABD.*Function uabd1_long" "expand" } } */ -/* { dg-final { scan-assembler-times "sabd2_char:.*\tvabsd\\.b.*-sabd2_char" 1 } } */ -/* { dg-final { scan-assembler-times "uabd2_char:.*\tvabsd\\.bu.*-uabd2_char" 1 } } */ -/* { dg-final { scan-assembler-times "sabd2_short:.*\tvabsd\\.h.*-sabd2_short" 1 } } */ -/* { dg-final { scan-assembler-times "uabd2_short:.*\tvabsd\\.hu.*-uabd2_short" 1 } } */ -/* { dg-final { scan-assembler-times "sabd2_int:.*\tvabsd\\.w.*-sabd2_int" 1 } } */ -/* { dg-final { scan-assembler-times "uabd2_int:.*\tvabsd\\.wu.*-uabd2_int" 1 } } */ -/* { dg-final { scan-assembler-times "sabd2_long:.*\tvabsd\\.d.*-sabd2_long" 1 } } */ -/* { dg-final { scan-assembler-times "uabd2_long:.*\tvabsd\\.du.*-uabd2_long" 1 } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/add-const.c b/gcc/testsuite/gcc.target/loongarch/add-const.c deleted file mode 100644 index 7b6a7cb92aa9..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/add-const.c +++ /dev/null @@ -1,45 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O -mabi=lp64d" } */ - -/* None of these functions should load the const operand into a temp - register. */ - -/* { dg-final { scan-assembler-not "add\\.[dw]" } } */ - -unsigned long f01 (unsigned long x) { return x + 1; } -unsigned long f02 (unsigned long x) { return x - 1; } -unsigned long f03 (unsigned long x) { return x + 2047; } -unsigned long f04 (unsigned long x) { return x + 4094; } -unsigned long f05 (unsigned long x) { return x - 2048; } -unsigned long f06 (unsigned long x) { return x - 4096; } -unsigned long f07 (unsigned long x) { return x + 0x7fff0000; } -unsigned long f08 (unsigned long x) { return x - 0x80000000l; } -unsigned long f09 (unsigned long x) { return x + 0x7fff0000l * 2; } -unsigned long f10 (unsigned long x) { return x - 0x80000000l * 2; } -unsigned long f11 (unsigned long x) { return x + 0x7fff0000 + 0x1; } -unsigned long f12 (unsigned long x) { return x + 0x7fff0000 - 0x1; } -unsigned long f13 (unsigned long x) { return x + 0x7fff0000 + 0x7ff; } -unsigned long f14 (unsigned long x) { return x + 0x7fff0000 - 0x800; } -unsigned long f15 (unsigned long x) { return x - 0x80000000l - 1; } -unsigned long f16 (unsigned long x) { return x - 0x80000000l + 1; } -unsigned long f17 (unsigned long x) { return x - 0x80000000l - 0x800; } -unsigned long f18 (unsigned long x) { return x - 0x80000000l + 0x7ff; } - -unsigned int g01 (unsigned int x) { return x + 1; } -unsigned int g02 (unsigned int x) { return x - 1; } -unsigned int g03 (unsigned int x) { return x + 2047; } -unsigned int g04 (unsigned int x) { return x + 4094; } -unsigned int g05 (unsigned int x) { return x - 2048; } -unsigned int g06 (unsigned int x) { return x - 4096; } -unsigned int g07 (unsigned int x) { return x + 0x7fff0000; } -unsigned int g08 (unsigned int x) { return x - 0x80000000l; } -unsigned int g09 (unsigned int x) { return x + 0x7fff0000l * 2; } -unsigned int g10 (unsigned int x) { return x - 0x80000000l * 2; } -unsigned int g11 (unsigned int x) { return x + 0x7fff0000 + 0x1; } -unsigned int g12 (unsigned int x) { return x + 0x7fff0000 - 0x1; } -unsigned int g13 (unsigned int x) { return x + 0x7fff0000 + 0x7ff; } -unsigned int g14 (unsigned int x) { return x + 0x7fff0000 - 0x800; } -unsigned int g15 (unsigned int x) { return x - 0x80000000l - 1; } -unsigned int g16 (unsigned int x) { return x - 0x80000000l + 1; } -unsigned int g17 (unsigned int x) { return x - 0x80000000l - 0x800; } -unsigned int g18 (unsigned int x) { return x - 0x80000000l + 0x7ff; } diff --git a/gcc/testsuite/gcc.target/loongarch/alsl-cost.c b/gcc/testsuite/gcc.target/loongarch/alsl-cost.c deleted file mode 100644 index a182279015c4..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/alsl-cost.c +++ /dev/null @@ -1,14 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mtune=loongarch64" } */ -/* { dg-final { scan-assembler-times "alsl\\\.\[wd\]" 2 } } */ - -struct P -{ - long a, b; -}; - -struct P -t (struct P x, long n) -{ - return (struct P){.a = x.a + n * 8, .b = x.b + n * 8}; -} diff --git a/gcc/testsuite/gcc.target/loongarch/alsl_wu.c b/gcc/testsuite/gcc.target/loongarch/alsl_wu.c deleted file mode 100644 index 65f55e629ddb..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/alsl_wu.c +++ /dev/null @@ -1,9 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=loongarch64 -mabi=lp64d -O2" } */ -/* { dg-final { scan-assembler "alsl\\.wu" } } */ - -unsigned long -test (unsigned int a, unsigned int b) -{ - return (a << 2) + b; -} diff --git a/gcc/testsuite/gcc.target/loongarch/and-large-immediate-opt.c b/gcc/testsuite/gcc.target/loongarch/and-large-immediate-opt.c deleted file mode 100644 index 921bef67fc26..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/and-large-immediate-opt.c +++ /dev/null @@ -1,14 +0,0 @@ -/* { dg-do compile { target { loongarch64*-*-* } } } */ -/* { dg-options "-O3" } */ -/* { dg-final { scan-assembler-not "\tlu12i.w" } } */ -/* { dg-final { scan-assembler-not "\tori" } } */ -/* { dg-final { scan-assembler-not "\tlu52i.d" } } */ -/* { dg-final { scan-assembler-not "\tand" } } */ -/* { dg-final { scan-assembler "\tbstrpick.d" } } */ -/* { dg-final { scan-assembler "\tbstrins.d" } } */ - -long -test (long a) -{ - return a & 0x3fffffffefffffff; -} diff --git a/gcc/testsuite/gcc.target/loongarch/arch-func-attr-1.c b/gcc/testsuite/gcc.target/loongarch/arch-func-attr-1.c deleted file mode 100644 index b8e51e6d9e19..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/arch-func-attr-1.c +++ /dev/null @@ -1,20 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mno-lsx -std=gnu11" } */ - -extern char a[64]; -extern char b[64]; - -#ifndef TEST_TARGET_PRAGMA -__attribute__ ((target ("arch=la64v1.1"))) -#else -#pragma GCC target ("arch=la64v1.1") -#endif -void -test (void) -{ - for (int i = 0; i < 64; i++) - a[i] = b[i]; -} - - -/* { dg-final { scan-assembler "vld" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/arch-pragma-attr-1.c b/gcc/testsuite/gcc.target/loongarch/arch-pragma-attr-1.c deleted file mode 100644 index bd918e709269..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/arch-pragma-attr-1.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mno-lsx -std=gnu11" } */ - -#define TEST_TARGET_PRAGMA 1 -#include "./arch-func-attr-1.c" - -/* { dg-final { scan-assembler "vld" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/attr-model-1.c b/gcc/testsuite/gcc.target/loongarch/attr-model-1.c deleted file mode 100644 index 916d715b98b4..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/attr-model-1.c +++ /dev/null @@ -1,6 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mexplicit-relocs -mcmodel=normal -O2" } */ -/* { dg-final { scan-assembler-times "%pc64_hi12" 2 } } */ - -#define ATTR_MODEL_TEST -#include "attr-model-test.c" diff --git a/gcc/testsuite/gcc.target/loongarch/attr-model-2.c b/gcc/testsuite/gcc.target/loongarch/attr-model-2.c deleted file mode 100644 index a74c795ac3e0..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/attr-model-2.c +++ /dev/null @@ -1,6 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mexplicit-relocs -mcmodel=extreme -O2" } */ -/* { dg-final { scan-assembler-times "%pc64_hi12" 3 } } */ - -#define ATTR_MODEL_TEST -#include "attr-model-test.c" diff --git a/gcc/testsuite/gcc.target/loongarch/attr-model-3.c b/gcc/testsuite/gcc.target/loongarch/attr-model-3.c deleted file mode 100644 index 5622d5086780..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/attr-model-3.c +++ /dev/null @@ -1,6 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mexplicit-relocs=auto -mcmodel=normal -O2" } */ -/* { dg-final { scan-assembler-times "%pc64_hi12" 2 } } */ - -#define ATTR_MODEL_TEST -#include "attr-model-test.c" diff --git a/gcc/testsuite/gcc.target/loongarch/attr-model-4.c b/gcc/testsuite/gcc.target/loongarch/attr-model-4.c deleted file mode 100644 index 482724bb9743..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/attr-model-4.c +++ /dev/null @@ -1,6 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mexplicit-relocs=auto -mcmodel=extreme -O2" } */ -/* { dg-final { scan-assembler-times "%pc64_hi12" 3 } } */ - -#define ATTR_MODEL_TEST -#include "attr-model-test.c" diff --git a/gcc/testsuite/gcc.target/loongarch/attr-model-5.c b/gcc/testsuite/gcc.target/loongarch/attr-model-5.c deleted file mode 100644 index 5f2c3ec9e449..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/attr-model-5.c +++ /dev/null @@ -1,8 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mexplicit-relocs=none -mcmodel=extreme -O2 -fno-pic" } */ -/* { dg-final { scan-assembler "la.local\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,x" } } */ -/* { dg-final { scan-assembler "la.local\t\\\$r\[0-9\]+,y" } } */ -/* { dg-final { scan-assembler "la.local\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,counter" } } */ - -#define ATTR_MODEL_TEST -#include "attr-model-test.c" diff --git a/gcc/testsuite/gcc.target/loongarch/attr-model-diag.c b/gcc/testsuite/gcc.target/loongarch/attr-model-diag.c deleted file mode 100644 index 88beede74df2..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/attr-model-diag.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mexplicit-relocs" } */ - -__thread int x __attribute__((model("extreme"))); /* { dg-error "attribute cannot be specified for thread-local variables" } */ -register int y __asm__("tp") __attribute__((model("extreme"))); /* { dg-error "attribute cannot be specified for register variables" } */ -int z __attribute__((model(114))); /* { dg-error "invalid argument" } */ -int t __attribute__((model("good"))); /* { dg-error "invalid argument" } */ diff --git a/gcc/testsuite/gcc.target/loongarch/attr-model-test.c b/gcc/testsuite/gcc.target/loongarch/attr-model-test.c deleted file mode 100644 index 5b61a7af9c35..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/attr-model-test.c +++ /dev/null @@ -1,25 +0,0 @@ -#ifdef ATTR_MODEL_TEST -int x __attribute__((model("extreme"))); -int y __attribute__((model("normal"))); -int z; - -int -test(void) -{ - return x + y + z; -} - -/* The following will be used for kernel per-cpu storage implemention. */ - -register char *per_cpu_base __asm__("r21"); -static int counter __attribute__((section(".data..percpu"), model("extreme"))); - -void -inc_counter(void) -{ - int *ptr = (int *)(per_cpu_base + (long)&counter); - (*ptr)++; -} -#endif - -int dummy; diff --git a/gcc/testsuite/gcc.target/loongarch/avg-ceil-lasx.c b/gcc/testsuite/gcc.target/loongarch/avg-ceil-lasx.c deleted file mode 100644 index 16db7bf72374..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/avg-ceil-lasx.c +++ /dev/null @@ -1,22 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -mlasx" } */ -/* { dg-final { scan-assembler "xvavgr.b" } } */ -/* { dg-final { scan-assembler "xvavgr.bu" } } */ -/* { dg-final { scan-assembler "xvavgr.hu" } } */ -/* { dg-final { scan-assembler "xvavgr.h" } } */ - -#define N 1024 - -#define TEST(TYPE, NAME) \ - TYPE a_##NAME[N], b_##NAME[N], c_##NAME[N]; \ - void f_##NAME (void) \ - { \ - int i; \ - for (i = 0; i < N; i++) \ - a_##NAME[i] = (b_##NAME[i] + c_##NAME[i] + 1) >> 1; \ - } - -TEST(char, 1); -TEST(short, 2); -TEST(unsigned char, 3); -TEST(unsigned short, 4); diff --git a/gcc/testsuite/gcc.target/loongarch/avg-ceil-lsx.c b/gcc/testsuite/gcc.target/loongarch/avg-ceil-lsx.c deleted file mode 100644 index 94119c23b937..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/avg-ceil-lsx.c +++ /dev/null @@ -1,22 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -mlsx" } */ -/* { dg-final { scan-assembler "vavgr.b" } } */ -/* { dg-final { scan-assembler "vavgr.bu" } } */ -/* { dg-final { scan-assembler "vavgr.hu" } } */ -/* { dg-final { scan-assembler "vavgr.h" } } */ - -#define N 1024 - -#define TEST(TYPE, NAME) \ - TYPE a_##NAME[N], b_##NAME[N], c_##NAME[N]; \ - void f_##NAME (void) \ - { \ - int i; \ - for (i = 0; i < N; i++) \ - a_##NAME[i] = (b_##NAME[i] + c_##NAME[i] + 1) >> 1; \ - } - -TEST(char, 1); -TEST(short, 2); -TEST(unsigned char, 3); -TEST(unsigned short, 4); diff --git a/gcc/testsuite/gcc.target/loongarch/avg-floor-lasx.c b/gcc/testsuite/gcc.target/loongarch/avg-floor-lasx.c deleted file mode 100644 index da6896531b91..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/avg-floor-lasx.c +++ /dev/null @@ -1,22 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -mlasx" } */ -/* { dg-final { scan-assembler "xvavg.b" } } */ -/* { dg-final { scan-assembler "xvavg.bu" } } */ -/* { dg-final { scan-assembler "xvavg.hu" } } */ -/* { dg-final { scan-assembler "xvavg.h" } } */ - -#define N 1024 - -#define TEST(TYPE, NAME) \ - TYPE a_##NAME[N], b_##NAME[N], c_##NAME[N]; \ - void f_##NAME (void) \ - { \ - int i; \ - for (i = 0; i < N; i++) \ - a_##NAME[i] = (b_##NAME[i] + c_##NAME[i]) >> 1; \ - } - -TEST(char, 1); -TEST(short, 2); -TEST(unsigned char, 3); -TEST(unsigned short, 4); diff --git a/gcc/testsuite/gcc.target/loongarch/avg-floor-lsx.c b/gcc/testsuite/gcc.target/loongarch/avg-floor-lsx.c deleted file mode 100644 index bbb9db527a33..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/avg-floor-lsx.c +++ /dev/null @@ -1,22 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -mlsx" } */ -/* { dg-final { scan-assembler "vavg.b" } } */ -/* { dg-final { scan-assembler "vavg.bu" } } */ -/* { dg-final { scan-assembler "vavg.hu" } } */ -/* { dg-final { scan-assembler "vavg.h" } } */ - -#define N 1024 - -#define TEST(TYPE, NAME) \ - TYPE a_##NAME[N], b_##NAME[N], c_##NAME[N]; \ - void f_##NAME (void) \ - { \ - int i; \ - for (i = 0; i < N; i++) \ - a_##NAME[i] = (b_##NAME[i] + c_##NAME[i]) >> 1; \ - } - -TEST(char, 1); -TEST(short, 2); -TEST(unsigned char, 3); -TEST(unsigned short, 4); diff --git a/gcc/testsuite/gcc.target/loongarch/bitint-alignments.c b/gcc/testsuite/gcc.target/loongarch/bitint-alignments.c deleted file mode 100644 index 8592279b038b..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/bitint-alignments.c +++ /dev/null @@ -1,58 +0,0 @@ -/* { dg-do run { target bitint } } */ -/* { dg-additional-options "-std=c23" } */ - -static long unsigned int -calc_alignof (int n) -{ - if (n > 64) - return alignof(__int128_t); - if (n > 32) - return alignof(long long); - if (n > 16) - return alignof(int); - if (n > 8) - return alignof(short); - else - return alignof(char); -} - -#define CHECK_ALIGNMENT(N) \ - if (alignof(_BitInt(N)) != calc_alignof(N)) \ - __builtin_abort (); - -int main (void) -{ - CHECK_ALIGNMENT(2); - CHECK_ALIGNMENT(3); - CHECK_ALIGNMENT(7); - CHECK_ALIGNMENT(8); - CHECK_ALIGNMENT(9); - CHECK_ALIGNMENT(13); - CHECK_ALIGNMENT(15); - CHECK_ALIGNMENT(16); - CHECK_ALIGNMENT(17); - CHECK_ALIGNMENT(24); - CHECK_ALIGNMENT(31); - CHECK_ALIGNMENT(32); - CHECK_ALIGNMENT(33); - CHECK_ALIGNMENT(42); - CHECK_ALIGNMENT(53); - CHECK_ALIGNMENT(63); - CHECK_ALIGNMENT(64); - CHECK_ALIGNMENT(65); - CHECK_ALIGNMENT(79); - CHECK_ALIGNMENT(96); - CHECK_ALIGNMENT(113); - CHECK_ALIGNMENT(127); - CHECK_ALIGNMENT(128); - CHECK_ALIGNMENT(129); - CHECK_ALIGNMENT(153); - CHECK_ALIGNMENT(255); - CHECK_ALIGNMENT(256); - CHECK_ALIGNMENT(257); - CHECK_ALIGNMENT(353); - CHECK_ALIGNMENT(512); - CHECK_ALIGNMENT(620); - CHECK_ALIGNMENT(1024); - CHECK_ALIGNMENT(30000); -} diff --git a/gcc/testsuite/gcc.target/loongarch/bitint-args.c b/gcc/testsuite/gcc.target/loongarch/bitint-args.c deleted file mode 100644 index ceba1fb6e3af..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/bitint-args.c +++ /dev/null @@ -1,81 +0,0 @@ -/* { dg-do compile { target bitint } } */ -/* { dg-additional-options "-std=c23 -O -fno-stack-clash-protection -g" } */ -/* { dg-final { check-function-bodies "**" "" } } */ - -#define CHECK_ARG(N) \ -void f##N(_BitInt(N) *ptr, _BitInt(N) y) \ -{ \ - *ptr = y; \ -} - - -CHECK_ARG(2) -/* -** f2: -** st.b \$r5,\$r4,0 -** jr \$r1 -*/ -CHECK_ARG(8) -/* -** f8: -** st.b \$r5,\$r4,0 -** jr \$r1 -*/ -CHECK_ARG(9) -/* -** f9: -** st.h \$r5,\$r4,0 -** jr \$r1 -*/ -CHECK_ARG(16) -/* -** f16: -** st.h \$r5,\$r4,0 -** jr \$r1 -*/ -CHECK_ARG(19) -/* -** f19: -** stptr.w \$r5,\$r4,0 -** jr \$r1 -*/ -CHECK_ARG(32) -/* -** f32: -** stptr.w \$r5,\$r4,0 -** jr \$r1 -*/ -CHECK_ARG(42) -/* -** f42: -** stptr.d \$r5,\$r4,0 -** jr \$r1 -*/ -CHECK_ARG(64) -/* -** f64: -** stptr.d \$r5,\$r4,0 -** jr \$r1 -*/ -CHECK_ARG(65) -/* -** f65: -** stptr.d \$r5,\$r4,0 -** st.d \$r6,\$r4,8 -** jr \$r1 -*/ -CHECK_ARG(127) -/* -** f127: -** stptr.d \$r5,\$r4,0 -** st.d \$r6,\$r4,8 -** jr \$r1 -*/ - -CHECK_ARG(128) -/* -** f128: -** stptr.d \$r5,\$r4,0 -** st.d \$r6,\$r4,8 -** jr \$r1 -*/ diff --git a/gcc/testsuite/gcc.target/loongarch/bitint-sizes.c b/gcc/testsuite/gcc.target/loongarch/bitint-sizes.c deleted file mode 100644 index 7272f98acbb0..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/bitint-sizes.c +++ /dev/null @@ -1,60 +0,0 @@ -/* { dg-do run { target bitint } } */ -/* { dg-additional-options "-std=c23" } */ - -static long unsigned int -calc_size (int n) -{ - if (n > 128) - return ((n - 1)/128 + 1) * sizeof(__int128_t); - if (n > 64) - return sizeof(__int128_t); - if (n > 32) - return sizeof(long long); - if (n > 16) - return sizeof(int); - if (n > 8) - return sizeof(short); - else - return sizeof(char); -} - -#define CHECK_SIZE(N) \ - if (sizeof(_BitInt(N)) != calc_size(N)) \ - __builtin_abort (); - -int main (void) -{ - CHECK_SIZE(2); - CHECK_SIZE(3); - CHECK_SIZE(7); - CHECK_SIZE(8); - CHECK_SIZE(9); - CHECK_SIZE(13); - CHECK_SIZE(15); - CHECK_SIZE(16); - CHECK_SIZE(17); - CHECK_SIZE(24); - CHECK_SIZE(31); - CHECK_SIZE(32); - CHECK_SIZE(33); - CHECK_SIZE(42); - CHECK_SIZE(53); - CHECK_SIZE(63); - CHECK_SIZE(64); - CHECK_SIZE(65); - CHECK_SIZE(79); - CHECK_SIZE(96); - CHECK_SIZE(113); - CHECK_SIZE(127); - CHECK_SIZE(128); - CHECK_SIZE(129); - CHECK_SIZE(153); - CHECK_SIZE(255); - CHECK_SIZE(256); - CHECK_SIZE(257); - CHECK_SIZE(353); - CHECK_SIZE(512); - CHECK_SIZE(620); - CHECK_SIZE(1024); - CHECK_SIZE(30000); -} diff --git a/gcc/testsuite/gcc.target/loongarch/bitwise-shift-reassoc.c b/gcc/testsuite/gcc.target/loongarch/bitwise-shift-reassoc.c deleted file mode 100644 index 3f1977556253..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/bitwise-shift-reassoc.c +++ /dev/null @@ -1,98 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mabi=lp64d" } */ -/* { dg-final { check-function-bodies "**" "" } } */ - -/* -**t0: -** ori (\$r[0-9]+),\$r4,257 -** slli.d \$r4,\1,11 -** jr \$r1 -*/ -long -t0 (long x) -{ - return (x | 0x101) << 11; -} - -/* -**t1: -** xori (\$r[0-9]+),\$r4,257 -** alsl.d \$r4,\1,\$r5,3 -** jr \$r1 -*/ -long -t1 (long x, long y) -{ - return ((x ^ 0x101) << 3) + y; -} - -/* -**t2: -** bstrins.d (\$r[0-9]+),\$r0,15,4 -** alsl.d \$r4,\1,\$r5,2 -** jr \$r1 -*/ -long -t2 (long x, long y) -{ - return ((x & ~0xfff0) << 2) + y; -} - -/* -**t3: -** ori (\$r[0-9]+),\$r4,3855 -** alsl.w \$r4,\1,\$r5,1 -** jr \$r1 -*/ -long -t3 (long x, long y) -{ - return (int)(((x | 0xf0f) << 1) + y); -} - -/* -**t4: -** bstrpick.d (\$r[0-9]+),\$r4,31,0 -** slli.d \$r4,\1,1 -** jr \$r1 -*/ -unsigned long -t4 (unsigned long x) -{ - return x << 32 >> 31; -} - -/* -**t5: -** bstrpick.d (\$r[0-9]+),\$r4,31,0 -** alsl.d \$r4,\1,\$r5,2 -** jr \$r1 -*/ -unsigned long -t5 (unsigned long x, unsigned long y) -{ - return (x << 32 >> 30) + y; -} - -/* -**t6: -** alsl.w \$r4,\$r4,\$r5,2 -** jr \$r1 -*/ -unsigned int -t6 (unsigned long x, unsigned long y) -{ - return (x << 32 >> 30) + y; -} - -/* -**t7: -** bstrins.d \$r4,\$r0,47,0 -** alsl.d \$r4,\$r4,\$r5,2 -** jr \$r1 -*/ -unsigned long -t7 (unsigned long x, unsigned long y) -{ - return ((x & 0xffff000000000000) << 2) + y; -} diff --git a/gcc/testsuite/gcc.target/loongarch/bitwise_extend.c b/gcc/testsuite/gcc.target/loongarch/bitwise_extend.c deleted file mode 100644 index c2bc489a7349..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/bitwise_extend.c +++ /dev/null @@ -1,45 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mdiv32" } */ -/* { dg-final { scan-assembler-not "slli\\.w" } } */ - -int -f1 (int a, int b) -{ - return (a << b) | b; -} - -int -f2 (int a, int b) -{ - return (a - b) | b; -} - -int -f3 (int a, int b) -{ - return (a * b) | b; -} - -int -f4 (int a, int b) -{ - return (unsigned) a >> b | (unsigned) a << (32 - b) | b; -} - -int -f5 (int a, int b) -{ - return (unsigned) a << b | (unsigned) a >> (32 - b) | b; -} - -int -f6 (int a, int b) -{ - return (a % b) | b; -} - -int -f7 (int a, int b) -{ - return (a + b) | b; -} diff --git a/gcc/testsuite/gcc.target/loongarch/bstrins-1.c b/gcc/testsuite/gcc.target/loongarch/bstrins-1.c deleted file mode 100644 index 7cb3a9523222..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/bstrins-1.c +++ /dev/null @@ -1,9 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mabi=lp64d" } */ -/* { dg-final { scan-assembler "bstrins\\.d\t\\\$r4,\\\$r0,4,0" } } */ - -long -x (long a) -{ - return a & -32; -} diff --git a/gcc/testsuite/gcc.target/loongarch/bstrins-2.c b/gcc/testsuite/gcc.target/loongarch/bstrins-2.c deleted file mode 100644 index 9777f502e5af..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/bstrins-2.c +++ /dev/null @@ -1,14 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mabi=lp64d" } */ -/* { dg-final { scan-assembler "bstrins\\.d\t\\\$r\[0-9\]+,\\\$r0,4,0" } } */ - -struct aligned_buffer { - _Alignas(32) char x[1024]; -}; - -extern int f(char *); -int g(void) -{ - struct aligned_buffer buf; - return f(buf.x); -} diff --git a/gcc/testsuite/gcc.target/loongarch/bstrins-3.c b/gcc/testsuite/gcc.target/loongarch/bstrins-3.c deleted file mode 100644 index 13762bdef423..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/bstrins-3.c +++ /dev/null @@ -1,16 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -fdump-rtl-final" } */ -/* { dg-final { scan-rtl-dump-times "insv\[sd\]i" 2 "final" } } */ - -struct X { - long a, b; -}; - -struct X -test (long a, long b, long c) -{ - c &= 0xfff; - a &= ~0xfff; - b &= ~0xfff; - return (struct X){.a = a | c, .b = b | c}; -} diff --git a/gcc/testsuite/gcc.target/loongarch/bstrins-4.c b/gcc/testsuite/gcc.target/loongarch/bstrins-4.c deleted file mode 100644 index 0823cfc386e0..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/bstrins-4.c +++ /dev/null @@ -1,9 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mabi=lp64d" } */ -/* { dg-final { scan-assembler "bstrins\\.d\t\\\$r4,\\\$r0,2,2" } } */ - -long -x (long a) -{ - return a & ~4; -} diff --git a/gcc/testsuite/gcc.target/loongarch/bstrpick_alsl_paired.c b/gcc/testsuite/gcc.target/loongarch/bstrpick_alsl_paired.c deleted file mode 100644 index 900e8c9e19fc..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/bstrpick_alsl_paired.c +++ /dev/null @@ -1,21 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2 -fdump-rtl-combine" } */ -/* { dg-final { scan-rtl-dump "{and_shift_reversedi}" "combine" } } */ -/* { dg-final { scan-assembler-not "alsl.d\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,\\\$r0" } } */ - -struct SA -{ - const char *a; - unsigned int b : 16; - unsigned int c : 16; -}; - -extern struct SA SAs[]; - -void -test () -{ - unsigned int i; - for (i = 0; i < 100; i++) - SAs[i].c = i; -} diff --git a/gcc/testsuite/gcc.target/loongarch/bytepick_combine.c b/gcc/testsuite/gcc.target/loongarch/bytepick_combine.c deleted file mode 100644 index 2a880829ca5a..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/bytepick_combine.c +++ /dev/null @@ -1,11 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2" } */ -/* { dg-final { scan-assembler-not "slli\\.d" } } */ -/* { dg-final { scan-assembler-not "srli\\.d" } } */ -/* { dg-final { scan-assembler-times "bytepick\\.d" 1 } } */ - -unsigned long -bytepick_d_n (unsigned long a, unsigned long b) -{ - return a >> 56 | b << 8; -} diff --git a/gcc/testsuite/gcc.target/loongarch/bytepick_shift_128.c b/gcc/testsuite/gcc.target/loongarch/bytepick_shift_128.c deleted file mode 100644 index d3a97721906b..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/bytepick_shift_128.c +++ /dev/null @@ -1,9 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mabi=lp64d" } */ -/* { dg-final { scan-assembler "bytepick\\.d" } } */ - -__int128 -test (__int128 a) -{ - return a << 16; -} diff --git a/gcc/testsuite/gcc.target/loongarch/can_inline_1.c b/gcc/testsuite/gcc.target/loongarch/can_inline_1.c deleted file mode 100644 index a1726d7f0896..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/can_inline_1.c +++ /dev/null @@ -1,15 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=loongarch64 -mabi=lp64d -fdump-tree-einline-details -O2" } */ -/* { dg-final { scan-tree-dump {missed: not inlinable: bar/\d+ -> foo/\d+, target specific option mismatch} "einline" } } */ -/* { dg-final { scan-tree-dump-not {\(inlined\)} "einline" } } */ - -void -__attribute__ ((target ("lsx"))) -foo (void) -{} - -void -bar (void) -{ - foo (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/can_inline_2.c b/gcc/testsuite/gcc.target/loongarch/can_inline_2.c deleted file mode 100644 index 0d77aca6c767..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/can_inline_2.c +++ /dev/null @@ -1,16 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=loongarch64 -mabi=lp64d -fdump-tree-einline-details -O2" } */ -/* { dg-final { scan-tree-dump {missed: not inlinable: bar/\d+ -> foo/\d+, target specific option mismatch} "einline" } } */ -/* { dg-final { scan-tree-dump-not {\(inlined\)} "einline" } } */ - -void -__attribute__ ((target ("lasx"))) -foo (void) -{} - -void -__attribute__ ((target ("lsx"))) -bar (void) -{ - foo (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/can_inline_3.c b/gcc/testsuite/gcc.target/loongarch/can_inline_3.c deleted file mode 100644 index d11dc4707fbd..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/can_inline_3.c +++ /dev/null @@ -1,16 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=loongarch64 -mabi=lp64d -fdump-tree-einline-details -O2" } */ -/* { dg-final { scan-tree-dump {missed: not inlinable: bar/\d+ -> foo/\d+, target specific option mismatch} "einline" } } */ -/* { dg-final { scan-tree-dump-not {\(inlined\)} "einline" } } */ - -void -__attribute__ ((target ("arch=la64v1.1"))) -foo (void) -{} - -void -__attribute__ ((target ("arch=la64v1.0"))) -bar (void) -{ - foo (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/can_inline_4.c b/gcc/testsuite/gcc.target/loongarch/can_inline_4.c deleted file mode 100644 index 6274ff10a7fa..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/can_inline_4.c +++ /dev/null @@ -1,15 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=loongarch64 -mabi=lp64d -fdump-tree-einline-details -O2" } */ -/* { dg-final { scan-tree-dump {missed: not inlinable: bar/\d+ -> foo/\d+, target specific option mismatch} "einline" } } */ -/* { dg-final { scan-tree-dump-not {\(inlined\)} "einline" } } */ - -void -foo (void) -{} - -void -__attribute__ ((target ("cmodel=extreme"))) -bar (void) -{ - foo (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/can_inline_5.c b/gcc/testsuite/gcc.target/loongarch/can_inline_5.c deleted file mode 100644 index 88550268e97d..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/can_inline_5.c +++ /dev/null @@ -1,16 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=loongarch64 -mabi=lp64d -fdump-tree-einline-details -O2" } */ -/* { dg-final { scan-tree-dump {\(inlined\)} "einline" } } */ - -void -__attribute__ ((always_inline)) -inline -foo (void) -{} - -void -__attribute__ ((target ("cmodel=extreme"))) -bar (void) -{ - foo (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/can_inline_6.c b/gcc/testsuite/gcc.target/loongarch/can_inline_6.c deleted file mode 100644 index b700de263a31..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/can_inline_6.c +++ /dev/null @@ -1,15 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=loongarch64 -mabi=lp64d -fdump-tree-einline-details -O2" } */ -/* { dg-final { scan-tree-dump {missed: not inlinable: bar/\d+ -> foo/\d+, target specific option mismatch} "einline" } } */ -/* { dg-final { scan-tree-dump-not {\(inlined\)} "einline" } } */ - -void -__attribute__ ((target ("strict-align"))) -foo (void) -{} - -void -bar (void) -{ - foo (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/cmodel-extreme-1.c b/gcc/testsuite/gcc.target/loongarch/cmodel-extreme-1.c deleted file mode 100644 index 4fad516f0570..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/cmodel-extreme-1.c +++ /dev/null @@ -1,18 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=loongarch64 -mabi=lp64d -O2 -mcmodel=extreme -mtls-dialect=trad -fno-plt -mexplicit-relocs=always -fdump-rtl-final -fPIC" } */ - -int a; -extern int b; -__thread int c __attribute__ ((tls_model ("local-exec"))); -__thread int d __attribute__ ((tls_model ("initial-exec"))); -__thread int e __attribute__ ((tls_model ("local-dynamic"))); -__thread int f __attribute__ ((tls_model ("global-dynamic"))); - -void -test (void) -{ - a = b + c + d + e + f; -} - -/* a, b, d, e, f, and __tls_get_addr. */ -/* { dg-final { scan-rtl-dump-times "la_pcrel64_two_parts" 6 "final" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/cmodel-extreme-2.c b/gcc/testsuite/gcc.target/loongarch/cmodel-extreme-2.c deleted file mode 100644 index 49bc65839145..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/cmodel-extreme-2.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=loongarch64 -mabi=lp64d -O2 -mcmodel=extreme -mtls-dialect=trad -fno-plt -mexplicit-relocs=auto -fdump-rtl-final -fPIC" } */ - -#include "cmodel-extreme-1.c" - -/* a, b, d, e, f, and __tls_get_addr. */ -/* { dg-final { scan-rtl-dump-times "la_pcrel64_two_parts" 6 "final" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/cmodel-func-attr-1.c b/gcc/testsuite/gcc.target/loongarch/cmodel-func-attr-1.c deleted file mode 100644 index 9f44dc66bfd9..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/cmodel-func-attr-1.c +++ /dev/null @@ -1,21 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mcmodel=normal -mexplicit-relocs=none" } */ - -extern char a[8]; -extern char b[8]; - -#ifndef TEST_TARGET_PRAGMA -__attribute__ ((target ("cmodel=extreme"))) -#else -#pragma GCC target ("cmodel=extreme") -#endif -void -test (void) -{ - a[0] = b[1]; - a[1] = b[2]; - a[2] = b[3]; - a[3] = b[4]; -} - -/* { dg-final { scan-assembler "la.global\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,a" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/cmodel-pragma-attr-1.c b/gcc/testsuite/gcc.target/loongarch/cmodel-pragma-attr-1.c deleted file mode 100644 index b522891487c6..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/cmodel-pragma-attr-1.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mcmodel=normal -mexplicit-relocs=none" } */ - -#define TEST_TARGET_PRAGMA 1 -#include "./cmodel-func-attr-1.c" - -/* { dg-final { scan-assembler "la.global\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,a" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/cmov_ii.c b/gcc/testsuite/gcc.target/loongarch/cmov_ii.c deleted file mode 100644 index 21b468e8ae14..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/cmov_ii.c +++ /dev/null @@ -1,15 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2" } */ -/* { dg-final { scan-assembler "test:.*xor.*maskeqz.*masknez.*or.*" } } */ - -extern void foo_ii (int *, int *, int *, int *); - -int -test (void) -{ - int a, b; - int c, d, out; - foo_ii (&a, &b, &c, &d); - out = a == b ? c : d; - return out; -} diff --git a/gcc/testsuite/gcc.target/loongarch/compare-both-non-zero.c b/gcc/testsuite/gcc.target/loongarch/compare-both-non-zero.c deleted file mode 100644 index b813df40454c..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/compare-both-non-zero.c +++ /dev/null @@ -1,10 +0,0 @@ -/* { dg-do compile { target { loongarch64*-*-* } } } */ -/* { dg-options "-O3" } */ - -int -test (int a, int b) -{ - return a && b; -} - -/* { dg-final { scan-assembler "maskeqz" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/conditional-move-opt-1.c b/gcc/testsuite/gcc.target/loongarch/conditional-move-opt-1.c deleted file mode 100644 index 47802aa9688d..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/conditional-move-opt-1.c +++ /dev/null @@ -1,58 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2" } */ -/* { dg-final { scan-assembler-not "maskeqz" } } */ -/* { dg-final { scan-assembler-not "masknez" } } */ - -extern long lm, ln, lr; - -void -test_ne () -{ - if (lm != ln) - lr += (1 << 16); - lr += lm; -} - -void -test_eq () -{ - if (lm == ln) - lr = lm + (1 << 16); - else - lr = lm; - lr += lm; -} - -void -test_lt () -{ - if (lm < ln) - lr += (1 << 16); - lr += lm; -} - -void -test_le () -{ - if (lm <= ln) - lr = lm + ((long)1 << 32); - else - lr = lm; - lr += lm; -} - -void -test_nez () -{ - if (lm != 0) - lr <<= (1 << 4); - lr += lm; -} - -void -test_eqz () -{ - if (lm == 0) - lr >>= (1 << 2); - lr += lm; -} diff --git a/gcc/testsuite/gcc.target/loongarch/conditional-move-opt-2.c b/gcc/testsuite/gcc.target/loongarch/conditional-move-opt-2.c deleted file mode 100644 index 743fd5e670e2..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/conditional-move-opt-2.c +++ /dev/null @@ -1,42 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 --param max-rtl-if-conversion-insns=1" } */ -/* { dg-final { scan-assembler-not "maskeqz" } } */ -/* { dg-final { scan-assembler-not "masknez" } } */ - -/* The relevant optimization is currently only based on noce_try_cmove_arith, - so it bypasses noce_convert_multiple_sets by - --param max-rtl-if-conversion-insns=1 to execute noce_try_cmove_arith. */ - -extern long lm, ln, lr; - -void -test_ge () -{ - if (lm >= ln) - lr += ((long)1 << 32); - lr += lm; -} - -void -test_ltz () -{ - if (lm < 0) - lr |= (1 << 16); - lr += lm; -} - -void -test_lez () -{ - if (lm <= 0) - lr |= (1 << 16); - lr += lm; -} - -void -test_gez () -{ - if (lm >= 0) - lr ^= (1 << 16); - lr += lm; -} diff --git a/gcc/testsuite/gcc.target/loongarch/conditional-move-opt-3.c b/gcc/testsuite/gcc.target/loongarch/conditional-move-opt-3.c deleted file mode 100644 index 95887980cc5f..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/conditional-move-opt-3.c +++ /dev/null @@ -1,14 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2" } */ -/* { dg-final { scan-assembler "maskeqz" } } */ -/* { dg-final { scan-assembler "masknez" } } */ - -extern long lm, ln, lr; - -void -test_and () -{ - if (lm < 0) - lr &= (1 << 16); - lr += lm; -} diff --git a/gcc/testsuite/gcc.target/loongarch/const-double-zero-stx.c b/gcc/testsuite/gcc.target/loongarch/const-double-zero-stx.c deleted file mode 100644 index fd1bb49ff2c8..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/const-double-zero-stx.c +++ /dev/null @@ -1,18 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -maddr-reg-reg-cost=1" } */ -/* { dg-final { scan-assembler-times {stx\..\t\$r0} 2 } } */ - -extern float arr_f[]; -extern double arr_d[]; - -void -test_f (int base, int index) -{ - arr_f[base + index] = 0.0; -} - -void -test_d (int base, int index) -{ - arr_d[base + index] = 0.0; -} diff --git a/gcc/testsuite/gcc.target/loongarch/crc-sext.c b/gcc/testsuite/gcc.target/loongarch/crc-sext.c deleted file mode 100644 index 9ade5a8e4cab..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/crc-sext.c +++ /dev/null @@ -1,13 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64" } */ -/* { dg-final { check-function-bodies "**" "" } } */ - -/* -**my_crc: -** crc.w.d.w \$r4,\$r4,\$r5 -** jr \$r1 -*/ -int my_crc(long long dword, int crc) -{ - return __builtin_loongarch_crc_w_d_w(dword, crc); -} diff --git a/gcc/testsuite/gcc.target/loongarch/direct-extern-1.c b/gcc/testsuite/gcc.target/loongarch/direct-extern-1.c deleted file mode 100644 index 85c6c1e8a88b..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/direct-extern-1.c +++ /dev/null @@ -1,6 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mexplicit-relocs -mdirect-extern-access" } */ -/* { dg-final { scan-assembler-not "got" } } */ - -extern int x; -int f() { return x; } diff --git a/gcc/testsuite/gcc.target/loongarch/div-div32.c b/gcc/testsuite/gcc.target/loongarch/div-div32.c deleted file mode 100644 index 8b1f686eca23..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/div-div32.c +++ /dev/null @@ -1,31 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mabi=lp64d -mdiv32" } */ -/* { dg-final { scan-assembler "div\.w" } } */ -/* { dg-final { scan-assembler "div\.wu" } } */ -/* { dg-final { scan-assembler "mod\.w" } } */ -/* { dg-final { scan-assembler "mod\.wu" } } */ -/* { dg-final { scan-assembler-not "slli\.w.*,0" } } */ - -int -divw (long a, long b) -{ - return (int)a / (int)b; -} - -unsigned int -divwu (long a, long b) -{ - return (unsigned int)a / (unsigned int)b; -} - -int -modw (long a, long b) -{ - return (int)a % (int)b; -} - -unsigned int -modwu (long a, long b) -{ - return (unsigned int)a % (unsigned int)b; -} diff --git a/gcc/testsuite/gcc.target/loongarch/div-no-div32.c b/gcc/testsuite/gcc.target/loongarch/div-no-div32.c deleted file mode 100644 index f0f697ba589d..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/div-no-div32.c +++ /dev/null @@ -1,11 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mabi=lp64d" } */ -/* { dg-final { scan-assembler "div\.w" } } */ -/* { dg-final { scan-assembler "div\.wu" } } */ -/* { dg-final { scan-assembler "mod\.w" } } */ -/* { dg-final { scan-assembler "mod\.wu" } } */ - -/* -mno-div32 should be implied by -march=loongarch64. */ -/* { dg-final { scan-assembler-times "slli\.w\[^\n\]*0" 8 } } */ - -#include "div-div32.c" diff --git a/gcc/testsuite/gcc.target/loongarch/divf.c b/gcc/testsuite/gcc.target/loongarch/divf.c deleted file mode 100644 index 6c831817c9e2..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/divf.c +++ /dev/null @@ -1,10 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -ffast-math -mrecip -mfrecipe -fno-unsafe-math-optimizations" } */ -/* { dg-final { scan-assembler "fdiv.s" } } */ -/* { dg-final { scan-assembler-not "frecipe.s" } } */ - -float -foo(float a, float b) -{ - return a / b; -} diff --git a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-extreme-tls-desc.c b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-extreme-tls-desc.c deleted file mode 100644 index 0fc7a1a51176..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-extreme-tls-desc.c +++ /dev/null @@ -1,10 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -fPIC -mcmodel=extreme -mexplicit-relocs=auto -mtls-dialect=desc" } */ - -__thread int a __attribute__((visibility("hidden"))); -extern __thread int b __attribute__((visibility("default"))); - -int test() { return a + b; } - -/* { dg-final { scan-assembler "la\\.tls\\.desc\t\\\$r4,\\\$r12,\\.LANCHOR0" { target tls_native } } } */ -/* { dg-final { scan-assembler "la\\.tls\\.desc\t\\\$r4,\\\$r12,\\.LANCHOR0" { target tls_native } } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-lto.c b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-lto.c deleted file mode 100644 index f53b54689242..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-lto.c +++ /dev/null @@ -1,26 +0,0 @@ -/* { dg-do link } */ -/* { dg-require-effective-target lto } */ -/* { dg-require-linker-plugin "" } */ -/* { dg-options "-fpic -shared -O2 --save-temps -mexplicit-relocs=auto -flto -fuse-linker-plugin -flto-partition=one" } */ - -int pcrel __attribute__ ((visibility ("hidden"))); -int got __attribute__ ((visibility ("default"))); - -int -*addr_pcrel (void) -{ - return &pcrel; -} - -int -*addr_got (void) -{ - return &got; -} - -/* With linker plugin we should use la.local (it can be relaxed to pcaddi), - but not la.global (we are pretty sure the linker cannot relax la.global - got). */ -/* { dg-final { scan-lto-assembler "la.local.*pcrel" } } */ -/* { dg-final { scan-lto-assembler "pcalau12i.*%got_pc_hi20\\\(got\\\)" } } */ -/* { dg-final { scan-lto-assembler "ld.*%got_pc_lo12\\\(got\\\)" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store-2.c b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store-2.c deleted file mode 100644 index 42cb966d1e03..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store-2.c +++ /dev/null @@ -1,11 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mabi=lp64d -mexplicit-relocs=auto" } */ - -float a[8001]; -float -t (void) -{ - return a[0] + a[8000]; -} - -/* { dg-final { scan-assembler-not "la.local" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store-3.c b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store-3.c deleted file mode 100644 index 32aa5383d1c6..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store-3.c +++ /dev/null @@ -1,18 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mexplicit-relocs=auto -fdump-rtl-final" } */ -/* { dg-final { scan-rtl-dump-times "mem/v/c" 2 "final" } } */ -/* { dg-final { scan-assembler-not "la\\.local" } } */ - -volatile unsigned long counter; - -unsigned long -read (void) -{ - return counter; -} - -void -clear (void) -{ - counter = 0; -} diff --git a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store-no-anchor.c b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store-no-anchor.c deleted file mode 100644 index fb03403d756e..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store-no-anchor.c +++ /dev/null @@ -1,6 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mabi=lp64d -mexplicit-relocs=auto -fno-section-anchors" } */ - -#include "explicit-relocs-auto-single-load-store.c" - -/* { dg-final { scan-assembler-not "la.local" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store.c b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store.c deleted file mode 100644 index 0d53644cda70..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-single-load-store.c +++ /dev/null @@ -1,14 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mabi=lp64d -mexplicit-relocs=auto" } */ - -long a; -int b; -unsigned int c; - -long load_a() { return a; } -long load_b() { return b; } -long load_c() { return c; } -void store_a(long x) { a = x; } -void store_b(int x) { b = x; } - -/* { dg-final { scan-assembler-not "la.local" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-desc.c b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-desc.c deleted file mode 100644 index 37947ecfdc81..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-desc.c +++ /dev/null @@ -1,10 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -fPIC -mexplicit-relocs=auto -mtls-dialect=desc" } */ - -__thread int a __attribute__((visibility("hidden"))); -extern __thread int b __attribute__((visibility("default"))); - -int test() { return a + b; } - -/* { dg-final { scan-assembler "la\\.tls\\.desc\t\\\$r4,\\.LANCHOR0" { target tls_native } } } */ -/* { dg-final { scan-assembler "la\\.tls\\.desc\t\\\$r4,\\.LANCHOR0" { target tls_native } } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-ld-gd.c b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-ld-gd.c deleted file mode 100644 index b47e37c822cb..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-ld-gd.c +++ /dev/null @@ -1,10 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -fPIC -mexplicit-relocs=auto -mtls-dialect=trad" } */ - -__thread int a __attribute__((visibility("hidden"))); -extern __thread int b __attribute__((visibility("default"))); - -int test() { return a + b; } - -/* { dg-final { scan-assembler "la\\.tls\\.ld" { target tls_native } } } */ -/* { dg-final { scan-assembler "la\\.tls\\.gd" { target tls_native } } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-le-ie.c b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-le-ie.c deleted file mode 100644 index 78898cfc6ab0..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-auto-tls-le-ie.c +++ /dev/null @@ -1,6 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mexplicit-relocs=auto" } */ - -#include "explicit-relocs-auto-tls-ld-gd.c" - -/* { dg-final { scan-assembler-not "la.tls" { target tls_native } } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-extreme-auto-tls-ld-gd.c b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-extreme-auto-tls-ld-gd.c deleted file mode 100644 index 35bd4570a9e7..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-extreme-auto-tls-ld-gd.c +++ /dev/null @@ -1,5 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -fPIC -mexplicit-relocs=auto -mcmodel=extreme -fno-plt" } */ -/* { dg-final { scan-assembler-not "la.tls.\[lg\]d" { target tls_native } } } */ - -#include "./explicit-relocs-auto-tls-ld-gd.c" diff --git a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-extreme-tls-desc.c b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-extreme-tls-desc.c deleted file mode 100644 index e9eb0d6f703e..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-extreme-tls-desc.c +++ /dev/null @@ -1,16 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -fPIC -mexplicit-relocs -mtls-dialect=desc -mcmodel=extreme -fno-late-combine-instructions" } */ - -__thread int a __attribute__((visibility("hidden"))); -extern __thread int b __attribute__((visibility("default"))); - -int test() { return a + b; } - -/* { dg-final { scan-assembler "pcalau12i\t\\\$r4,%desc_pc_hi20\\\(\\.LANCHOR0\\\)" { target tls_native } } } */ -/* { dg-final { scan-assembler "addi.d\t\\\$r12,\\\$r0,%desc_pc_lo12\\\(\\.LANCHOR0\\\)" { target tls_native } } } */ -/* { dg-final { scan-assembler "lu32i.d\t\\\$r12,%desc64_pc_lo20\\\(\\.LANCHOR0\\\)" { target tls_native } } } */ -/* { dg-final { scan-assembler "lu52i.d\t\\\$r12,\\\$r12,%desc64_pc_hi12\\\(\\.LANCHOR0\\\)" { target tls_native } } } */ -/* { dg-final { scan-assembler "add.d\t\\\$r4,\\\$r4,\\\$r12" { target tls_native } } } */ -/* { dg-final { scan-assembler "ld.d\t\\\$r1,\\\$r4,%desc_ld\\\(\\.LANCHOR0\\\)" { target tls_native } } } */ -/* { dg-final { scan-assembler "jirl\t\\\$r1,\\\$r1,%desc_call\\\(\\.LANCHOR0\\\)" { target tls_native } } } */ -/* { dg-final { scan-assembler "add.d\t\\\$r12,\\\$r4,\\\$r2" { target tls_native } } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-medium-auto-tls-ld-gd.c b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-medium-auto-tls-ld-gd.c deleted file mode 100644 index 47bffae8af7b..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-medium-auto-tls-ld-gd.c +++ /dev/null @@ -1,5 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -fPIC -mexplicit-relocs=auto -mcmodel=medium -fplt" } */ -/* { dg-final { scan-assembler-not "la.global" { target tls_native } } } */ - -#include "./explicit-relocs-auto-tls-ld-gd.c" diff --git a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-medium-call36-auto-tls-ld-gd.c b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-medium-call36-auto-tls-ld-gd.c deleted file mode 100644 index cfb8553236a7..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-medium-call36-auto-tls-ld-gd.c +++ /dev/null @@ -1,5 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -fPIC -mexplicit-relocs=auto -mtls-dialect=trad -mcmodel=medium -fplt" } */ -/* { dg-final { scan-assembler "pcaddu18i\t\\\$r1,%call36\\\(__tls_get_addr\\\)" { target { tls_native && loongarch_call36_support } } } } */ - -#include "./explicit-relocs-auto-tls-ld-gd.c" diff --git a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-tls-desc.c b/gcc/testsuite/gcc.target/loongarch/explicit-relocs-tls-desc.c deleted file mode 100644 index fed478458a3a..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/explicit-relocs-tls-desc.c +++ /dev/null @@ -1,13 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -fPIC -mexplicit-relocs -mtls-dialect=desc -fno-late-combine-instructions" } */ - -__thread int a __attribute__((visibility("hidden"))); -extern __thread int b __attribute__((visibility("default"))); - -int test() { return a + b; } - -/* { dg-final { scan-assembler "pcalau12i\t\\\$r4,%desc_pc_hi20\\\(\\.LANCHOR0\\\)" { target tls_native } } } */ -/* { dg-final { scan-assembler "addi.d\t\\\$r4,\\\$r4,%desc_pc_lo12\\\(\\.LANCHOR0\\\)" { target tls_native } } } */ -/* { dg-final { scan-assembler "ld.d\t\\\$r1,\\\$r4,%desc_ld\\\(\\.LANCHOR0\\\)" { target tls_native } } } */ -/* { dg-final { scan-assembler "jirl\t\\\$r1,\\\$r1,%desc_call\\\(\\.LANCHOR0\\\)" { target tls_native } } } */ -/* { dg-final { scan-assembler "add.d\t\\\$r12,\\\$r4,\\\$r2" { target tls_native } } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/extendsidi2-combine.c b/gcc/testsuite/gcc.target/loongarch/extendsidi2-combine.c deleted file mode 100644 index 0c3613c0efda..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/extendsidi2-combine.c +++ /dev/null @@ -1,13 +0,0 @@ -/* { dg-do compile { target { loongarch64*-*-* } } } */ -/* { dg-options "-O3 -fno-strict-aliasing" } */ - -int -test (double a) -{ - int z; - - *((double *)&z) = a; - return z; -} - -/* { dg-final { scan-assembler-not "slli\\.w" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/fclass-compile.c b/gcc/testsuite/gcc.target/loongarch/fclass-compile.c deleted file mode 100644 index 3db83e7b31d3..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/fclass-compile.c +++ /dev/null @@ -1,23 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -fsignaling-nans -march=loongarch64 -mfpu=64 -mabi=lp64d" } */ -/* { dg-final { scan-assembler-times "fclass\\.s" 1 } } */ -/* { dg-final { scan-assembler-times "fclass\\.d" 1 } } */ -/* { dg-final { scan-assembler-not "fcmp" } } */ - -__attribute__ ((noipa)) int -test_fclass_f (float f) -{ - return __builtin_isinf (f) - | __builtin_isnormal (f) << 1 - | __builtin_isfinite (f) << 2 - | __builtin_isnan (f) << 3; -} - -__attribute__ ((noipa)) int -test_fclass_d (double d) -{ - return __builtin_isinf (d) - | __builtin_isnormal (d) << 1 - | __builtin_isfinite (d) << 2 - | __builtin_isnan (d) << 3; -} diff --git a/gcc/testsuite/gcc.target/loongarch/fclass-run.c b/gcc/testsuite/gcc.target/loongarch/fclass-run.c deleted file mode 100644 index 3852d2015b3a..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/fclass-run.c +++ /dev/null @@ -1,53 +0,0 @@ -/* { dg-do run } */ -/* { dg-options "-O2 -fsignaling-nans -D_GNU_SOURCE -std=c23" } */ -/* { dg-require-effective-target fenv_exceptions } */ - -#include -#include "fclass-compile.c" - -#define ASSERT_EQ(x, y) (void)(x == y || (__builtin_abort (), 1)) - -int -main (void) -{ - volatile float f_inf = __builtin_inff (); - volatile float f_zero = 0; - volatile float f_normal = 114.514; - volatile float f_subnormal = 1e-40; - volatile float f_qnan = __builtin_nanf (""); - volatile float f_snan = __builtin_nansf (""); - volatile double d_inf = __builtin_inf (); - volatile double d_zero = 0; - volatile double d_normal = 1919.810; - volatile double d_subnormal = 1e-320; - volatile double d_qnan = __builtin_nan (""); - volatile double d_snan = __builtin_nans (""); - -#if __loongarch_frlen >= 64 - /* With fclass.{s/d} we shouldn't signal, even if the input is sNaN. - PR 66462. */ - feenableexcept (FE_INVALID); -#endif - - ASSERT_EQ (test_fclass_f (f_inf), 0b001); - ASSERT_EQ (test_fclass_f (-f_inf), 0b001); - ASSERT_EQ (test_fclass_f (f_zero), 0b100); - ASSERT_EQ (test_fclass_f (-f_zero), 0b100); - ASSERT_EQ (test_fclass_f (f_normal), 0b110); - ASSERT_EQ (test_fclass_f (-f_normal), 0b110); - ASSERT_EQ (test_fclass_f (f_subnormal), 0b100); - ASSERT_EQ (test_fclass_f (-f_subnormal), 0b100); - ASSERT_EQ (test_fclass_f (f_qnan), 0b1000); - ASSERT_EQ (test_fclass_f (f_snan), 0b1000); - - ASSERT_EQ (test_fclass_d (d_inf), 0b001); - ASSERT_EQ (test_fclass_d (-d_inf), 0b001); - ASSERT_EQ (test_fclass_d (d_zero), 0b100); - ASSERT_EQ (test_fclass_d (-d_zero), 0b100); - ASSERT_EQ (test_fclass_d (d_normal), 0b110); - ASSERT_EQ (test_fclass_d (-d_normal), 0b110); - ASSERT_EQ (test_fclass_d (d_subnormal), 0b100); - ASSERT_EQ (test_fclass_d (-d_subnormal), 0b100); - ASSERT_EQ (test_fclass_d (d_qnan), 0b1000); - ASSERT_EQ (test_fclass_d (d_snan), 0b1000); -} diff --git a/gcc/testsuite/gcc.target/loongarch/float-load.c b/gcc/testsuite/gcc.target/loongarch/float-load.c index c757a795e214..2a7550cc5e0d 100644 --- a/gcc/testsuite/gcc.target/loongarch/float-load.c +++ b/gcc/testsuite/gcc.target/loongarch/float-load.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target hard_float } */ /* { dg-options "-O2" } */ /* { dg-final { scan-assembler "fld\\.s" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/flogb.c b/gcc/testsuite/gcc.target/loongarch/flogb.c deleted file mode 100644 index 1daefe54e139..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/flogb.c +++ /dev/null @@ -1,18 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mdouble-float -fno-math-errno" } */ -/* { dg-final { scan-assembler "fabs\\.s" } } */ -/* { dg-final { scan-assembler "fabs\\.d" } } */ -/* { dg-final { scan-assembler "flogb\\.s" } } */ -/* { dg-final { scan-assembler "flogb\\.d" } } */ - -double -my_logb (double a) -{ - return __builtin_logb (a); -} - -float -my_logbf (float a) -{ - return __builtin_logbf (a); -} diff --git a/gcc/testsuite/gcc.target/loongarch/flt-abi-isa-1.c b/gcc/testsuite/gcc.target/loongarch/flt-abi-isa-1.c deleted file mode 100644 index 1c9490f6a878..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/flt-abi-isa-1.c +++ /dev/null @@ -1,14 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -mfpu=64 -march=loongarch64 -O2" } */ -/* { dg-final { scan-assembler "frecip\\.d" } } */ -/* { dg-final { scan-assembler-not "movgr2fr\\.d" } } */ -/* { dg-final { scan-assembler-not "movfr2gr\\.d" } } */ - -/* FPU is used for calculation and FPR is used for arguments and return - values. */ - -double -t (double x) -{ - return 1.0 / x; -} diff --git a/gcc/testsuite/gcc.target/loongarch/flt-abi-isa-2.c b/gcc/testsuite/gcc.target/loongarch/flt-abi-isa-2.c deleted file mode 100644 index 0580fd65d3a7..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/flt-abi-isa-2.c +++ /dev/null @@ -1,10 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64s -mfpu=64 -march=loongarch64 -O2" } */ -/* { dg-final { scan-assembler "frecip\\.d" } } */ -/* { dg-final { scan-assembler "movgr2fr\\.d" } } */ -/* { dg-final { scan-assembler "movfr2gr\\.d" } } */ - -/* FPU is used for calculation but FPR cannot be used for arguments and - return values. */ - -#include "flt-abi-isa-1.c" diff --git a/gcc/testsuite/gcc.target/loongarch/flt-abi-isa-3.c b/gcc/testsuite/gcc.target/loongarch/flt-abi-isa-3.c deleted file mode 100644 index 16a926f57a1f..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/flt-abi-isa-3.c +++ /dev/null @@ -1,9 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64s -mfpu=none -march=loongarch64 -O2" } */ -/* { dg-final { scan-assembler-not "frecip\\.d" } } */ -/* { dg-final { scan-assembler-not "movgr2fr\\.d" } } */ -/* { dg-final { scan-assembler-not "movfr2gr\\.d" } } */ - -/* FPU cannot be used at all. */ - -#include "flt-abi-isa-1.c" diff --git a/gcc/testsuite/gcc.target/loongarch/flt-abi-isa-4.c b/gcc/testsuite/gcc.target/loongarch/flt-abi-isa-4.c deleted file mode 100644 index 43b579c3fac2..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/flt-abi-isa-4.c +++ /dev/null @@ -1,10 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-msoft-float -march=loongarch64 -O2" } */ -/* { dg-final { scan-assembler-not "frecip\\.d" } } */ -/* { dg-final { scan-assembler-not "movgr2fr\\.d" } } */ -/* { dg-final { scan-assembler-not "movfr2gr\\.d" } } */ - -/* -msoft-float implies both -mabi=lp64s and -mfpu=none. - FPU cannot be used at all. */ - -#include "flt-abi-isa-1.c" diff --git a/gcc/testsuite/gcc.target/loongarch/fnmam4-vec.c b/gcc/testsuite/gcc.target/loongarch/fnmam4-vec.c deleted file mode 100644 index 09693039deb3..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/fnmam4-vec.c +++ /dev/null @@ -1,14 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-Ofast -mlasx -ftree-vectorize" } */ -/* { dg-require-effective-target loongarch_asx } */ - -void -foo (float *u, float x, float *y, float z) -{ - int i; - for (i = 0; i < 1024; i++) - *(u++) = (x - y[i] * z); -} - -/* { dg-final { scan-assembler-not "\tvori.b"} } */ -/* { dg-final { scan-assembler-not "\txvori.b"} } */ diff --git a/gcc/testsuite/gcc.target/loongarch/frint.c b/gcc/testsuite/gcc.target/loongarch/frint.c deleted file mode 100644 index 3ee6a8f973a6..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/frint.c +++ /dev/null @@ -1,16 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mdouble-float" } */ -/* { dg-final { scan-assembler "frint\\.s" } } */ -/* { dg-final { scan-assembler "frint\\.d" } } */ - -double -my_rint (double a) -{ - return __builtin_rint (a); -} - -float -my_rintf (float a) -{ - return __builtin_rintf (a); -} diff --git a/gcc/testsuite/gcc.target/loongarch/fscaleb.c b/gcc/testsuite/gcc.target/loongarch/fscaleb.c deleted file mode 100644 index f18470fbb8fb..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/fscaleb.c +++ /dev/null @@ -1,48 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mabi=lp64d -mdouble-float -fno-math-errno" } */ -/* { dg-final { scan-assembler-times "fscaleb\\.s" 3 } } */ -/* { dg-final { scan-assembler-times "fscaleb\\.d" 4 } } */ -/* { dg-final { scan-assembler-times "slli\\.w" 1 } } */ - -double -my_scalbln (double a, long b) -{ - return __builtin_scalbln (a, b); -} - -double -my_scalbn (double a, int b) -{ - return __builtin_scalbn (a, b); -} - -double -my_ldexp (double a, int b) -{ - return __builtin_ldexp (a, b); -} - -float -my_scalblnf (float a, long b) -{ - return __builtin_scalblnf (a, b); -} - -float -my_scalbnf (float a, int b) -{ - return __builtin_scalbnf (a, b); -} - -float -my_ldexpf (float a, int b) -{ - return __builtin_ldexpf (a, b); -} - -/* b must be sign-extended */ -double -my_ldexp_long (double a, long b) -{ - return __builtin_ldexp (a, b); -} diff --git a/gcc/testsuite/gcc.target/loongarch/ftint-no-inexact.c b/gcc/testsuite/gcc.target/loongarch/ftint-no-inexact.c deleted file mode 100644 index 88b83a9c0568..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/ftint-no-inexact.c +++ /dev/null @@ -1,44 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -mdouble-float -fno-math-errno -fno-fp-int-builtin-inexact" } */ -/* { dg-final { scan-assembler "ftint\\.l\\.s" } } */ -/* { dg-final { scan-assembler "ftint\\.l\\.d" } } */ -/* { dg-final { scan-assembler-not "ftintrm\\.l\\.s" } } */ -/* { dg-final { scan-assembler-not "ftintrm\\.l\\.d" } } */ -/* { dg-final { scan-assembler-not "ftintrp\\.l\\.s" } } */ -/* { dg-final { scan-assembler-not "ftintrp\\.l\\.d" } } */ - -long -my_lrint (double a) -{ - return __builtin_lrint (a); -} - -long -my_lrintf (float a) -{ - return __builtin_lrintf (a); -} - -long -my_lfloor (double a) -{ - return __builtin_lfloor (a); -} - -long -my_lfloorf (float a) -{ - return __builtin_lfloorf (a); -} - -long -my_lceil (double a) -{ - return __builtin_lceil (a); -} - -long -my_lceilf (float a) -{ - return __builtin_lceilf (a); -} diff --git a/gcc/testsuite/gcc.target/loongarch/ftint.c b/gcc/testsuite/gcc.target/loongarch/ftint.c deleted file mode 100644 index 7a326a454d88..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/ftint.c +++ /dev/null @@ -1,44 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -mdouble-float -fno-math-errno -ffp-int-builtin-inexact" } */ -/* { dg-final { scan-assembler "ftint\\.l\\.s" } } */ -/* { dg-final { scan-assembler "ftint\\.l\\.d" } } */ -/* { dg-final { scan-assembler "ftintrm\\.l\\.s" } } */ -/* { dg-final { scan-assembler "ftintrm\\.l\\.d" } } */ -/* { dg-final { scan-assembler "ftintrp\\.l\\.s" } } */ -/* { dg-final { scan-assembler "ftintrp\\.l\\.d" } } */ - -long -my_lrint (double a) -{ - return __builtin_lrint (a); -} - -long -my_lrintf (float a) -{ - return __builtin_lrintf (a); -} - -long -my_lfloor (double a) -{ - return __builtin_lfloor (a); -} - -long -my_lfloorf (float a) -{ - return __builtin_lfloorf (a); -} - -long -my_lceil (double a) -{ - return __builtin_lceil (a); -} - -long -my_lceilf (float a) -{ - return __builtin_lceilf (a); -} diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-1.c b/gcc/testsuite/gcc.target/loongarch/func-call-1.c deleted file mode 100644 index 76bf11b0c032..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-1.c +++ /dev/null @@ -1,32 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O0 -fpic -fplt -mno-explicit-relocs -mcmodel=normal" } */ -/* { dg-final { scan-assembler "test:.*bl\t%plt\\(g\\)\n" } } */ -/* { dg-final { scan-assembler "test1:.*bl\t%plt\\(f\\)\n" } } */ -/* { dg-final { scan-assembler "test2:.*bl\tl\n" } } */ - -extern void g (void); -void -f (void) -{} - -static void -l (void) -{} - -void -test (void) -{ - g (); -} - -void -test1 (void) -{ - f (); -} - -void -test2 (void) -{ - l (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-2.c b/gcc/testsuite/gcc.target/loongarch/func-call-2.c deleted file mode 100644 index 4b468fef8b45..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-2.c +++ /dev/null @@ -1,32 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O0 -fno-pic -fplt -mno-explicit-relocs -mcmodel=normal" } */ -/* { dg-final { scan-assembler "test:.*bl\t%plt\\(g\\)\n" } } */ -/* { dg-final { scan-assembler "test1:.*bl\tf\n" } } */ -/* { dg-final { scan-assembler "test2:.*bl\tl\n" } } */ - -extern void g (void); -void -f (void) -{} - -static void -l (void) -{} - -void -test (void) -{ - g (); -} - -void -test1 (void) -{ - f (); -} - -void -test2 (void) -{ - l (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-3.c b/gcc/testsuite/gcc.target/loongarch/func-call-3.c deleted file mode 100644 index dd3a4882d609..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-3.c +++ /dev/null @@ -1,32 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O0 -fpic -fno-plt -mno-explicit-relocs -mcmodel=normal" } */ -/* { dg-final { scan-assembler "test:.*la\.global\t.*g\n\tjirl" } } */ -/* { dg-final { scan-assembler "test1:.*la\.global\t.*f\n\tjirl" } } */ -/* { dg-final { scan-assembler "test2:.*bl\tl\n" } } */ - -extern void g (void); -void -f (void) -{} - -static void -l (void) -{} - -void -test (void) -{ - g (); -} - -void -test1 (void) -{ - f (); -} - -void -test2 (void) -{ - l (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-4.c b/gcc/testsuite/gcc.target/loongarch/func-call-4.c deleted file mode 100644 index f8158ec349f8..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-4.c +++ /dev/null @@ -1,32 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O0 -fno-pic -fno-plt -mno-explicit-relocs -mcmodel=normal" } */ -/* { dg-final { scan-assembler "test:.*la\.global\t.*g\n\tjirl" } } */ -/* { dg-final { scan-assembler "test1:.*bl\tf\n" } } */ -/* { dg-final { scan-assembler "test2:.*bl\tl\n" } } */ - -extern void g (void); -void -f (void) -{} - -static void -l (void) -{} - -void -test (void) -{ - g (); -} - -void -test1 (void) -{ - f (); -} - -void -test2 (void) -{ - l (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-5.c b/gcc/testsuite/gcc.target/loongarch/func-call-5.c deleted file mode 100644 index 37994af430df..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-5.c +++ /dev/null @@ -1,33 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O0 -fpic -fplt -mexplicit-relocs -mcmodel=normal" } */ -/* { dg-final { scan-assembler "test:.*bl\t%plt\\(g\\)\n" } } */ -/* { dg-final { scan-assembler "test1:.*bl\t%plt\\(f\\)\n" } } */ -/* { dg-final { scan-assembler "test2:.*bl\tl\n" } } */ - -extern void g (void); - -void -f (void) -{} - -static void -l (void) -{} - -void -test (void) -{ - g (); -} - -void -test1 (void) -{ - f (); -} - -void -test2 (void) -{ - l (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-6.c b/gcc/testsuite/gcc.target/loongarch/func-call-6.c deleted file mode 100644 index 8e366e376e76..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-6.c +++ /dev/null @@ -1,33 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O0 -fno-pic -fplt -mexplicit-relocs -mcmodel=normal" } */ -/* { dg-final { scan-assembler "test:.*bl\t%plt\\(g\\)\n" } } */ -/* { dg-final { scan-assembler "test1:.*bl\tf\n" } } */ -/* { dg-final { scan-assembler "test2:.*bl\tl\n" } } */ - -extern void g (void); - -void -f (void) -{} - -static void -l (void) -{} - -void -test (void) -{ - g (); -} - -void -test1 (void) -{ - f (); -} - -void -test2 (void) -{ - l (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-7.c b/gcc/testsuite/gcc.target/loongarch/func-call-7.c deleted file mode 100644 index 4177c3d962e7..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-7.c +++ /dev/null @@ -1,34 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O0 -fpic -fno-plt -mexplicit-relocs -mcmodel=normal" } */ -/* { dg-final { scan-assembler "test:.*pcalau12i\t.*%got_pc_hi20\\(g\\)\n\tld\.d\t.*%got_pc_lo12\\(g\\)\n\tjirl" } } */ -/* { dg-final { scan-assembler "test1:.*pcalau12i\t.*%got_pc_hi20\\(f\\)\n\tld\.d\t.*%got_pc_lo12\\(f\\)\n\tjirl" } } */ -/* { dg-final { scan-assembler "test2:.*bl\tl\n" } } */ - - -extern void g (void); - -void -f (void) -{} - -static void -l (void) -{} - -void -test (void) -{ - g (); -} - -void -test1 (void) -{ - f (); -} - -void -test2 (void) -{ - l (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-8.c b/gcc/testsuite/gcc.target/loongarch/func-call-8.c deleted file mode 100644 index 4254eaa16d44..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-8.c +++ /dev/null @@ -1,33 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O0 -fno-pic -fno-plt -mexplicit-relocs -mcmodel=normal" } */ -/* { dg-final { scan-assembler "test:.*pcalau12i\t.*%got_pc_hi20\\(g\\)\n\tld\.d\t.*%got_pc_lo12\\(g\\)\n\tjirl" } } */ -/* { dg-final { scan-assembler "test1:.*bl\tf\n" } } */ -/* { dg-final { scan-assembler "test2:.*bl\tl\n" } } */ - -extern void g (void); - -void -f (void) -{} - -static void -l (void) -{} - -void -test (void) -{ - g (); -} - -void -test1 (void) -{ - f (); -} - -void -test2 (void) -{ - l (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-extreme-1.c b/gcc/testsuite/gcc.target/loongarch/func-call-extreme-1.c deleted file mode 100644 index fdb4cf1ff7ff..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-extreme-1.c +++ /dev/null @@ -1,34 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2 -fno-pic -fno-plt -mexplicit-relocs -mcmodel=extreme" } */ -/* { dg-final { scan-assembler "test:.*pcalau12i.*%got_pc_hi20.*\n\taddi\.d.*%got_pc_lo12.*\n\tlu32i\.d.*%got64_pc_lo20.*\n\tlu52i\.d.*%got64_pc_hi12.*\n\tldx\.d" } } */ -/* { dg-final { scan-assembler "test1:.*pcalau12i.*%pc_hi20.*\n\taddi\.d.*%pc_lo12.*\n\tlu32i\.d.*%pc64_lo20.*\n\tlu52i\.d.*pc64_hi12.*\n\tadd\.d" } } */ -/* { dg-final { scan-assembler "test2:.*pcalau12i.*%pc_hi20.*\n\taddi\.d.*%pc_lo12.*\n\tlu32i\.d.*%pc64_lo20.*\n\tlu52i\.d.*pc64_hi12.*\n\tadd\.d" } } */ - -#define NOIPA __attribute__ ((noipa)) - -extern void g (void); -NOIPA void -f (void) -{} - -NOIPA static void -l (void) -{} - -NOIPA void -test (void) -{ - g (); -} - -NOIPA void -test1 (void) -{ - f (); -} - -NOIPA void -test2 (void) -{ - l (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-extreme-2.c b/gcc/testsuite/gcc.target/loongarch/func-call-extreme-2.c deleted file mode 100644 index dfba3882b975..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-extreme-2.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2 -fpic -fno-plt -mexplicit-relocs -mcmodel=extreme" } */ -/* { dg-final { scan-assembler "test:.*pcalau12i.*%got_pc_hi20.*\n\taddi\.d.*%got_pc_lo12.*\n\tlu32i\.d.*%got64_pc_lo20.*\n\tlu52i\.d.*%got64_pc_hi12.*\n\tldx\.d" } } */ -/* { dg-final { scan-assembler "test1:.*pcalau12i.*%got_pc_hi20.*\n\taddi\.d.*%got_pc_lo12.*\n\tlu32i\.d.*%got64_pc_lo20.*\n\tlu52i\.d.*%got64_pc_hi12.*\n\tldx\.d" } } */ -/* { dg-final { scan-assembler "test2:.*pcalau12i.*%pc_hi20.*\n\taddi\.d.*%pc_lo12.*\n\tlu32i\.d.*%pc64_lo20.*\n\tlu52i\.d.*pc64_hi12.*\n\tadd\.d" } } */ - -#include "func-call-extreme-1.c" diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-extreme-3.c b/gcc/testsuite/gcc.target/loongarch/func-call-extreme-3.c deleted file mode 100644 index 1f5234f83d18..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-extreme-3.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2 -fno-pic -fno-plt -mexplicit-relocs=auto -mcmodel=extreme" } */ -/* { dg-final { scan-assembler "test:.*pcalau12i.*%got_pc_hi20.*\n\taddi\.d.*%got_pc_lo12.*\n\tlu32i\.d.*%got64_pc_lo20.*\n\tlu52i\.d.*%got64_pc_hi12.*\n\tldx\.d" } } */ -/* { dg-final { scan-assembler "test1:.*pcalau12i.*%pc_hi20.*\n\taddi\.d.*%pc_lo12.*\n\tlu32i\.d.*%pc64_lo20.*\n\tlu52i\.d.*pc64_hi12.*\n\tadd\.d" } } */ -/* { dg-final { scan-assembler "test2:.*pcalau12i.*%pc_hi20.*\n\taddi\.d.*%pc_lo12.*\n\tlu32i\.d.*%pc64_lo20.*\n\tlu52i\.d.*pc64_hi12.*\n\tadd\.d" } } */ - -#include "func-call-extreme-1.c" diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-extreme-4.c b/gcc/testsuite/gcc.target/loongarch/func-call-extreme-4.c deleted file mode 100644 index c42285006351..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-extreme-4.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2 -fpic -fno-plt -mexplicit-relocs=auto -mcmodel=extreme" } */ -/* { dg-final { scan-assembler "test:.*pcalau12i.*%got_pc_hi20.*\n\taddi\.d.*%got_pc_lo12.*\n\tlu32i\.d.*%got64_pc_lo20.*\n\tlu52i\.d.*%got64_pc_hi12.*\n\tldx\.d" } } */ -/* { dg-final { scan-assembler "test1:.*pcalau12i.*%got_pc_hi20.*\n\taddi\.d.*%got_pc_lo12.*\n\tlu32i\.d.*%got64_pc_lo20.*\n\tlu52i\.d.*%got64_pc_hi12.*\n\tldx\.d" } } */ -/* { dg-final { scan-assembler "test2:.*pcalau12i.*%pc_hi20.*\n\taddi\.d.*%pc_lo12.*\n\tlu32i\.d.*%pc64_lo20.*\n\tlu52i\.d.*pc64_hi12.*\n\tadd\.d" } } */ - -#include "func-call-extreme-1.c" diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-extreme-5.c b/gcc/testsuite/gcc.target/loongarch/func-call-extreme-5.c deleted file mode 100644 index b1bd9d236ea1..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-extreme-5.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O0 -fpic -fno-plt -mexplicit-relocs=none -mcmodel=extreme" } */ -/* { dg-final { scan-assembler "test:.*la.global\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,g" } } */ -/* { dg-final { scan-assembler "test1:.*la.global\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,f" } } */ -/* { dg-final { scan-assembler "test2:.*la.local\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,l" } } */ - -#include "func-call-extreme-1.c" diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-extreme-6.c b/gcc/testsuite/gcc.target/loongarch/func-call-extreme-6.c deleted file mode 100644 index 6e6ad5c9f5ca..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-extreme-6.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O0 -fno-pic -fno-plt -mexplicit-relocs=none -mcmodel=extreme" } */ -/* { dg-final { scan-assembler "test:.*la.global\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,g" } } */ -/* { dg-final { scan-assembler "test1:.*la.local\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,f" } } */ -/* { dg-final { scan-assembler "test2:.*la.local\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,l" } } */ - -#include "func-call-extreme-1.c" diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-medium-1.c b/gcc/testsuite/gcc.target/loongarch/func-call-medium-1.c deleted file mode 100644 index 5e81df55207b..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-medium-1.c +++ /dev/null @@ -1,41 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O0 -fpic -fplt -mno-explicit-relocs -mtls-dialect=trad -mcmodel=medium" } */ -/* { dg-final { scan-assembler "test:.*la\.global\t.*g\n\tjirl" } } */ -/* { dg-final { scan-assembler "test1:.*la\.global\t.*f\n\tjirl" } } */ -/* { dg-final { scan-assembler "test2:.*la\.local\t.*l\n\tjirl" } } */ -/* { dg-final { scan-assembler "test3:.*la\.global\t.*\_\_tls\_get\_addr" { target tls_native } } } */ - -extern void g (void); -void -f (void) -{} - -static void -l (void) -{} - -void -test (void) -{ - g (); -} - -void -test1 (void) -{ - f (); -} - -void -test2 (void) -{ - l (); -} - -__attribute__ ((tls_model ("global-dynamic"))) __thread int a; - -void -test3 (void) -{ - a = 10; -} diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-medium-2.c b/gcc/testsuite/gcc.target/loongarch/func-call-medium-2.c deleted file mode 100644 index e97044a6013c..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-medium-2.c +++ /dev/null @@ -1,45 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2 -fno-pic -fplt -mno-explicit-relocs -mtls-dialect=trad -mcmodel=medium" } */ -/* { dg-final { check-function-bodies "**" "" } } */ - -extern void g (void); -void __attribute__ ((noipa,noinline)) -f (void) -{} - -static void __attribute__ ((noipa,noinline)) -l (void) -{} - -/* -** test: -** la.global (\$r[0-9]+),g -** jr (\$r[0-9]+) -*/ -void -test (void) -{ - g (); -} - -/* -** test1: -** la.local (\$r[0-9]+),f -** jr (\$r[0-9]+) -*/ -void -test1 (void) -{ - f (); -} - -/* -** test2: -** la.local (\$r[0-9]+),l -** jr (\$r[0-9]+) -*/ -void -test2 (void) -{ - l (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-medium-3.c b/gcc/testsuite/gcc.target/loongarch/func-call-medium-3.c deleted file mode 100644 index 8754fc6ef309..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-medium-3.c +++ /dev/null @@ -1,54 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2 -fpic -fno-plt -mno-explicit-relocs -mtls-dialect=trad -mcmodel=medium" } */ -/* { dg-final { check-function-bodies "**" "" } } */ - -extern void g (void); -void __attribute__ ((noinline)) -f (void) -{} - -static void __attribute__ ((noipa,noinline)) -l (void) -{} - -/* -** test: -** la.global (\$r[0-9]+),g -** jr (\$r[0-9]+) -*/ -void -test (void) -{ - g (); -} - -/* -** test1: -** la.global (\$r[0-9]+),f -** jr (\$r[0-9]+) -*/ -void -test1 (void) -{ - f (); -} - -/* -** test2: -** la.local (\$r[0-9]+),l -** jr (\$r[0-9]+) -*/ -void -test2 (void) -{ - l (); -} - -__attribute__ ((tls_model ("global-dynamic"))) __thread int a; - -void -test3 (void) -{ - a = 10; -} -/* { dg-final { scan-assembler "test3:.*la\.global\t.*\_\_tls\_get\_addr" { target tls_native } } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-medium-5.c b/gcc/testsuite/gcc.target/loongarch/func-call-medium-5.c deleted file mode 100644 index cae880bd80c9..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-medium-5.c +++ /dev/null @@ -1,43 +0,0 @@ -/* { dg-do compile } */ -/* { dg-skip-if "dg-require-effective-target loongarch_call36_support" { *-*-* } } */ -/* { dg-options "-mabi=lp64d -O0 -fpic -fplt -mexplicit-relocs -mcmodel=medium" } */ -/* { dg-final { scan-assembler "test:.*pcalau12i.*%pc_hi20\\(g\\)\n\tjirl.*pc_lo12\\(g\\)" } } */ -/* { dg-final { scan-assembler "test1:.*pcalau12i.*%pc_hi20\\(f\\)\n\tjirl.*%pc_lo12\\(f\\)" } } */ -/* { dg-final { scan-assembler "test2:.*pcalau12i.*%pc_hi20\\(l\\)\n\tjirl.*%pc_lo12\\(l\\)" } } */ -/* { dg-final { scan-assembler "test3:.*pcalau12i.*%pc_hi20\\(__tls_get_addr\\)\n\t.*\n\tjirl.*%pc_lo12\\(__tls_get_addr\\)" { target tls_native } } } */ - -extern void g (void); - -void -f (void) -{} - -static void -l (void) -{} - -void -test (void) -{ - g (); -} - -void -test1 (void) -{ - f (); -} - -void -test2 (void) -{ - l (); -} - -__attribute__ ((tls_model ("global-dynamic"))) __thread int a; - -void -test3 (void) -{ - a = 10; -} diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-medium-6.c b/gcc/testsuite/gcc.target/loongarch/func-call-medium-6.c deleted file mode 100644 index 33819542d83a..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-medium-6.c +++ /dev/null @@ -1,43 +0,0 @@ -/* { dg-do compile } */ -/* { dg-skip-if "dg-require-effective-target loongarch_call36_support" { *-*-* } } */ -/* { dg-options "-mabi=lp64d -O0 -fno-pic -fplt -mexplicit-relocs -mcmodel=medium" } */ -/* { dg-final { scan-assembler "test:.*pcalau12i.*%pc_hi20\\(g\\)\n\tjirl.*pc_lo12\\(g\\)" } } */ -/* { dg-final { scan-assembler "test1:.*pcalau12i.*%pc_hi20\\(f\\)\n\tjirl.*%pc_lo12\\(f\\)" } } */ -/* { dg-final { scan-assembler "test2:.*pcalau12i.*%pc_hi20\\(l\\)\n\tjirl.*%pc_lo12\\(l\\)" } } */ -/* { dg-final { scan-assembler "test3:.*pcalau12i.*%pc_hi20\\(__tls_get_addr\\)\n\t.*\n\tjirl.*%pc_lo12\\(__tls_get_addr\\)" { target tls_native } } } */ - -extern void g (void); - -void -f (void) -{} - -static void -l (void) -{} - -void -test (void) -{ - g (); -} - -void -test1 (void) -{ - f (); -} - -void -test2 (void) -{ - l (); -} - -__attribute__ ((tls_model ("global-dynamic"))) __thread int a; - -void -test3 (void) -{ - a = 10; -} diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-medium-7.c b/gcc/testsuite/gcc.target/loongarch/func-call-medium-7.c deleted file mode 100644 index 969b59d043e8..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-medium-7.c +++ /dev/null @@ -1,44 +0,0 @@ -/* { dg-do compile } */ -/* { dg-skip-if "dg-require-effective-target loongarch_call36_support" { *-*-* } } */ -/* { dg-options "-mabi=lp64d -O0 -fpic -fno-plt -mexplicit-relocs -mcmodel=medium" } */ -/* { dg-final { scan-assembler "test:.*pcalau12i\t.*%got_pc_hi20\\(g\\)\n\tld\.d\t.*%got_pc_lo12\\(g\\)\n\tjirl" } } */ -/* { dg-final { scan-assembler "test1:.*pcalau12i\t.*%got_pc_hi20\\(f\\)\n\tld\.d\t.*%got_pc_lo12\\(f\\)\n\tjirl" } } */ -/* { dg-final { scan-assembler "test2:.*pcalau12i\t.*%pc_hi20\\(l\\)\n\tjirl.*%pc_lo12\\(l\\)" } } */ -/* { dg-final { scan-assembler "test3:.*pcalau12i.*%got_pc_hi20\\(__tls_get_addr\\)\n\tld\.d.*%got_pc_lo12\\(__tls_get_addr\\)" { target tls_native } } } */ - - -extern void g (void); - -void -f (void) -{} - -static void -l (void) -{} - -void -test (void) -{ - g (); -} - -void -test1 (void) -{ - f (); -} - -void -test2 (void) -{ - l (); -} - -__attribute__ ((tls_model ("global-dynamic"))) __thread int a; - -void -test3 (void) -{ - a = 10; -} diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-medium-8.c b/gcc/testsuite/gcc.target/loongarch/func-call-medium-8.c deleted file mode 100644 index 786ff395f0b0..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-medium-8.c +++ /dev/null @@ -1,44 +0,0 @@ -/* { dg-do compile } */ -/* { dg-skip-if "dg-require-effective-target loongarch_call36_support" { *-*-* } } */ -/* { dg-options "-mabi=lp64d -O0 -fno-pic -fno-plt -mexplicit-relocs -mcmodel=medium" } */ -/* { dg-final { scan-assembler "test:.*pcalau12i\t.*%got_pc_hi20\\(g\\)\n\tld\.d\t.*%got_pc_lo12\\(g\\)\n\tjirl" } } */ -/* { dg-final { scan-assembler "test1:.*pcalau12i\t.*%pc_hi20\\(f\\)\n\tjirl.*%pc_lo12\\(f\\)" } } */ -/* { dg-final { scan-assembler "test2:.*pcalau12i\t.*%pc_hi20\\(l\\)\n\tjirl.*%pc_lo12\\(l\\)" } } */ -/* { dg-final { scan-assembler "test3:.*pcalau12i.*%got_pc_hi20\\(__tls_get_addr\\)\n\tld\.d.*%got_pc_lo12\\(__tls_get_addr\\)" { target tls_native } } } */ -/* { dg-final { scan-assembler "test3:.*pcalau12i.*%got_pc_hi20\\(__tls_get_addr\\)\n\tld\.d.*%got_pc_lo12\\(__tls_get_addr\\)" { target tls_native } } } */ - -extern void g (void); - -void -f (void) -{} - -static void -l (void) -{} - -void -test (void) -{ - g (); -} - -void -test1 (void) -{ - f (); -} - -void -test2 (void) -{ - l (); -} - -__attribute__ ((tls_model ("global-dynamic"))) __thread int a; - -void -test3 (void) -{ - a = 10; -} diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-medium-call36-1.c b/gcc/testsuite/gcc.target/loongarch/func-call-medium-call36-1.c deleted file mode 100644 index 872ff32f825a..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-medium-call36-1.c +++ /dev/null @@ -1,21 +0,0 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target loongarch_call36_support } */ -/* { dg-options "-mcmodel=medium -mexplicit-relocs -fdump-rtl-final -O2" } */ -/* { dg-final { scan-assembler "test:.*pcaddu18i\t\\\$r1,%call36\\(func\\)" } } */ -/* { dg-final { scan-assembler "test_value:.*pcaddu18i\t\\\$r1,%call36\\(func_value\\)" } } */ - -extern void func (void); -int -test (void) -{ - func (); -} - - -extern int func_value (void); -float -test_value (void) -{ - func_value (); -} - diff --git a/gcc/testsuite/gcc.target/loongarch/func-call-medium-call36.c b/gcc/testsuite/gcc.target/loongarch/func-call-medium-call36.c deleted file mode 100644 index 98ccd260df59..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/func-call-medium-call36.c +++ /dev/null @@ -1,32 +0,0 @@ -/* { dg-do compile } */ -/* { dg-require-effective-target loongarch_call36_support } */ -/* { dg-options "-mcmodel=medium -mexplicit-relocs -fdump-rtl-final -O2" } */ -/* { dg-final { scan-rtl-dump-times "\\(clobber \\(reg:DI 12 \\\$r12\\)\\)" 3 "final" } } */ -/* { dg-final { scan-assembler "test:.*pcaddu18i\t\\\$r12,%call36\\(func\\)" } } */ -/* { dg-final { scan-assembler "test_value:.*pcaddu18i\t\\\$r12,%call36\\(func_value\\)" } } */ -/* { dg-final { scan-assembler "test_multi:.*pcaddu18i\t\\\$r12,%call36\\(func_multi\\)" } } */ - -extern void func (void); -void -test (void) -{ - func(); -} - - -extern int func_value (void); -int -test_value (void) -{ - func_value (); -} - -struct t {float a; float b;}; - -extern struct t func_multi (void); -struct t -test_multi (void) -{ - func_multi (); -} - diff --git a/gcc/testsuite/gcc.target/loongarch/imm-load.c b/gcc/testsuite/gcc.target/loongarch/imm-load.c deleted file mode 100644 index a125840d5072..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/imm-load.c +++ /dev/null @@ -1,11 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2 -fdump-rtl-split1" } */ -/* { dg-final { scan-assembler-not "test:.*>>.*test" } } */ - -long int -test (void) -{ - return 0x1234567890abcdef; -} -/* { dg-final { scan-rtl-dump-times "scanning new insn with uid" 4 "split1" } } */ - diff --git a/gcc/testsuite/gcc.target/loongarch/imm-load1.c b/gcc/testsuite/gcc.target/loongarch/imm-load1.c deleted file mode 100644 index f64cc2956a36..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/imm-load1.c +++ /dev/null @@ -1,27 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2" } */ -/* { dg-final { scan-assembler-not "test:.*lu52i\.d.*\n\taddi\.w.*\n\.L2:" } } */ -/* { dg-final { scan-assembler "test:.*lu12i\.w.*\n\tbstrins\.d.*\n\.L2:" } } */ - - -extern long long b[10]; -static inline long long -repeat_bytes (void) -{ - long long r = 0x0101010101010101; - - return r; -} - -static inline long long -highbit_mask (long long m) -{ - return m & repeat_bytes (); -} - -void test(long long *a) -{ - for (int i = 0; i < 10; i++) - b[i] = highbit_mask (a[i]); - -} diff --git a/gcc/testsuite/gcc.target/loongarch/invariant-recip.c b/gcc/testsuite/gcc.target/loongarch/invariant-recip.c deleted file mode 100644 index 2f64f6ed5e50..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/invariant-recip.c +++ /dev/null @@ -1,33 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-Ofast -march=loongarch64 -mabi=lp64d -mrecip -mfrecipe -fdump-rtl-loop2_invariant " } */ -/* { dg-final { scan-rtl-dump "Decided to move dependent invariant" "loop2_invariant" } } */ - -void -nislfv_rain_plm (int im, int km, float dzl[im][km], float rql[im][km], - float dt) -{ - int i, k; - float con1, decfl; - float dz[km], qn[km], wi[km + 1]; - - for (i = 0; i < im; i++) - { - for (k = 0; k < km; k++) - { - dz[k] = dzl[i][k]; - } - con1 = 0.05; - for (k = km - 1; k >= 0; k--) - { - decfl = (wi[k + 1] - wi[k]) * dt / dz[k]; - if (decfl > con1) - { - wi[k] = wi[k + 1] - con1 * dz[k] / dt; - } - } - for (k = 0; k < km; k++) - { - rql[i][k] = qn[k]; - } - } -} diff --git a/gcc/testsuite/gcc.target/loongarch/larch-builtin.c b/gcc/testsuite/gcc.target/loongarch/larch-builtin.c index ca7ddb1406f5..3655915533ae 100644 --- a/gcc/testsuite/gcc.target/loongarch/larch-builtin.c +++ b/gcc/testsuite/gcc.target/loongarch/larch-builtin.c @@ -2,39 +2,39 @@ /* { dg-do compile } */ -/* { dg-final { scan-assembler-times "test_rdtime_d:.*rdtime\\.d.*\\.size test_rdtime_d" 1 } } */ +/* { dg-final { scan-assembler-times "test_rdtime_d:.*rdtime\\.d.*\\.size test_rdtime_d" 1 { target { loongarch64*-*-* } } } } */ /* { dg-final { scan-assembler-times "test_rdtimeh_w:.*rdtimeh\\.w.*\\.size test_rdtimeh_w" 1 } } */ /* { dg-final { scan-assembler-times "test_rdtimel_w:.*rdtimel\\.w.*\\.size test_rdtimel_w" 1 } } */ -/* { dg-final { scan-assembler-times "test_movfcsr2gr:.*movfcsr2gr.*\\.size test_movfcsr2gr" 1 } } */ -/* { dg-final { scan-assembler-times "test_movgr2fcsr:.*movgr2fcsr.*\\.size test_movgr2fcsr" 1 } } */ -/* { dg-final { scan-assembler-times "test_cacop_d:.*cacop.*\\.size test_cacop_d" 1 } } */ +/* { dg-final { scan-assembler-times "test_movfcsr2gr:.*movfcsr2gr.*\\.size test_movfcsr2gr" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_movgr2fcsr:.*movgr2fcsr.*\\.size test_movgr2fcsr" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_cacop_d:.*cacop.*\\.size test_cacop_d" 1 { target { loongarch64*-*-* } } } } */ /* { dg-final { scan-assembler-times "test_cpucfg:.*cpucfg.*\\.size test_cpucfg" 1 } } */ -/* { dg-final { scan-assembler-times "test_asrtle_d:.*asrtle\\.d.*\\.size test_asrtle_d" 1 } } */ -/* { dg-final { scan-assembler-times "test_asrtgt_d:.*asrtgt\\.d.*\\.size test_asrtgt_d" 1 } } */ -/* { dg-final { scan-assembler-times "test_lddir_d:.*lddir.*\\.size test_lddir_d" 1 } } */ -/* { dg-final { scan-assembler-times "test_ldpte_d:.*ldpte.*\\.size test_ldpte_d" 1 } } */ -/* { dg-final { scan-assembler-times "test_crc_w_b_w:.*crc\\.w\\.b\\.w.*\\.size test_crc_w_b_w" 1 } } */ -/* { dg-final { scan-assembler-times "test_crc_w_h_w:.*crc\\.w\\.h\\.w.*\\.size test_crc_w_h_w" 1 } } */ -/* { dg-final { scan-assembler-times "test_crc_w_w_w:.*crc\\.w\\.w\\.w.*\\.size test_crc_w_w_w" 1 } } */ -/* { dg-final { scan-assembler-times "test_crc_w_d_w:.*crc\\.w\\.d\\.w.*\\.size test_crc_w_d_w" 1 } } */ -/* { dg-final { scan-assembler-times "test_crcc_w_b_w:.*crcc\\.w\\.b\\.w.*\\.size test_crcc_w_b_w" 1 } } */ -/* { dg-final { scan-assembler-times "test_crcc_w_h_w:.*crcc\\.w\\.h\\.w.*\\.size test_crcc_w_h_w" 1 } } */ -/* { dg-final { scan-assembler-times "test_crcc_w_w_w:.*crcc\\.w\\.w\\.w.*\\.size test_crcc_w_w_w" 1 } } */ -/* { dg-final { scan-assembler-times "test_crcc_w_d_w:.*crcc\\.w\\.d\\.w.*\\.size test_crcc_w_d_w" 1 } } */ +/* { dg-final { scan-assembler-times "test_asrtle_d:.*asrtle\\.d.*\\.size test_asrtle_d" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_asrtgt_d:.*asrtgt\\.d.*\\.size test_asrtgt_d" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_lddir_d:.*lddir.*\\.size test_lddir_d" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_ldpte_d:.*ldpte.*\\.size test_ldpte_d" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_crc_w_b_w:.*crc\\.w\\.b\\.w.*\\.size test_crc_w_b_w" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_crc_w_h_w:.*crc\\.w\\.h\\.w.*\\.size test_crc_w_h_w" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_crc_w_w_w:.*crc\\.w\\.w\\.w.*\\.size test_crc_w_w_w" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_crc_w_d_w:.*crc\\.w\\.d\\.w.*\\.size test_crc_w_d_w" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_crcc_w_b_w:.*crcc\\.w\\.b\\.w.*\\.size test_crcc_w_b_w" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_crcc_w_h_w:.*crcc\\.w\\.h\\.w.*\\.size test_crcc_w_h_w" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_crcc_w_w_w:.*crcc\\.w\\.w\\.w.*\\.size test_crcc_w_w_w" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_crcc_w_d_w:.*crcc\\.w\\.d\\.w.*\\.size test_crcc_w_d_w" 1 { target { loongarch64*-*-* } } } } */ /* { dg-final { scan-assembler-times "test_csrrd_w:.*csrrd.*\\.size test_csrrd_w" 1 } } */ /* { dg-final { scan-assembler-times "test_csrwr_w:.*csrwr.*\\.size test_csrwr_w" 1 } } */ /* { dg-final { scan-assembler-times "test_csrxchg_w:.*csrxchg.*\\.size test_csrxchg_w" 1 } } */ -/* { dg-final { scan-assembler-times "test_csrrd_d:.*csrrd.*\\.size test_csrrd_d" 1 } } */ -/* { dg-final { scan-assembler-times "test_csrwr_d:.*csrwr.*\\.size test_csrwr_d" 1 } } */ -/* { dg-final { scan-assembler-times "test_csrxchg_d:.*csrxchg.*\\.size test_csrxchg_d" 1 } } */ -/* { dg-final { scan-assembler-times "test_iocsrrd_b:.*iocsrrd\\.b.*\\.size test_iocsrrd_b" 1 } } */ -/* { dg-final { scan-assembler-times "test_iocsrrd_h:.*iocsrrd\\.h.*\\.size test_iocsrrd_h" 1 } } */ -/* { dg-final { scan-assembler-times "test_iocsrrd_w:.*iocsrrd\\.w.*\\.size test_iocsrrd_w" 1 } } */ -/* { dg-final { scan-assembler-times "test_iocsrrd_d:.*iocsrrd\\.d.*\\.size test_iocsrrd_d" 1 } } */ -/* { dg-final { scan-assembler-times "test_iocsrwr_b:.*iocsrwr\\.b.*\\.size test_iocsrwr_b" 1 } } */ -/* { dg-final { scan-assembler-times "test_iocsrwr_h:.*iocsrwr\\.h.*\\.size test_iocsrwr_h" 1 } } */ -/* { dg-final { scan-assembler-times "test_iocsrwr_w:.*iocsrwr\\.w.*\\.size test_iocsrwr_w" 1 } } */ -/* { dg-final { scan-assembler-times "test_iocsrwr_d:.*iocsrwr\\.d.*\\.size test_iocsrwr_d" 1 } } */ +/* { dg-final { scan-assembler-times "test_csrrd_d:.*csrrd.*\\.size test_csrrd_d" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_csrwr_d:.*csrwr.*\\.size test_csrwr_d" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_csrxchg_d:.*csrxchg.*\\.size test_csrxchg_d" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_iocsrrd_b:.*iocsrrd\\.b.*\\.size test_iocsrrd_b" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_iocsrrd_h:.*iocsrrd\\.h.*\\.size test_iocsrrd_h" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_iocsrrd_w:.*iocsrrd\\.w.*\\.size test_iocsrrd_w" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_iocsrrd_d:.*iocsrrd\\.d.*\\.size test_iocsrrd_d" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_iocsrwr_b:.*iocsrwr\\.b.*\\.size test_iocsrwr_b" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_iocsrwr_h:.*iocsrwr\\.h.*\\.size test_iocsrwr_h" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_iocsrwr_w:.*iocsrwr\\.w.*\\.size test_iocsrwr_w" 1 { target { loongarch64*-*-* } } } } */ +/* { dg-final { scan-assembler-times "test_iocsrwr_d:.*iocsrwr\\.d.*\\.size test_iocsrwr_d" 1 { target { loongarch64*-*-* } } } } */ /* { dg-final { scan-assembler-times "test_dbar:.*dbar.*\\.size test_dbar" 1 } } */ /* { dg-final { scan-assembler-times "test_ibar:.*ibar.*\\.size test_ibar" 1 } } */ /* { dg-final { scan-assembler-times "test_syscall:.*syscall.*\\.size test_syscall" 1 } } */ @@ -42,11 +42,13 @@ #include +#ifdef __loongarch64 __drdtime_t test_rdtime_d () { return __rdtime_d (); } +#endif __rdtime_t test_rdtimeh_w () @@ -60,6 +62,7 @@ test_rdtimel_w () return __rdtimel_w (); } +#ifdef __loongarch_hard_float unsigned int test_movfcsr2gr () { @@ -71,12 +74,15 @@ test_movgr2fcsr (unsigned int _1) { __movgr2fcsr (1, _1); } +#endif +#ifdef __loongarch64 void test_cacop_d (unsigned long int _1) { __cacop_d (1, _1, 1); } +#endif unsigned int test_cpucfg (unsigned int _1) @@ -84,6 +90,7 @@ test_cpucfg (unsigned int _1) return __cpucfg (_1); } +#ifdef __loongarch64 void test_asrtle_d (long int _1, long int _2) { @@ -155,6 +162,7 @@ test_crcc_w_d_w (long int _1, int _2) { return __crcc_w_d_w (_1, _2); } +#endif unsigned int test_csrrd_w () @@ -174,6 +182,7 @@ test_csrxchg_w (unsigned int _1, unsigned int _2) return __csrxchg_w (_1, _2, 1); } +#ifdef __loongarch64 unsigned long int test_csrrd_d () { @@ -191,7 +200,9 @@ test_csrxchg_d (unsigned long int _1, unsigned long int _2) { return __csrxchg_d (_1, _2, 1); } +#endif +#ifdef __loongarch64 unsigned char test_iocsrrd_b (unsigned int _1) { @@ -209,13 +220,17 @@ test_iocsrrd_w (unsigned int _1) { return __iocsrrd_w (_1); } +#endif +#ifdef __loongarch64 unsigned long int test_iocsrrd_d (unsigned int _1) { return __iocsrrd_d (_1); } +#endif +#ifdef __loongarch64 void test_iocsrwr_b (unsigned char _1, unsigned int _2) { @@ -233,12 +248,15 @@ test_iocsrwr_w (unsigned int _1, unsigned int _2) { __iocsrwr_w (_1, _2); } +#endif +#ifdef __loongarch64 void test_iocsrwr_d (unsigned long int _1, unsigned int _2) { __iocsrwr_d (_1, _2); } +#endif void test_dbar () diff --git a/gcc/testsuite/gcc.target/loongarch/larch-frecipe-builtin.c b/gcc/testsuite/gcc.target/loongarch/larch-frecipe-builtin.c deleted file mode 100644 index b9329f346765..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/larch-frecipe-builtin.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Test builtins for frecipe.{s/d} and frsqrte.{s/d} instructions */ -/* { dg-do compile } */ -/* { dg-options "-mfrecipe" } */ -/* { dg-final { scan-assembler-times "test_frecipe_s:.*frecipe\\.s.*test_frecipe_s" 1 } } */ -/* { dg-final { scan-assembler-times "test_frecipe_d:.*frecipe\\.d.*test_frecipe_d" 1 } } */ -/* { dg-final { scan-assembler-times "test_frsqrte_s:.*frsqrte\\.s.*test_frsqrte_s" 1 } } */ -/* { dg-final { scan-assembler-times "test_frsqrte_d:.*frsqrte\\.d.*test_frsqrte_d" 1 } } */ - -float -test_frecipe_s (float _1) -{ - return __builtin_loongarch_frecipe_s (_1); -} -double -test_frecipe_d (double _1) -{ - return __builtin_loongarch_frecipe_d (_1); -} -float -test_frsqrte_s (float _1) -{ - return __builtin_loongarch_frsqrte_s (_1); -} -double -test_frsqrte_d (double _1) -{ - return __builtin_loongarch_frsqrte_d (_1); -} diff --git a/gcc/testsuite/gcc.target/loongarch/larch-frecipe-intrinsic.c b/gcc/testsuite/gcc.target/loongarch/larch-frecipe-intrinsic.c deleted file mode 100644 index 6ce2bde0acf2..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/larch-frecipe-intrinsic.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Test intrinsics for frecipe.{s/d} and frsqrte.{s/d} instructions */ -/* { dg-do compile } */ -/* { dg-options "-mfrecipe -O2" } */ -/* { dg-final { scan-assembler-times "test_frecipe_s:.*frecipe\\.s.*test_frecipe_s" 1 } } */ -/* { dg-final { scan-assembler-times "test_frecipe_d:.*frecipe\\.d.*test_frecipe_d" 1 } } */ -/* { dg-final { scan-assembler-times "test_frsqrte_s:.*frsqrte\\.s.*test_frsqrte_s" 1 } } */ -/* { dg-final { scan-assembler-times "test_frsqrte_d:.*frsqrte\\.d.*test_frsqrte_d" 1 } } */ - -#include - -float -test_frecipe_s (float _1) -{ - return __frecipe_s (_1); -} -double -test_frecipe_d (double _1) -{ - return __frecipe_d (_1); -} -float -test_frsqrte_s (float _1) -{ - return __frsqrte_s (_1); -} -double -test_frsqrte_d (double _1) -{ - return __frsqrte_d (_1); -} diff --git a/gcc/testsuite/gcc.target/loongarch/lasx-andn-iorn.c b/gcc/testsuite/gcc.target/loongarch/lasx-andn-iorn.c deleted file mode 100644 index 86b04dbbb335..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/lasx-andn-iorn.c +++ /dev/null @@ -1,11 +0,0 @@ -#define N 8 - -#include "./lsx-andn-iorn.c" - -/* { dg-do compile } */ -/* { dg-options "-O2 -mlasx -ftree-vectorize -fdump-tree-optimized" } */ - -/* We should produce a BIT_ANDC and BIT_IORC here. */ - -/* { dg-final { scan-tree-dump ".BIT_ANDN " "optimized" } } */ -/* { dg-final { scan-tree-dump ".BIT_IORN " "optimized" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/lasx-extract-even_odd-opt.c b/gcc/testsuite/gcc.target/loongarch/lasx-extract-even_odd-opt.c deleted file mode 100644 index 515f0c8621a7..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/lasx-extract-even_odd-opt.c +++ /dev/null @@ -1,54 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -mlasx" } */ -/* { dg-final { scan-assembler "xvilvl.d" } } */ -/* { dg-final { scan-assembler "xvilvh.d" } } */ - -#define CMUL(a, b, c) \ - { \ - (c).ai = (a).ai * (b).ai - (a).bi * (b).bi; \ - (c).bi = (a).ai * (b).bi + (a).bi * (b).ai; \ - (c).ci = (a).ci * (b).ci - (a).di * (b).di; \ - (c).di = (a).ci * (b).di + (a).di * (b).ci; \ - } -#define CSUM(a, b) \ - { \ - (a).ai += (b).ai; \ - (a).bi += (b).bi; \ - (a).ci += (b).ci; \ - (a).di += (b).di; \ - } - -typedef struct -{ - double ai; - double bi; - double ci; - double di; -} complex; - -typedef struct -{ - complex e[6][6]; -} matrix; - -typedef struct -{ - complex c[6]; -} vector; - -void -mult_adj_mat_vec (matrix *a, vector *b, vector *c) -{ - register int i, j; - register complex x, y; - for (i = 0; i < 6; i++) - { - x.ai = x.bi = x.ci = x.di = 0.0; - for (j = 0; j < 6; j++) - { - CMUL (a->e[j][i], b->c[j], y); - CSUM (x, y); - } - c->c[i] = x; - } -} diff --git a/gcc/testsuite/gcc.target/loongarch/lasx-func-attr-1.c b/gcc/testsuite/gcc.target/loongarch/lasx-func-attr-1.c deleted file mode 100644 index 720719e80b8d..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/lasx-func-attr-1.c +++ /dev/null @@ -1,19 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mno-lsx" } */ - -typedef int v8i32 __attribute__ ((vector_size(32), aligned(32))); -extern v8i32 a, b, c; - -#ifndef TEST_TARGET_PRAGMA -__attribute__ ((target ("lasx"))) -#else -#pragma GCC target ("lasx") -#endif -void -test (void) -{ - a = b + c; -} - - -/* { dg-final { scan-assembler "xvadd.w" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/lasx-func-attr-2.c b/gcc/testsuite/gcc.target/loongarch/lasx-func-attr-2.c deleted file mode 100644 index 33cc924d0e40..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/lasx-func-attr-2.c +++ /dev/null @@ -1,12 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlasx" } */ - -typedef int v8i32 __attribute__ ((vector_size(32), aligned(32))); -extern v8i32 a, b, c; - -__attribute__ ((target ("no-lasx"))) -void -test (void) -{ - a = __builtin_lasx_xvadd_w (b, c); /* { dg-error "built-in function '__builtin_lasx_xvadd_w' is not enabled" } */ -} diff --git a/gcc/testsuite/gcc.target/loongarch/lasx-pragma-attr-1.c b/gcc/testsuite/gcc.target/loongarch/lasx-pragma-attr-1.c deleted file mode 100644 index d5bc68f1cb83..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/lasx-pragma-attr-1.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mno-lsx" } */ - -#define TEST_TARGET_PRAGMA 1 -#include "./lasx-func-attr-1.c" - -/* { dg-final { scan-assembler "xvadd.w" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/lasx-pragma-attr-2.c b/gcc/testsuite/gcc.target/loongarch/lasx-pragma-attr-2.c deleted file mode 100644 index 67e4f7179fa2..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/lasx-pragma-attr-2.c +++ /dev/null @@ -1,12 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlasx" } */ - -typedef int v8i32 __attribute__ ((vector_size(32), aligned(32))); -extern v8i32 a, b, c; - -#pragma GCC target ("no-lasx") -void -test (void) -{ - a = __builtin_lasx_xvadd_w (b, c); /* { dg-error "built-in function '__builtin_lasx_xvadd_w' is not enabled" } */ -} diff --git a/gcc/testsuite/gcc.target/loongarch/lasx-reduc-1.c b/gcc/testsuite/gcc.target/loongarch/lasx-reduc-1.c deleted file mode 100644 index e4492593aa9c..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/lasx-reduc-1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -funsafe-math-optimizations -mlasx -fno-unroll-loops -fdump-tree-optimized" } */ -/* { dg-final { scan-tree-dump-times "\.REDUC_PLUS" 4 "optimized" } } */ - -#define DEFINE_SUM_FUNCTION(T, FUNC_NAME, SIZE) \ -T FUNC_NAME(const T arr[]) { \ - arr = __builtin_assume_aligned(arr, 64); \ - T sum = 0; \ - for (int i = 0; i < SIZE; i++) \ - sum += arr[i]; \ - return sum; \ -} - -DEFINE_SUM_FUNCTION (int, sum_int_1040, 1028) -DEFINE_SUM_FUNCTION (float, sum_float_1040, 1028) -DEFINE_SUM_FUNCTION (long, sum_long_1040, 1026) -DEFINE_SUM_FUNCTION (double, sum_double_1040, 1026) diff --git a/gcc/testsuite/gcc.target/loongarch/lasx-xvpermi_q-opt.c b/gcc/testsuite/gcc.target/loongarch/lasx-xvpermi_q-opt.c deleted file mode 100644 index 16fb9dfecdcc..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/lasx-xvpermi_q-opt.c +++ /dev/null @@ -1,44 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -mlasx -ftree-vectorize" } */ - -#include - -#define TEST_FUNC(imm) \ - __m256i \ - test_##imm (__m256i op0, __m256i op1) \ - { \ - return __lasx_xvpermi_q (op0, op1, imm); \ - } - -TEST_FUNC (0x00) -/* { dg-final { scan-assembler-not "test_0x00:.*\txvld.*xvld.*-test_0x00"} } */ -/* { dg-final { scan-assembler-times "test_0x00:.*\txvpermi\\.d.*-test_0x00" 1 } } */ - -TEST_FUNC (0x01) -/* { dg-final { scan-assembler-not "test_0x01:.*\txvld.*xvld.*-test_0x01"} } */ -/* { dg-final { scan-assembler-times "test_0x01:.*\txvpermi\\.d.*-test_0x01" 1 } } */ - -TEST_FUNC (0x10) -/* { dg-final { scan-assembler-not "test_0x10:.*\txvld.*xvld.*-test_0x10"} } */ -/* { dg-final { scan-assembler-not "test_0x10:.*\txvpermi.*-test_0x10"} } */ - -TEST_FUNC (0x11) -/* { dg-final { scan-assembler-not "test_0x11:.*\txvld.*xvld.*-test_0x11"} } */ -/* { dg-final { scan-assembler-times "test_0x11:.*\txvpermi\\.d.*-test_0x11" 1 } } */ - -TEST_FUNC (0x22) -/* { dg-final { scan-assembler-not "test_0x22:.*\txvld.*xvld.*-test_0x22"} } */ -/* { dg-final { scan-assembler-times "test_0x22:.*\txvpermi\\.d.*-test_0x22" 1 } } */ - -TEST_FUNC (0x23) -/* { dg-final { scan-assembler-not "test_0x23:.*\txvld.*xvld.*-test_0x23"} } */ -/* { dg-final { scan-assembler-times "test_0x23:.*\txvpermi\\.d.*-test_0x23" 1 } } */ - -TEST_FUNC (0x32) -/* { dg-final { scan-assembler-not "test_0x32:.*\txvld.*xvld.*-test_0x32"} } */ -/* { dg-final { scan-assembler-not "test_0x32:.*\txvpermi.*-test_0x32"} } */ - -TEST_FUNC (0x33) -/* { dg-final { scan-assembler-not "test_0x33:.*\txvld.*xvld.*-test_0x33"} } */ -/* { dg-final { scan-assembler-times "test_0x33:.*\txvpermi\\.d.*-test_0x33" 1 } } */ - diff --git a/gcc/testsuite/gcc.target/loongarch/lsx-andn-iorn.c b/gcc/testsuite/gcc.target/loongarch/lsx-andn-iorn.c deleted file mode 100644 index 14838ab8bff0..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/lsx-andn-iorn.c +++ /dev/null @@ -1,28 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlsx -ftree-vectorize -fdump-tree-optimized" } */ - -#ifndef N -#define N 4 -#endif - -extern float a[N], b[N]; -extern int c[N], d[N]; - -void -bar1 (void) -{ - for (int i = 0; i < N; i++) - d[i] = a[i] > b[i] ? 0 : c[i]; -} - -void -bar2 (void) -{ - for (int i = 0; i < N; i++) - d[i] = a[i] > b[i] ? c[i]: -1; -} - -/* We should produce a BIT_ANDC and BIT_IORC here. */ - -/* { dg-final { scan-tree-dump ".BIT_ANDN " "optimized" } } */ -/* { dg-final { scan-tree-dump ".BIT_IORN " "optimized" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/lsx-func-attr-1.c b/gcc/testsuite/gcc.target/loongarch/lsx-func-attr-1.c deleted file mode 100644 index 3558898d3536..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/lsx-func-attr-1.c +++ /dev/null @@ -1,19 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mno-lsx" } */ - -typedef int v4i32 __attribute__ ((vector_size(16), aligned(16))); -extern v4i32 a, b, c; - -#ifndef TEST_TARGET_PRAGMA -__attribute__ ((target ("lsx"))) -#else -#pragma GCC target ("lsx") -#endif -void -test (void) -{ - a = b + c; -} - - -/* { dg-final { scan-assembler "vadd.w" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/lsx-func-attr-2.c b/gcc/testsuite/gcc.target/loongarch/lsx-func-attr-2.c deleted file mode 100644 index 97475fff5797..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/lsx-func-attr-2.c +++ /dev/null @@ -1,12 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlsx" } */ - -typedef int v4i32 __attribute__ ((vector_size(16), aligned(16))); -extern v4i32 a, b, c; - -__attribute__ ((target ("no-lsx"))) -void -test (void) -{ - a = __builtin_lsx_vadd_w (b, c); /* { dg-error "built-in function '__builtin_lsx_vadd_w' is not enabled" } */ -} diff --git a/gcc/testsuite/gcc.target/loongarch/lsx-pragma-attr-1.c b/gcc/testsuite/gcc.target/loongarch/lsx-pragma-attr-1.c deleted file mode 100644 index c499f18fc42d..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/lsx-pragma-attr-1.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mno-lsx" } */ - -#define TEST_TARGET_PRAGMA 1 -#include "./lsx-func-attr-1.c" - -/* { dg-final { scan-assembler "vadd.w" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/lsx-pragma-attr-2.c b/gcc/testsuite/gcc.target/loongarch/lsx-pragma-attr-2.c deleted file mode 100644 index 40314d026eb9..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/lsx-pragma-attr-2.c +++ /dev/null @@ -1,12 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlsx" } */ - -typedef int v4i32 __attribute__ ((vector_size(16), aligned(16))); -extern v4i32 a, b, c; - -#pragma GCC target ("no-lsx") -void -test (void) -{ - a = __builtin_lsx_vadd_w (b, c); /* { dg-error "built-in function '__builtin_lsx_vadd_w' is not enabled" } */ -} diff --git a/gcc/testsuite/gcc.target/loongarch/math-float-128.c b/gcc/testsuite/gcc.target/loongarch/math-float-128.c deleted file mode 100644 index 387566a57c9d..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/math-float-128.c +++ /dev/null @@ -1,81 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options " -march=loongarch64 -O2 " } */ -/* { dg-final { scan-assembler-not "my_fabsq2:.*\\bl\t%plt\\(__builtin_fabsq\\).*my_fabsq2" } } */ -/* { dg-final { scan-assembler-not "my_copysignq2:.*\\bl\t%plt\\(__builtin_copysignq\\).*my_copysignq2" } } */ -/* { dg-final { scan-assembler-not "my_infq2:.*\\bl\t%plt\\(__builtin_infq\\).*my_infq2" } } */ -/* { dg-final { scan-assembler-not "my_huge_valq2:.*\\bl\t%plt\\(__builtin_huge_valq\\).*my_huge_valq2" } } */ -/* { dg-final { scan-assembler-not "my_nanq2:.*\\bl\t%plt\\(__builtin_nanq\\).*my_nanq2" } } */ -/* { dg-final { scan-assembler-not "my_nansq2:.*\\bl\t%plt\\(__builtin_nansq\\).*my_nansq2" } } */ - -__float128 -my_fabsq1 (__float128 a) -{ - return __builtin_fabsq (a); -} - -_Float128 -my_fabsq2 (_Float128 a) -{ - return __builtin_fabsq (a); -} - -__float128 -my_copysignq1 (__float128 a, __float128 b) -{ - return __builtin_copysignq (a, b); -} - -_Float128 -my_copysignq2 (_Float128 a, _Float128 b) -{ - return __builtin_copysignq (a, b); -} - -__float128 -my_infq1 (void) -{ - return __builtin_infq (); -} - -_Float128 -my_infq2 (void) -{ - return __builtin_infq (); -} - -__float128 -my_huge_valq1 (void) -{ - return __builtin_huge_valq (); -} - -_Float128 -my_huge_valq2 (void) -{ - return __builtin_huge_valq (); -} - -__float128 -my_nanq1 (void) -{ - return __builtin_nanq (""); -} - -_Float128 -my_nanq2 (void) -{ - return __builtin_nanq (""); -} - -__float128 -my_nansq1 (void) -{ - return __builtin_nansq (""); -} - -_Float128 -my_nansq2 (void) -{ - return __builtin_nansq (""); -} - diff --git a/gcc/testsuite/gcc.target/loongarch/mem-and-mask-opt.c b/gcc/testsuite/gcc.target/loongarch/mem-and-mask-opt.c deleted file mode 100644 index 9b3a5cdbbac6..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/mem-and-mask-opt.c +++ /dev/null @@ -1,23 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3" } */ -/* { dg-final { scan-assembler-not "bstrpick" } } */ -/* { dg-final { scan-assembler "ld\\.wu" } } */ - -struct st -{ - char const *name; -}; -struct fst -{ - struct st *groups; -}; - -struct fst *pfunc (int); - -const char * -test (int pc, unsigned group) -{ - struct fst *pci = pfunc (pc); - - return pci->groups[group].name; -} diff --git a/gcc/testsuite/gcc.target/loongarch/memcpy-vec-1.c b/gcc/testsuite/gcc.target/loongarch/memcpy-vec-1.c deleted file mode 100644 index 8d9fedc9e4fa..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/memcpy-vec-1.c +++ /dev/null @@ -1,11 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mabi=lp64d -march=la464 -mno-strict-align" } */ -/* { dg-final { scan-assembler-times "xvst" 2 } } */ -/* { dg-final { scan-assembler-times "\tvst" 1 } } */ -/* { dg-final { scan-assembler-times "st\\.d|stptr\\.d" 1 } } */ -/* { dg-final { scan-assembler-times "st\\.w|stptr\\.w" 1 } } */ -/* { dg-final { scan-assembler-times "st\\.h" 1 } } */ -/* { dg-final { scan-assembler-times "st\\.b" 1 } } */ - -extern char a[], b[]; -void test() { __builtin_memcpy(a, b, 95); } diff --git a/gcc/testsuite/gcc.target/loongarch/memcpy-vec-2.c b/gcc/testsuite/gcc.target/loongarch/memcpy-vec-2.c deleted file mode 100644 index 6b28b884db03..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/memcpy-vec-2.c +++ /dev/null @@ -1,12 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mabi=lp64d -march=la464 -mno-strict-align" } */ -/* { dg-final { scan-assembler-times "xvst" 2 } } */ -/* { dg-final { scan-assembler-times "\tvst" 1 } } */ -/* { dg-final { scan-assembler-times "st\\.d|stptr\\.d" 1 } } */ -/* { dg-final { scan-assembler-times "st\\.w|stptr\\.w" 1 } } */ -/* { dg-final { scan-assembler-times "st\\.h" 1 } } */ -/* { dg-final { scan-assembler-times "st\\.b" 1 } } */ - -typedef char __attribute__ ((vector_size (32), aligned (32))) vec; -extern vec a[], b[]; -void test() { __builtin_memcpy(a, b, 95); } diff --git a/gcc/testsuite/gcc.target/loongarch/memcpy-vec-3.c b/gcc/testsuite/gcc.target/loongarch/memcpy-vec-3.c deleted file mode 100644 index db2ea510b09f..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/memcpy-vec-3.c +++ /dev/null @@ -1,6 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=la464 -mabi=lp64d -mstrict-align" } */ -/* { dg-final { scan-assembler-not "vst" } } */ - -extern char a[], b[]; -void test() { __builtin_memcpy(a, b, 32); } diff --git a/gcc/testsuite/gcc.target/loongarch/mode-tieable-opt.c b/gcc/testsuite/gcc.target/loongarch/mode-tieable-opt.c deleted file mode 100644 index d6a6577bfe54..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/mode-tieable-opt.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile { target { loongarch64*-*-* } } } */ -/* { dg-options "-O3 -mno-lsx" } */ -/* { dg-final { scan-assembler-not "stptr\.d" } } */ -/* { dg-final { scan-assembler-not "fld\.d" } } */ -/* { dg-final { scan-assembler-not "fst\.d" } } */ -/* { dg-final { scan-assembler-not "ldptr\.d" } } */ -/* { dg-final { scan-assembler "movgr2fr\.d" } } */ -/* { dg-final { scan-assembler "movfr2gr\.d" } } */ - -typedef double vec __attribute__ ((vector_size(16))); - -vec -foo (vec x, double a) -{ - x[0] -= a; - return x; -} diff --git a/gcc/testsuite/gcc.target/loongarch/mov-zero-1.c b/gcc/testsuite/gcc.target/loongarch/mov-zero-1.c deleted file mode 100644 index 4744f2f2fdb9..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/mov-zero-1.c +++ /dev/null @@ -1,15 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlsx" } */ -/* { dg-final { scan-assembler-times "vxor\\.v" 2 } } */ - -double -get_double_zero () -{ - return 0; -} - -float -get_float_zero () -{ - return 0; -} diff --git a/gcc/testsuite/gcc.target/loongarch/mov-zero-2.c b/gcc/testsuite/gcc.target/loongarch/mov-zero-2.c deleted file mode 100644 index 6cb48052d0b4..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/mov-zero-2.c +++ /dev/null @@ -1,15 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mno-lsx" } */ -/* { dg-final { scan-assembler-times "movgr2fr" 2 } } */ - -double -get_double_zero () -{ - return 0; -} - -float -get_float_zero () -{ - return 0; -} diff --git a/gcc/testsuite/gcc.target/loongarch/movcf2gr-via-fr.c b/gcc/testsuite/gcc.target/loongarch/movcf2gr-via-fr.c deleted file mode 100644 index 23334a3a31fe..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/movcf2gr-via-fr.c +++ /dev/null @@ -1,10 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mtune=la464 -mabi=lp64d" } */ -/* { dg-final { scan-assembler "movcf2fr\t\\\$f\[0-9\]+,\\\$fcc" } } */ -/* { dg-final { scan-assembler "movfr2gr\\.s\t\\\$r4" } } */ - -int -t (float a, float b) -{ - return a > b; -} diff --git a/gcc/testsuite/gcc.target/loongarch/movcf2gr.c b/gcc/testsuite/gcc.target/loongarch/movcf2gr.c deleted file mode 100644 index d27c393b5edc..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/movcf2gr.c +++ /dev/null @@ -1,9 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mtune=la664 -mabi=lp64d" } */ -/* { dg-final { scan-assembler "movcf2gr\t\\\$r4,\\\$fcc" } } */ - -int -t (float a, float b) -{ - return a > b; -} diff --git a/gcc/testsuite/gcc.target/loongarch/mul-const-reduction.c b/gcc/testsuite/gcc.target/loongarch/mul-const-reduction.c deleted file mode 100644 index 02d9a4876d8b..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/mul-const-reduction.c +++ /dev/null @@ -1,11 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mtune=la464" } */ -/* { dg-final { scan-assembler "alsl\.w" } } */ -/* { dg-final { scan-assembler "slli\.w" } } */ -/* { dg-final { scan-assembler-not "mul\.w" } } */ - -int -test (int a) -{ - return a * 68; -} diff --git a/gcc/testsuite/gcc.target/loongarch/mulh_wu.c b/gcc/testsuite/gcc.target/loongarch/mulh_wu.c deleted file mode 100644 index 53fc518313c5..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/mulh_wu.c +++ /dev/null @@ -1,10 +0,0 @@ -/* { dg-do compile { target { loongarch64*-*-* } } } */ -/* { dg-options "-O3 -mabi=lp64d" } */ -/* { dg-final { scan-assembler "\tmulh.wu" } } */ -/* { dg-final { scan-assembler-not "\tlu32i.d" } } */ - -unsigned int -test (unsigned int *a) -{ - return *a / 60; -} diff --git a/gcc/testsuite/gcc.target/loongarch/mulw_d_w.c b/gcc/testsuite/gcc.target/loongarch/mulw_d_w.c deleted file mode 100644 index 4ab7df8836b4..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/mulw_d_w.c +++ /dev/null @@ -1,10 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mabi=lp64d" } */ -/* { dg-final { scan-assembler "mulw.d.w" } } */ - -/* This should be optimized to mulw.d.w for LA64. */ -__attribute__((noipa, noinline)) long -f(long a, long b) -{ - return (long)(int)a * (long)(int)b; -} diff --git a/gcc/testsuite/gcc.target/loongarch/mulw_d_wu.c b/gcc/testsuite/gcc.target/loongarch/mulw_d_wu.c deleted file mode 100644 index 16163d6675d0..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/mulw_d_wu.c +++ /dev/null @@ -1,9 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mabi=lp64d" } */ -/* { dg-final { scan-assembler "mulw.d.wu" } } */ - -__attribute__((noipa, noinline)) unsigned long -f(unsigned long a, unsigned long b) -{ - return (unsigned long)(unsigned int)a * (unsigned long)(unsigned int)b; -} diff --git a/gcc/testsuite/gcc.target/loongarch/popcnt.c b/gcc/testsuite/gcc.target/loongarch/popcnt.c deleted file mode 100644 index a10fca420923..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/popcnt.c +++ /dev/null @@ -1,41 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlsx" } */ -/* { dg-final { scan-assembler-not {popcount} } } */ -/* { dg-final { scan-assembler-times "vpcnt.d" 2 { target { loongarch64*-*-* } } } } */ -/* { dg-final { scan-assembler-times "vpcnt.w" 4 { target { loongarch64*-*-* } } } } */ - -int -foo (int x) -{ - return __builtin_popcount (x); -} - -long -foo1 (long x) -{ - return __builtin_popcountl (x); -} - -long long -foo2 (long long x) -{ - return __builtin_popcountll (x); -} - -int -foo3 (int *p) -{ - return __builtin_popcount (*p); -} - -unsigned -foo4 (int x) -{ - return __builtin_popcount (x); -} - -unsigned long -foo5 (int x) -{ - return __builtin_popcount (x); -} diff --git a/gcc/testsuite/gcc.target/loongarch/popcount.c b/gcc/testsuite/gcc.target/loongarch/popcount.c deleted file mode 100644 index 390ff067617a..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/popcount.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlsx -fdump-tree-optimized" } */ -/* { dg-final { scan-tree-dump-times "__builtin_popcount|\\.POPCOUNT" 1 "optimized" } } */ - -int -PopCount (long b) -{ - int c = 0; - - while (b) - { - b &= b - 1; - c++; - } - - return c; -} diff --git a/gcc/testsuite/gcc.target/loongarch/pr109465-1.c b/gcc/testsuite/gcc.target/loongarch/pr109465-1.c deleted file mode 100644 index 4cd35d139045..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr109465-1.c +++ /dev/null @@ -1,9 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mabi=lp64d -mno-strict-align" } */ -/* { dg-final { scan-assembler-times "st\\.d|stptr\\.d" 1 } } */ -/* { dg-final { scan-assembler-times "st\\.w|stptr\\.w" 1 } } */ -/* { dg-final { scan-assembler-times "st\\.h" 1 } } */ -/* { dg-final { scan-assembler-times "st\\.b" 1 } } */ - -extern char a[], b[]; -void test() { __builtin_memcpy(a, b, 15); } diff --git a/gcc/testsuite/gcc.target/loongarch/pr109465-2.c b/gcc/testsuite/gcc.target/loongarch/pr109465-2.c deleted file mode 100644 index 703eb951c6d1..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr109465-2.c +++ /dev/null @@ -1,9 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mabi=lp64d -mstrict-align" } */ -/* { dg-final { scan-assembler-times "st\\.d|stptr\\.d" 1 } } */ -/* { dg-final { scan-assembler-times "st\\.w|stptr\\.w" 1 } } */ -/* { dg-final { scan-assembler-times "st\\.h" 1 } } */ -/* { dg-final { scan-assembler-times "st\\.b" 1 } } */ - -extern long a[], b[]; -void test() { __builtin_memcpy(a, b, 15); } diff --git a/gcc/testsuite/gcc.target/loongarch/pr109465-3.c b/gcc/testsuite/gcc.target/loongarch/pr109465-3.c deleted file mode 100644 index d6a80659b31c..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr109465-3.c +++ /dev/null @@ -1,12 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mabi=lp64d -mstrict-align" } */ - -/* Three loop iterations each contains 4 st.b, and 3 st.b after the loop */ -/* { dg-final { scan-assembler-times "st\\.b" 7 } } */ - -/* { dg-final { scan-assembler-not "st\\.h" } } */ -/* { dg-final { scan-assembler-not "st\\.w|stptr\\.w" } } */ -/* { dg-final { scan-assembler-not "st\\.d|stptr\\.d" } } */ - -extern char a[], b[]; -void test() { __builtin_memcpy(a, b, 15); } diff --git a/gcc/testsuite/gcc.target/loongarch/pr112476-1.c b/gcc/testsuite/gcc.target/loongarch/pr112476-1.c deleted file mode 100644 index 4cf133e7a265..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr112476-1.c +++ /dev/null @@ -1,24 +0,0 @@ -/* PR target/112476: ICE with -mlsx */ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mfpu=64 -mabi=lp64d -mlsx" } */ - -int foo, bar; -float baz, res, a; - -void -apply_adjacent_ternary (float *dst, float *src0) -{ - do - { - __builtin_memcpy (&res, &src0, sizeof (res)); - *dst = foo ? baz : res; - dst++; - } - while (dst != src0); -} - -void -xx (void) -{ - apply_adjacent_ternary (&a, &a); -} diff --git a/gcc/testsuite/gcc.target/loongarch/pr112476-2.c b/gcc/testsuite/gcc.target/loongarch/pr112476-2.c deleted file mode 100644 index cc0dfbfc9128..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr112476-2.c +++ /dev/null @@ -1,5 +0,0 @@ -/* PR target/112476: ICE with -mlasx */ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mfpu=64 -mabi=lp64d -mlasx" } */ - -#include "pr112476-1.c" diff --git a/gcc/testsuite/gcc.target/loongarch/pr112476-3.c b/gcc/testsuite/gcc.target/loongarch/pr112476-3.c deleted file mode 100644 index d696d4182bbb..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr112476-3.c +++ /dev/null @@ -1,58 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -mlsx" } */ - -#include - -typedef int8_t orc_int8; -typedef int16_t orc_int16; -typedef int32_t orc_int32; -typedef int64_t orc_int64; - -typedef union -{ - orc_int32 i; - float f; - orc_int16 x2[2]; - orc_int8 x4[4]; -} orc_union32; -typedef union -{ - orc_int64 i; - double f; - orc_int32 x2[2]; - float x2f[2]; - orc_int16 x4[4]; -} orc_union64; - -void -audio_orc_s32_to_double (double * restrict d1, - const signed int * restrict s1, int n) -{ - int i; - orc_union64 *restrict ptr0; - const orc_union32 *restrict ptr4; - orc_union32 var33; - orc_union64 var34; - orc_union64 var35; - orc_union64 var36; - - ptr0 = (orc_union64 *) d1; - ptr4 = (orc_union32 *) s1; - - var34.i = 0x41e0000000000000UL; - - for (i = 0; i < n; i++) { - var33 = ptr4[i]; - var36.f = var33.i; - { - orc_union64 _src1; - orc_union64 _src2; - orc_union64 _dest1; - _src1.i = ((var36.i) & ((((var36.i)&0x7ff0000000000000UL) == 0) ? 0xfff0000000000000UL : 0xffffffffffffffffUL)); - _src2.i = ((var34.i) & ((((var34.i)&0x7ff0000000000000UL) == 0) ? 0xfff0000000000000UL : 0xffffffffffffffffUL)); - _dest1.f = _src1.f / _src2.f; - var35.i = ((_dest1.i) & ((((_dest1.i)&0x7ff0000000000000UL) == 0) ? 0xfff0000000000000UL : 0xffffffffffffffffUL)); - } - ptr0[i] = var35; - } -} diff --git a/gcc/testsuite/gcc.target/loongarch/pr112476-4.c b/gcc/testsuite/gcc.target/loongarch/pr112476-4.c deleted file mode 100644 index 955d98552ebb..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr112476-4.c +++ /dev/null @@ -1,4 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -mlasx" } */ - -#include "pr112476-3.c" diff --git a/gcc/testsuite/gcc.target/loongarch/pr113033.c b/gcc/testsuite/gcc.target/loongarch/pr113033.c deleted file mode 100644 index 4ccd037d8468..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr113033.c +++ /dev/null @@ -1,23 +0,0 @@ -/* PR target/113033: ICE with vector left rotate */ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlasx" } */ - -typedef unsigned __attribute__ ((vector_size (16))) v4si; -typedef unsigned __attribute__ ((vector_size (32))) v8si; -typedef unsigned long long __attribute__ ((vector_size (16))) v2di; -typedef unsigned long long __attribute__ ((vector_size (32))) v4di; - -#define TEST(tp) \ -extern tp data_##tp; \ -tp \ -test_##tp (int x) \ -{ \ - const int bit = sizeof (data_##tp[0]) * __CHAR_BIT__; \ - data_##tp = data_##tp << (x & (bit - 1)) \ - | data_##tp >> (bit - x & (bit - 1)); \ -} - -TEST (v4si) -TEST (v8si) -TEST (v2di) -TEST (v4di) diff --git a/gcc/testsuite/gcc.target/loongarch/pr113148.c b/gcc/testsuite/gcc.target/loongarch/pr113148.c deleted file mode 100644 index cf48e552053a..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr113148.c +++ /dev/null @@ -1,44 +0,0 @@ -/* PR 113148: ICE caused by infinite reloading */ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=la464 -mfpu=64 -mabi=lp64d" } */ - -struct bound -{ - double max; -} drawQuadrant_bound; -double w4, innerXfromXY_y, computeBound_right_0; -struct arc_def -{ - double w, h; - double a0, a1; -}; -static void drawQuadrant (struct arc_def *); -static void -computeBound (struct arc_def *def, struct bound *bound) -{ - double ellipsex_1, ellipsex_0; - bound->max = def->a1 ?: __builtin_sin (w4) * def->h; - if (def->a0 == 5 && def->w == def->h) - ; - else - ellipsex_0 = def->a0 == 0.0 ?: __builtin_cos (w4); - if (def->a1 == 5 && def->w == def->h) - ellipsex_1 = bound->max; - __builtin_sqrt (ellipsex_1 * innerXfromXY_y * innerXfromXY_y * w4); - computeBound_right_0 = ellipsex_0; -} -void -drawArc () -{ - struct arc_def foo; - for (;;) - drawQuadrant (&foo); -} -void -drawQuadrant (struct arc_def *def) -{ - int y, miny; - computeBound (def, &drawQuadrant_bound); - while (y >= miny) - ; -} diff --git a/gcc/testsuite/gcc.target/loongarch/pr114861.c b/gcc/testsuite/gcc.target/loongarch/pr114861.c deleted file mode 100644 index e6507c406b9a..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr114861.c +++ /dev/null @@ -1,39 +0,0 @@ -/* PR114861: ICE building the kernel with -Os - Reduced from linux/fs/ntfs3/attrib.c at revision c942a0cd3603. */ -/* { dg-do compile } */ -/* { dg-options "-Os -march=loongarch64 -msoft-float -mabi=lp64s" } */ - -long evcn, attr_collapse_range_vbo, attr_collapse_range_bytes; -unsigned short flags; -int attr_collapse_range_ni_0_0; -int *attr_collapse_range_mi; -unsigned attr_collapse_range_svcn, attr_collapse_range_vcn1; -void ni_insert_nonresident (unsigned, unsigned short, int **); -int mi_pack_runs (int); -int -attr_collapse_range (void) -{ - _Bool __trans_tmp_1; - int run = attr_collapse_range_ni_0_0; - unsigned evcn1, vcn, end; - short a_flags = flags; - __trans_tmp_1 = flags & (32768 | 1); - if (__trans_tmp_1) - return 2; - vcn = attr_collapse_range_vbo; - end = attr_collapse_range_bytes; - evcn1 = evcn; - for (;;) - if (attr_collapse_range_svcn >= end) - { - unsigned eat, next_svcn = mi_pack_runs (42); - attr_collapse_range_vcn1 = (vcn ? vcn : attr_collapse_range_svcn); - eat = (0 < end) - attr_collapse_range_vcn1; - mi_pack_runs (run - eat); - if (next_svcn + eat) - ni_insert_nonresident (evcn1 - eat - next_svcn, a_flags, - &attr_collapse_range_mi); - } - else - return 42; -} diff --git a/gcc/testsuite/gcc.target/loongarch/pr115752.c b/gcc/testsuite/gcc.target/loongarch/pr115752.c index df4bae524f75..dac5a7fb13d0 100644 --- a/gcc/testsuite/gcc.target/loongarch/pr115752.c +++ b/gcc/testsuite/gcc.target/loongarch/pr115752.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-effective-target hard_float } */ long double test (long double xx) diff --git a/gcc/testsuite/gcc.target/loongarch/pr118561.c b/gcc/testsuite/gcc.target/loongarch/pr118561.c deleted file mode 100644 index 81a776eada39..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr118561.c +++ /dev/null @@ -1,9 +0,0 @@ -/* PR target/118561: ICE with -mfpu=none */ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mfpu=none" } */ - -int -test (void) -{ - return __builtin_loongarch_movfcsr2gr (0); /* { dg-error "built-in function '__builtin_loongarch_movfcsr2gr' is not enabled" } */ -} diff --git a/gcc/testsuite/gcc.target/loongarch/pr118828-2.c b/gcc/testsuite/gcc.target/loongarch/pr118828-2.c deleted file mode 100644 index 3d32fcc15c95..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr118828-2.c +++ /dev/null @@ -1,30 +0,0 @@ -/* { dg-do preprocess } */ -/* { dg-options "-mno-lsx" } */ - -#ifdef __loongarch_sx -#error LSX should not be available here -#endif - -#ifdef __loongarch_simd_width -#error simd width shuold not be available here -#endif - -#pragma GCC push_options -#pragma GCC target("lsx") -#ifndef __loongarch_sx -#error LSX should be available here -#endif -#ifndef __loongarch_simd_width -#error simd width should be available here -#elif __loongarch_simd_width != 128 -#error simd width should be 128 -#endif -#pragma GCC pop_options - -#ifdef __loongarch_sx -#error LSX should become unavailable again -#endif - -#ifdef __loongarch_simd_width -#error simd width shuold become unavailable again -#endif diff --git a/gcc/testsuite/gcc.target/loongarch/pr118828-3.c b/gcc/testsuite/gcc.target/loongarch/pr118828-3.c deleted file mode 100644 index 31ab8e59a3fc..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr118828-3.c +++ /dev/null @@ -1,32 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64" } */ -/* { dg-final { scan-assembler "t1: loongarch64" } } */ -/* { dg-final { scan-assembler "t2: la64v1.1" } } */ -/* { dg-final { scan-assembler "t3: loongarch64" } } */ - -#ifndef __loongarch_arch -#error __loongarch_arch should be available here -#endif - -void -t1 (void) -{ - asm volatile ("# t1: " __loongarch_arch); -} - -#pragma GCC push_options -#pragma GCC target("arch=la64v1.1") - -void -t2 (void) -{ - asm volatile ("# t2: " __loongarch_arch); -} - -#pragma GCC pop_options - -void -t3 (void) -{ - asm volatile ("# t3: " __loongarch_arch); -} diff --git a/gcc/testsuite/gcc.target/loongarch/pr118828-4.c b/gcc/testsuite/gcc.target/loongarch/pr118828-4.c deleted file mode 100644 index 77587ee56148..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr118828-4.c +++ /dev/null @@ -1,32 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mtune=la464" } */ -/* { dg-final { scan-assembler "t1: la464" } } */ -/* { dg-final { scan-assembler "t2: la664" } } */ -/* { dg-final { scan-assembler "t3: la464" } } */ - -#ifndef __loongarch_tune -#error __loongarch_tune should be available here -#endif - -void -t1 (void) -{ - asm volatile ("# t1: " __loongarch_tune); -} - -#pragma GCC push_options -#pragma GCC target("tune=la664") - -void -t2 (void) -{ - asm volatile ("# t2: " __loongarch_tune); -} - -#pragma GCC pop_options - -void -t3 (void) -{ - asm volatile ("# t3: " __loongarch_tune); -} diff --git a/gcc/testsuite/gcc.target/loongarch/pr118828.c b/gcc/testsuite/gcc.target/loongarch/pr118828.c deleted file mode 100644 index abdda24c758c..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr118828.c +++ /dev/null @@ -1,34 +0,0 @@ -/* { dg-do preprocess } */ -/* { dg-options "-mno-lasx" } */ - -#ifdef __loongarch_asx -#error LASX should not be available here -#endif - -#ifdef __loongarch_simd_width -#if __loongarch_simd_width == 256 -#error simd width shuold not be 256 -#endif -#endif - -#pragma GCC push_options -#pragma GCC target("lasx") -#ifndef __loongarch_asx -#error LASX should be available here -#endif -#ifndef __loongarch_simd_width -#error simd width should be available here -#elif __loongarch_simd_width != 256 -#error simd width should be 256 -#endif -#pragma GCC pop_options - -#ifdef __loongarch_asx -#error LASX should become unavailable again -#endif - -#ifdef __loongarch_simd_width -#if __loongarch_simd_width == 256 -#error simd width shuold not be 256 again -#endif -#endif diff --git a/gcc/testsuite/gcc.target/loongarch/pr118843.c b/gcc/testsuite/gcc.target/loongarch/pr118843.c deleted file mode 100644 index 30372b8ffe6a..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr118843.c +++ /dev/null @@ -1,6 +0,0 @@ -/* { dg-do preprocess } */ -/* { dg-options "-mfrecipe -mfpu=none" } */ - -#ifdef __loongarch_frecipe -#error __loongarch_frecipe should not be avaliable here -#endif diff --git a/gcc/testsuite/gcc.target/loongarch/pr119084.c b/gcc/testsuite/gcc.target/loongarch/pr119084.c deleted file mode 100644 index b5943303851b..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr119084.c +++ /dev/null @@ -1,24 +0,0 @@ -/* { dg-do run } */ -/* { dg-options "-O2 -mlsx" } */ -/* { dg-require-effective-target loongarch_sx_hw } */ - -typedef signed char V16QI __attribute__ ((vector_size (16))); -static char x[128]; - -__attribute__ ((noipa)) int -noopt (int x) -{ - return x; -} - -int -main (void) -{ - int t = noopt (32); - - x[32] = 1; - - V16QI y = __builtin_lsx_vldx (x, t); - if (y[0] != 1) - __builtin_trap (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/pr119127.c b/gcc/testsuite/gcc.target/loongarch/pr119127.c deleted file mode 100644 index 4e253beb0f44..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr119127.c +++ /dev/null @@ -1,14 +0,0 @@ -/* PR target/119127: ICE caused by operating DImode const in SImode */ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mabi=lp64d" } */ - -int x; -struct Type { - unsigned SubclassData : 24; -} y; - -void -test (void) -{ - x = y.SubclassData * 37; -} diff --git a/gcc/testsuite/gcc.target/loongarch/pr121064.c b/gcc/testsuite/gcc.target/loongarch/pr121064.c deleted file mode 100644 index a466c7abc70e..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr121064.c +++ /dev/null @@ -1,38 +0,0 @@ -/* { dg-require-effective-target loongarch_sx_hw } */ -/* { dg-do run } */ -/* { dg-options "-march=loongarch64 -mfpu=64 -mlsx -O3" } */ - -typedef __INT32_TYPE__ int32_t; -typedef unsigned __INT32_TYPE__ uint32_t; - -__attribute__ ((noipa)) static int32_t -long_filter_ehigh_3830_1 (int32_t *buffer, int length) -{ - int i, j; - int32_t dotprod = 0; - int32_t delay[4] = { 0 }; - uint32_t coeffs[4] = { 0 }; - - for (i = 0; i < length; i++) - { - dotprod = 0; - for (j = 3; j >= 0; j--) - { - dotprod += delay[j] * coeffs[j]; - coeffs[j] += ((delay[j] >> 31) | 1); - } - for (j = 3; j > 0; j--) - delay[j] = delay[j - 1]; - delay[0] = buffer[i]; - } - - return dotprod; -} - -int -main () -{ - int32_t buffer[] = { -1, 1 }; - if (long_filter_ehigh_3830_1 (buffer, 2) != -1) - __builtin_trap (); -} diff --git a/gcc/testsuite/gcc.target/loongarch/pr121542.c b/gcc/testsuite/gcc.target/loongarch/pr121542.c deleted file mode 100644 index 51a5e3c44800..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr121542.c +++ /dev/null @@ -1,54 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mrecip=all -mfrecipe -mabi=lp64d -march=loongarch64 -mfpu=64 -msimd=lasx -Ofast" } */ - -typedef long unsigned int STRLEN; -typedef struct sv SV; -struct sv -{ - void *sv_any; - unsigned int sv_refcnt; - unsigned int sv_flags; -}; -typedef struct xpv XPV; -struct xpv -{ - char *xpv_pv; - STRLEN xpv_cur; - STRLEN xpv_len; -}; -typedef unsigned long UV; -extern char *PL_bufend; -extern char *d; -SV *Perl_newSV (STRLEN len); - -char * -S_scan_const (char *start) -{ - register char *send = PL_bufend; - SV *sv = Perl_newSV (send - start); - register char *s = start; - UV uv; - - while (s < send) - { - if (!(((UV)(uv)) < 0x80)) - { - int hicount = 0; - unsigned char *c; - for (c = (unsigned char *)((XPV *)(sv)->sv_any)->xpv_pv; - c < (unsigned char *)d; c++) - { - if (!(((UV)(*c)) < 0x80)) - { - hicount++; - } - } - d += hicount; - *d++ = (char)uv; - } - - s++; - } - - return s; -} diff --git a/gcc/testsuite/gcc.target/loongarch/pr121634.c b/gcc/testsuite/gcc.target/loongarch/pr121634.c deleted file mode 100644 index 325173ad798f..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr121634.c +++ /dev/null @@ -1,15 +0,0 @@ -/* PR target/121634: ICE in highway-1.3.0 testsuite */ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=la464 -mabi=lp64d" } */ - -typedef short v8i16 __attribute__ ((vector_size (16))); -typedef int v4i32 __attribute__ ((vector_size (16))); -typedef long __m128i __attribute__ ((__vector_size__ (16))); -__m128i x, y; - -__m128i -WidenMulPairwiseAdd (__m128i a, __m128i b) -{ - y = (__m128i)__builtin_lsx_vmaddwod_w_h ((v4i32)x, (v8i16){}, (v8i16){}); - return y; -} diff --git a/gcc/testsuite/gcc.target/loongarch/pr121875.c b/gcc/testsuite/gcc.target/loongarch/pr121875.c deleted file mode 100644 index f0a42ba020ad..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr121875.c +++ /dev/null @@ -1,5 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=loongarch64 -mabi=lp64d -O2" } */ - -[[gnu::always_inline]] inline void f() {} -[[gnu::target("lasx")]] int main() {f();} diff --git a/gcc/testsuite/gcc.target/loongarch/pr122097.c b/gcc/testsuite/gcc.target/loongarch/pr122097.c deleted file mode 100644 index 5d32b191baf1..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pr122097.c +++ /dev/null @@ -1,271 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -mabi=lp64d -mlsx" } */ -/* { dg-final { scan-assembler "vbitseti\.d\t\\\$vr\[0-9\]+,\\\$vr\[0-9\]+,63" } } */ - -typedef long unsigned int size_t; -typedef unsigned char simde__mmask8; -typedef long simde__m128i __attribute__ ((__aligned__ ((16)))) -__attribute__ ((__vector_size__ (16))) __attribute__ ((__may_alias__)); -typedef union -{ - - __attribute__ ((__aligned__ ((16)))) long i64 - __attribute__ ((__vector_size__ (16))) __attribute__ ((__may_alias__)); -} simde__m128i_private; -typedef double simde_float64; -typedef simde_float64 simde__m128d __attribute__ ((__aligned__ ((16)))) -__attribute__ ((__vector_size__ (16))) __attribute__ ((__may_alias__)); -typedef long int int_fast32_t; -typedef union -{ - - __attribute__ ((__aligned__ ((16)))) int_fast32_t i32f - __attribute__ ((__vector_size__ (16))) __attribute__ ((__may_alias__)); - __attribute__ ((__aligned__ ((16)))) long i64 - __attribute__ ((__vector_size__ (16))) __attribute__ ((__may_alias__)); - __attribute__ ((__aligned__ ((16)))) simde_float64 f64 - __attribute__ ((__vector_size__ (16))) __attribute__ ((__may_alias__)); -} simde__m128d_private; -__attribute__ ((__always_inline__)) inline static simde__m128d -simde__m128d_from_private (simde__m128d_private v) -{ - simde__m128d r; - __builtin_memcpy (&r, &v, sizeof (r)); - return r; -} - -__attribute__ ((__always_inline__)) inline static simde__m128d -simde_mm_set_pd (simde_float64 e1, simde_float64 e0) -{ - - simde__m128d_private r_; - r_.f64[0] = e0; - r_.f64[1] = e1; - - return simde__m128d_from_private (r_); -} -__attribute__ ((__always_inline__)) inline static simde__m128i -simde_mm_castpd_si128 (simde__m128d a) -{ - simde__m128i r; - __builtin_memcpy (&r, &a, sizeof (a)); - return r; -} - -__attribute__ ((__always_inline__)) inline static simde__m128i -simde__m128i_from_private (simde__m128i_private v) -{ - simde__m128i r; - __builtin_memcpy (&r, &v, sizeof (r)); - return r; -} - -__attribute__ ((__always_inline__)) inline static simde__m128i_private -simde__m128i_to_private (simde__m128i v) -{ - simde__m128i_private r; - __builtin_memcpy (&r, &v, sizeof (r)); - return r; -} -__attribute__ ((__always_inline__)) inline static simde__m128d -simde_mm_castsi128_pd (simde__m128i a) -{ - simde__m128d r; - __builtin_memcpy (&r, &a, sizeof (a)); - return r; -} - -__attribute__ ((__always_inline__)) inline static simde__m128i -simde_mm_mask_mov_epi64 (simde__m128i src, simde__mmask8 k, simde__m128i a) -{ - - simde__m128i_private src_ = simde__m128i_to_private (src), - a_ = simde__m128i_to_private (a), r_; - - for (size_t i = 0; i < (sizeof (r_.i64) / sizeof (r_.i64[0])); i++) - { - r_.i64[i] = ((k >> i) & 1) ? a_.i64[i] : src_.i64[i]; - } - - return simde__m128i_from_private (r_); -} - -__attribute__ ((__always_inline__)) inline static simde__m128d -simde_mm_mask_mov_pd (simde__m128d src, simde__mmask8 k, simde__m128d a) -{ - return simde_mm_castsi128_pd (simde_mm_mask_mov_epi64 ( - simde_mm_castpd_si128 (src), k, simde_mm_castpd_si128 (a))); -} - -static double -simde_test_f64_precision_to_slop (int precision) -{ - return __builtin_expect (!!(precision == 0x7fffffff), 0) - ? 0.0 - : __builtin_pow (10.0, -((double)(precision))); -} -__attribute__ ((__always_inline__)) inline static void -simde_mm_storeu_pd (simde_float64 *mem_addr, simde__m128d a) -{ - - __builtin_memcpy (mem_addr, &a, sizeof (a)); -} -int simde_test_equal_f64 (simde_float64 a, simde_float64 b, - simde_float64 slop); -void simde_test_debug_printf_ (const char *format, ...); -static int -simde_assert_equal_vf64_ (size_t vec_len, simde_float64 const a[(vec_len)], - simde_float64 const b[(vec_len)], simde_float64 slop, - const char *filename, int line, const char *astr, - const char *bstr) -{ - for (size_t i = 0; i < vec_len; i++) - { - if (__builtin_expect (!!(!simde_test_equal_f64 (a[i], b[i], slop)), 0)) - { - simde_test_debug_printf_ ( - "%s:%d: assertion failed: %s[%zu] ~= %s[%zu] (%f ~= %f)\n", - filename, line, astr, i, bstr, i, ((double)(a[i])), - ((double)(b[i]))); - return 1; - } - } - return 0; -} -static int -simde_test_x86_assert_equal_f64x2_ (simde__m128d a, simde__m128d b, - simde_float64 slop, const char *filename, - int line, const char *astr, - const char *bstr) -{ - simde_float64 a_[sizeof (a) / sizeof (simde_float64)], - b_[sizeof (a) / sizeof (simde_float64)]; - simde_mm_storeu_pd (a_, a); - simde_mm_storeu_pd (b_, b); - return simde_assert_equal_vf64_ (sizeof (a_) / sizeof (a_[0]), a_, b_, slop, - filename, line, astr, bstr); -} -__attribute__ ((__always_inline__)) inline static simde__m128d_private -simde__m128d_to_private (simde__m128d v) -{ - simde__m128d_private r; - __builtin_memcpy (&r, &v, sizeof (r)); - return r; -} -__attribute__ ((__always_inline__)) inline static simde__m128d -simde_mm_min_pd (simde__m128d a, simde__m128d b) -{ - - simde__m128d_private r_, a_ = simde__m128d_to_private (a), - b_ = simde__m128d_to_private (b); - - for (size_t i = 0; i < (sizeof (r_.f64) / sizeof (r_.f64[0])); i++) - { - r_.f64[i] = (a_.f64[i] < b_.f64[i]) ? a_.f64[i] : b_.f64[i]; - } - - return simde__m128d_from_private (r_); -} - -__attribute__ ((__always_inline__)) inline static simde__m128d -simde_mm_max_pd (simde__m128d a, simde__m128d b) -{ - - simde__m128d_private r_, a_ = simde__m128d_to_private (a), - b_ = simde__m128d_to_private (b); - - for (size_t i = 0; i < (sizeof (r_.f64) / sizeof (r_.f64[0])); i++) - { - r_.f64[i] = (a_.f64[i] > b_.f64[i]) ? a_.f64[i] : b_.f64[i]; - } - - return simde__m128d_from_private (r_); -} - -__attribute__ ((__always_inline__)) inline static simde__m128d -simde_x_mm_abs_pd (simde__m128d a) -{ - - simde__m128d_private r_, a_ = simde__m128d_to_private (a); - for (size_t i = 0; i < (sizeof (r_.f64) / sizeof (r_.f64[0])); i++) - { - r_.f64[i] = __builtin_fabs (a_.f64[i]); - } - - return simde__m128d_from_private (r_); -} -__attribute__ ((__always_inline__)) inline static simde__m128d -simde_mm_cmple_pd (simde__m128d a, simde__m128d b) -{ - - simde__m128d_private r_, a_ = simde__m128d_to_private (a), - b_ = simde__m128d_to_private (b); - - r_.i64 = ((__typeof__ (r_.i64))((a_.f64 <= b_.f64))); - return simde__m128d_from_private (r_); -} - -__attribute__ ((__always_inline__)) inline static simde__m128d -simde_x_mm_select_pd (simde__m128d a, simde__m128d b, simde__m128d mask) -{ - simde__m128d_private r_, a_ = simde__m128d_to_private (a), - b_ = simde__m128d_to_private (b), - mask_ = simde__m128d_to_private (mask); - - r_.i64 = a_.i64 ^ ((a_.i64 ^ b_.i64) & mask_.i64); - return simde__m128d_from_private (r_); -} -simde__m128d simde_mm_cmpge_pd (simde__m128d a, simde__m128d b); - -simde__m128d -simde_x_mm_copysign_pd (simde__m128d dest, simde__m128d src) -{ - simde__m128d_private r_, dest_ = simde__m128d_to_private (dest), - src_ = simde__m128d_to_private (src); - for (size_t i = 0; i < (sizeof (r_.f64) / sizeof (r_.f64[0])); i++) - { - r_.f64[i] = __builtin_copysign (dest_.f64[i], src_.f64[i]); - } - - return simde__m128d_from_private (r_); -} -simde__m128d simde_mm_or_pd (simde__m128d a, simde__m128d b); - -simde__m128d simde_mm_set1_pd (simde_float64 a); - -__attribute__ ((__always_inline__)) inline static simde__m128d -simde_mm_range_pd (simde__m128d a, simde__m128d b, int imm8) -{ - simde__m128d r; - - r = simde_x_mm_select_pd ( - b, a, simde_mm_cmple_pd (simde_x_mm_abs_pd (a), simde_x_mm_abs_pd (b))); - - r = simde_x_mm_copysign_pd (r, a); - - return r; -} -int -test_simde_mm_mask_range_pd (void) -{ - - simde__m128d src, a, b, e, r; - - src = simde_mm_set_pd (-2.92, -85.39); - a = simde_mm_set_pd (-47.59, -122.31); - b = simde_mm_set_pd (877.42, 69.15); - e = simde_mm_set_pd (-47.59, -69.15); - r = simde_mm_mask_mov_pd (src, 143, simde_mm_range_pd (a, b, 2)); - do - { - if (simde_test_x86_assert_equal_f64x2_ ( - r, e, simde_test_f64_precision_to_slop (1), - "../test/x86/avx512/range.c", 1454, "r", "e")) - { - return 1; - } - } - while (0); - - return 0; -} diff --git a/gcc/testsuite/gcc.target/loongarch/pragma-push-pop.c b/gcc/testsuite/gcc.target/loongarch/pragma-push-pop.c deleted file mode 100644 index a2bcdcb10d5a..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/pragma-push-pop.c +++ /dev/null @@ -1,22 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlasx" } */ -/* { dg-final { scan-assembler-not "xvadd\\\.w" } } */ -/* { dg-final { scan-assembler "xvsll\\\.w" } } */ - -#include - -extern v8i32 a, b, c; -#pragma GCC push_options -#pragma GCC target ("no-lasx") -void -test (void) -{ - a = b + c; -} -#pragma GCC pop_options - -void -test1 (void) -{ - c = __builtin_lasx_xvsll_w (a, b); -} diff --git a/gcc/testsuite/gcc.target/loongarch/prolog-opt.c b/gcc/testsuite/gcc.target/loongarch/prolog-opt.c deleted file mode 100644 index e6a642633842..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/prolog-opt.c +++ /dev/null @@ -1,15 +0,0 @@ -/* Test that LoongArch backend stack drop operation optimized. */ - -/* { dg-do compile } */ -/* { dg-options "-O2 -mabi=lp64d -fno-stack-protector" } */ -/* { dg-final { scan-assembler "addi.d\t\\\$r3,\\\$r3,-16" } } */ - -extern int printf (char *, ...); - -int main() -{ - char buf[1024 * 12]; - printf ("%p\n", buf); - return 0; -} - diff --git a/gcc/testsuite/gcc.target/loongarch/recip-divf.c b/gcc/testsuite/gcc.target/loongarch/recip-divf.c deleted file mode 100644 index db5e3e488886..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/recip-divf.c +++ /dev/null @@ -1,9 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -ffast-math -mrecip -mfrecipe" } */ -/* { dg-final { scan-assembler "frecipe.s" } } */ - -float -foo(float a, float b) -{ - return a / b; -} diff --git a/gcc/testsuite/gcc.target/loongarch/recip-sqrtf.c b/gcc/testsuite/gcc.target/loongarch/recip-sqrtf.c deleted file mode 100644 index 7f45db6cdea1..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/recip-sqrtf.c +++ /dev/null @@ -1,23 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -ffast-math -mrecip -mfrecipe" } */ -/* { dg-final { scan-assembler-times "frsqrte.s" 3 } } */ - -extern float sqrtf (float); - -float -foo1 (float a, float b) -{ - return a/sqrtf(b); -} - -float -foo2 (float a, float b) -{ - return sqrtf(a/b); -} - -float -foo3 (float a) -{ - return sqrtf(a); -} diff --git a/gcc/testsuite/gcc.target/loongarch/relocs-symbol-noaddend.c b/gcc/testsuite/gcc.target/loongarch/relocs-symbol-noaddend.c deleted file mode 100644 index 3ec8bd229fdc..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/relocs-symbol-noaddend.c +++ /dev/null @@ -1,23 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -mexplicit-relocs -fno-pic -O2 -mcmodel=normal" } */ -/* { dg-final { scan-assembler "pcalau12i.*%pc_hi20\\(\.LANCHOR0\\)\n" } } */ -/* { dg-final { scan-assembler "addi\.d.*%pc_lo12\\(\.LANCHOR0\\)\n" } } */ -/* { dg-final { scan-assembler "ldptr.d\t\\\$r4,.*,0\n" } } */ -/* { dg-final { scan-assembler "ld.d\t\\\$r5,.*,8\n" } } */ -/* { dg-final { scan-assembler-not "\.LANCHOR0+8" } } */ - - -struct S -{ - char *a; - unsigned short int b; -}; - -struct S s1; - -void test(struct S); -void test1(void) -{ - test(s1); -} - diff --git a/gcc/testsuite/gcc.target/loongarch/revb.c b/gcc/testsuite/gcc.target/loongarch/revb.c deleted file mode 100644 index 27a5d0fc7b74..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/revb.c +++ /dev/null @@ -1,61 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mabi=lp64d" } */ -/* { dg-final { check-function-bodies "**" "" } } */ - -/* -**t1: -** revb.2w \$r4,\$r4 -** slli.w \$r4,\$r4,0 -** jr \$r1 -*/ -unsigned int -t1 (unsigned int x) -{ - return __builtin_bswap32 (x); -} - -/* -**t2: -** revb.d \$r4,\$r4 -** jr \$r1 -*/ -unsigned long -t2 (unsigned long x) -{ - return __builtin_bswap64 (x); -} - -/* -**t3: -** revb.2h \$r4,\$r4 -** jr \$r1 -*/ -unsigned int -t3 (unsigned int x) -{ - return (x >> 8) & 0xff00ff | (x << 8) & 0xff00ff00; -} - -/* -**t4: -** revb.2w \$r4,\$r4 -** jr \$r1 -*/ -unsigned long -t4 (unsigned long x) -{ - x = __builtin_bswap64 (x); - return x << 32 | x >> 32; -} - -/* -**t5: -** revb.2h \$r4,\$r4 -** bstrpick.w \$r4,\$r4,15,0 -** jr \$r1 -*/ -unsigned short -t5 (unsigned short x) -{ - return __builtin_bswap16 (x); -} diff --git a/gcc/testsuite/gcc.target/loongarch/rotl-with-rotr.c b/gcc/testsuite/gcc.target/loongarch/rotl-with-rotr.c deleted file mode 100644 index 84cc53cecaf3..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/rotl-with-rotr.c +++ /dev/null @@ -1,9 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2" } */ -/* { dg-final { scan-assembler "rotr\\.w" } } */ - -unsigned -t (unsigned a, unsigned b) -{ - return a << b | a >> (32 - b); -} diff --git a/gcc/testsuite/gcc.target/loongarch/rotl-with-vrotr-b.c b/gcc/testsuite/gcc.target/loongarch/rotl-with-vrotr-b.c deleted file mode 100644 index 14298bf9ee4d..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/rotl-with-vrotr-b.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlsx -fno-vect-cost-model" } */ -/* { dg-final { scan-assembler-times "vrotr\\.b" 2 } } */ -/* { dg-final { scan-assembler-times "vneg\\.b" 1 } } */ - -#define TYPE char -#include "rotl-with-vrotr-w.c" diff --git a/gcc/testsuite/gcc.target/loongarch/rotl-with-vrotr-d.c b/gcc/testsuite/gcc.target/loongarch/rotl-with-vrotr-d.c deleted file mode 100644 index 0e971b3235cb..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/rotl-with-vrotr-d.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlsx -fno-vect-cost-model" } */ -/* { dg-final { scan-assembler-times "vrotr\\.d" 2 } } */ -/* { dg-final { scan-assembler-times "vneg\\.d" 1 } } */ - -#define TYPE long long -#include "rotl-with-vrotr-w.c" diff --git a/gcc/testsuite/gcc.target/loongarch/rotl-with-vrotr-h.c b/gcc/testsuite/gcc.target/loongarch/rotl-with-vrotr-h.c deleted file mode 100644 index 93216ebc2453..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/rotl-with-vrotr-h.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlsx -fno-vect-cost-model" } */ -/* { dg-final { scan-assembler-times "vrotr\\.h" 2 } } */ -/* { dg-final { scan-assembler-times "vneg\\.h" 1 } } */ - -#define TYPE short -#include "rotl-with-vrotr-w.c" diff --git a/gcc/testsuite/gcc.target/loongarch/rotl-with-vrotr-w.c b/gcc/testsuite/gcc.target/loongarch/rotl-with-vrotr-w.c deleted file mode 100644 index d05b86f47169..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/rotl-with-vrotr-w.c +++ /dev/null @@ -1,28 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlsx -fno-vect-cost-model" } */ -/* { dg-final { scan-assembler-times "vrotr\\.w" 2 } } */ -/* { dg-final { scan-assembler-times "vneg\\.w" 1 } } */ - -#ifndef VLEN -#define VLEN 16 -#endif - -#ifndef TYPE -#define TYPE int -#endif - -typedef unsigned TYPE V __attribute__ ((vector_size (VLEN))); -V a, b, c; - -void -test (int x) -{ - b = a << x | a >> ((int)sizeof (TYPE) * __CHAR_BIT__ - x); -} - -void -test2 (void) -{ - for (int i = 0; i < VLEN / sizeof (TYPE); i++) - c[i] = a[i] << b[i] | a[i] >> ((int)sizeof (TYPE) * __CHAR_BIT__ - b[i]); -} diff --git a/gcc/testsuite/gcc.target/loongarch/rotl-with-xvrotr-b.c b/gcc/testsuite/gcc.target/loongarch/rotl-with-xvrotr-b.c deleted file mode 100644 index 2674b1b618cb..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/rotl-with-xvrotr-b.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlasx -fno-vect-cost-model" } */ -/* { dg-final { scan-assembler-times "xvrotr\\.b" 2 } } */ -/* { dg-final { scan-assembler-times "xvneg\\.b" 1 } } */ - -#define VLEN 32 -#include "rotl-with-vrotr-b.c" diff --git a/gcc/testsuite/gcc.target/loongarch/rotl-with-xvrotr-d.c b/gcc/testsuite/gcc.target/loongarch/rotl-with-xvrotr-d.c deleted file mode 100644 index e94403315948..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/rotl-with-xvrotr-d.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlasx -fno-vect-cost-model" } */ -/* { dg-final { scan-assembler-times "xvrotr\\.d" 2 } } */ -/* { dg-final { scan-assembler-times "xvneg\\.d" 1 } } */ - -#define VLEN 32 -#include "rotl-with-vrotr-d.c" diff --git a/gcc/testsuite/gcc.target/loongarch/rotl-with-xvrotr-h.c b/gcc/testsuite/gcc.target/loongarch/rotl-with-xvrotr-h.c deleted file mode 100644 index 3d998941f921..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/rotl-with-xvrotr-h.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlasx -fno-vect-cost-model" } */ -/* { dg-final { scan-assembler-times "xvrotr\\.h" 2 } } */ -/* { dg-final { scan-assembler-times "xvneg\\.h" 1 } } */ - -#define VLEN 32 -#include "rotl-with-vrotr-h.c" diff --git a/gcc/testsuite/gcc.target/loongarch/rotl-with-xvrotr-w.c b/gcc/testsuite/gcc.target/loongarch/rotl-with-xvrotr-w.c deleted file mode 100644 index ca6aa7bae6cc..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/rotl-with-xvrotr-w.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlasx -fno-vect-cost-model" } */ -/* { dg-final { scan-assembler-times "xvrotr\\.w" 2 } } */ -/* { dg-final { scan-assembler-times "xvneg\\.w" 1 } } */ - -#define VLEN 32 -#include "rotl-with-vrotr-w.c" diff --git a/gcc/testsuite/gcc.target/loongarch/rotrw.c b/gcc/testsuite/gcc.target/loongarch/rotrw.c deleted file mode 100644 index 6ed45e8b86c1..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/rotrw.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2" } */ -/* { dg-final { scan-assembler "rotr\\.w\t\\\$r4,\\\$r4,\\\$r5" } } */ -/* { dg-final { scan-assembler "rotri\\.w\t\\\$r4,\\\$r4,5" } } */ -/* { dg-final { scan-assembler-not "slli\\.w" } } */ - -unsigned -rotr (unsigned a, unsigned b) -{ - return a >> b | a << 32 - b; -} - -unsigned -rotri (unsigned a) -{ - return a >> 5 | a << 27; -} diff --git a/gcc/testsuite/gcc.target/loongarch/sad-lasx.c b/gcc/testsuite/gcc.target/loongarch/sad-lasx.c deleted file mode 100644 index 6c0cdfd97b43..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/sad-lasx.c +++ /dev/null @@ -1,20 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -mlasx" } */ - -#define N 1024 - -#define TEST(SIGN) \ - SIGN char a_##SIGN[N], b_##SIGN[N]; \ - int f_##SIGN (void) \ - { \ - int i, sum = 0; \ - for (i = 0; i < N; i++) \ - sum += __builtin_abs (a_##SIGN[i] - b_##SIGN[i]);; \ - return sum; \ - } - -TEST(signed); -TEST(unsigned); - -/* { dg-final { scan-assembler {\txvabsd.bu\t} } } */ -/* { dg-final { scan-assembler {\txvabsd.b\t} } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/sad-lsx.c b/gcc/testsuite/gcc.target/loongarch/sad-lsx.c deleted file mode 100644 index b92110a8b2cb..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/sad-lsx.c +++ /dev/null @@ -1,20 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -mlsx" } */ - -#define N 1024 - -#define TEST(SIGN) \ - SIGN char a_##SIGN[N], b_##SIGN[N]; \ - int f_##SIGN (void) \ - { \ - int i, sum = 0; \ - for (i = 0; i < N; i++) \ - sum += __builtin_abs (a_##SIGN[i] - b_##SIGN[i]);; \ - return sum; \ - } - -TEST(signed); -TEST(unsigned); - -/* { dg-final { scan-assembler {\tvabsd.bu\t} } } */ -/* { dg-final { scan-assembler {\tvabsd.b\t} } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/sign-extend-1.c b/gcc/testsuite/gcc.target/loongarch/sign-extend-1.c deleted file mode 100644 index 3f339d06bbdb..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/sign-extend-1.c +++ /dev/null @@ -1,25 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2" } */ -/* { dg-final { scan-assembler-times "slli.w" 1 } } */ - -extern int PL_savestack_ix; -extern int PL_regsize; -extern int PL_savestack_max; -void Perl_savestack_grow_cnt (int need); -extern void Perl_croak (char *); - -int -S_regcppush(int parenfloor) -{ - int retval = PL_savestack_ix; - int paren_elems_to_push = (PL_regsize - parenfloor) * 4; - int p; - - if (paren_elems_to_push < 0) - Perl_croak ("panic: paren_elems_to_push < 0"); - - if (PL_savestack_ix + (paren_elems_to_push + 6) > PL_savestack_max) - Perl_savestack_grow_cnt (paren_elems_to_push + 6); - - return retval; -} diff --git a/gcc/testsuite/gcc.target/loongarch/sign-extend-2.c b/gcc/testsuite/gcc.target/loongarch/sign-extend-2.c deleted file mode 100644 index e57a2727d0c2..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/sign-extend-2.c +++ /dev/null @@ -1,60 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2 -fdump-rtl-expand" } */ -/* { dg-final { scan-rtl-dump "subreg/s" "expand" } } */ -/* { dg-final { scan-assembler-not "slli.w\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,0" } } */ - -#include -#define my_min(x, y) ((x) < (y) ? (x) : (y)) - -void -bt_skip_func (const uint32_t len_limit, const uint32_t pos, - const uint8_t *const cur, uint32_t cur_match, - uint32_t *const son, const uint32_t cyclic_pos, - const uint32_t cyclic_size) -{ - uint32_t *ptr0 = son + (cyclic_pos << 1) + 1; - uint32_t *ptr1 = son + (cyclic_pos << 1); - - uint32_t len0 = 0; - uint32_t len1 = 0; - - while (1) - { - const uint32_t delta = pos - cur_match; - uint32_t *pair - = son - + ((cyclic_pos - delta + (delta > cyclic_pos ? cyclic_size : 0)) - << 1); - const uint8_t *pb = cur - delta; - uint32_t len = my_min (len0, len1); - - if (pb[len] == cur[len]) - { - while (++len != len_limit) - if (pb[len] != cur[len]) - break; - - if (len == len_limit) - { - *ptr1 = pair[0]; - *ptr0 = pair[1]; - return; - } - } - - if (pb[len] < cur[len]) - { - *ptr1 = cur_match; - ptr1 = pair + 1; - cur_match = *ptr1; - len1 = len; - } - else - { - *ptr0 = cur_match; - ptr0 = pair; - cur_match = *ptr0; - len0 = len; - } - } -} diff --git a/gcc/testsuite/gcc.target/loongarch/sign-extend-3.c b/gcc/testsuite/gcc.target/loongarch/sign-extend-3.c deleted file mode 100644 index d20bd38486f4..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/sign-extend-3.c +++ /dev/null @@ -1,29 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2" } */ -/* { dg-final { scan-assembler "sltui" } } */ - -union any { - int any_i32; -}; - -extern char *opname; -extern void test1 (int, char *); -extern int iterms; - -void -test (union any cv) -{ - int i, on; - int ix = cv.any_i32; - for (i = 1; i < iterms; i++) - { - on = (ix == 0 || ix == 1) ? 0 : 1; - if (*opname == '!') - { - on = !on; - ++opname; - } - test1 (on, opname); - } -} - diff --git a/gcc/testsuite/gcc.target/loongarch/sign-extend-4.c b/gcc/testsuite/gcc.target/loongarch/sign-extend-4.c deleted file mode 100644 index d716e5bc5625..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/sign-extend-4.c +++ /dev/null @@ -1,16 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2" } */ -/* { dg-final { scan-assembler-not "slli.w\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,0" } } */ - -extern int items; -extern int gv_fetchmeth (int); -int -Perl_gv_fetchmeth (int level) -{ - int gv; - while (items--) - gv = gv_fetchmeth ((level >= 0) ? level + 1 : level - 1); - - return gv; -} - diff --git a/gcc/testsuite/gcc.target/loongarch/sign-extend-5.c b/gcc/testsuite/gcc.target/loongarch/sign-extend-5.c deleted file mode 100644 index 21f5de756f40..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/sign-extend-5.c +++ /dev/null @@ -1,35 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2" } */ -/* { dg-final { scan-assembler-not "slli.w" } } */ - -typedef struct xpvav XPVAV; -struct xpvav -{ - long int xav_fill; - long int xav_max; -}; -typedef struct av AV; -struct av -{ - XPVAV *sv_any; - unsigned int sv_refcnt; - unsigned int sv_flags; -}; -void Perl_av_extend (AV *ar, int key); -void -Perl_av_unshift (AV *av, int num) -{ - int i; - int slide; - - if (num) - { - i = ((XPVAV *)(av)->sv_any)->xav_fill; - - slide = i > 0 ? i : 0; - num += slide; - Perl_av_extend (av, i + num); - - ((XPVAV *)(av)->sv_any)->xav_max -= slide; - } -} diff --git a/gcc/testsuite/gcc.target/loongarch/sign-extend-6.c b/gcc/testsuite/gcc.target/loongarch/sign-extend-6.c deleted file mode 100644 index 74d0e589b1e7..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/sign-extend-6.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2" } */ -/* { dg-final { scan-assembler-times "addi.w\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,1\t" 1 } } */ - -extern unsigned short d; -int -test (int a, unsigned short b) -{ - if (a > 0) - { - d = 1; - if (b > d) - return 10; - } - - return 50; -} diff --git a/gcc/testsuite/gcc.target/loongarch/sign-extend-bitwise.c b/gcc/testsuite/gcc.target/loongarch/sign-extend-bitwise.c deleted file mode 100644 index 5753ef69db2e..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/sign-extend-bitwise.c +++ /dev/null @@ -1,21 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2" } */ -/* { dg-final { scan-assembler-not "slli.w\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,0" } } */ - -struct pmop -{ - unsigned int op_pmflags; - unsigned int op_pmpermflags; -}; -unsigned int PL_hints; - -struct pmop *pmop; -void -Perl_newPMOP (int type, int flags) -{ - if (PL_hints & 0x00100000) - pmop->op_pmpermflags |= 0x0001; - if (PL_hints & 0x00000004) - pmop->op_pmpermflags |= 0x0800; - pmop->op_pmflags = pmop->op_pmpermflags; -} diff --git a/gcc/testsuite/gcc.target/loongarch/sign_extend_ashift.c b/gcc/testsuite/gcc.target/loongarch/sign_extend_ashift.c deleted file mode 100644 index 921fda9093ed..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/sign_extend_ashift.c +++ /dev/null @@ -1,11 +0,0 @@ -/* { dg-do compile { target { loongarch64*-*-* } } } */ -/* { dg-options "-O3" } */ -/* { dg-final { scan-assembler "slli\\.w" } } */ -/* { dg-final { scan-assembler-not "slli\\.d" } } */ -/* { dg-final { scan-assembler-not "ext\\.w\\.b" } } */ - -unsigned int -test (unsigned int id) -{ - return id << 24; -} diff --git a/gcc/testsuite/gcc.target/loongarch/slt-sign-extend.c b/gcc/testsuite/gcc.target/loongarch/slt-sign-extend.c deleted file mode 100644 index ea6b28b7c451..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/slt-sign-extend.c +++ /dev/null @@ -1,14 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2" } */ -/* { dg-final { scan-assembler-not "slli.w" } } */ - -extern int src1, src2, src3; - -int -test (void) -{ - int data1 = src1 + src2; - int data2 = src1 + src3; - - return data1 > data2 ? data1 : data2; -} diff --git a/gcc/testsuite/gcc.target/loongarch/smuldi3_highpart.c b/gcc/testsuite/gcc.target/loongarch/smuldi3_highpart.c deleted file mode 100644 index 6f5c686ca38e..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/smuldi3_highpart.c +++ /dev/null @@ -1,13 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mabi=lp64d -O2 -fdump-rtl-expand-all" } */ - -typedef int TI __attribute ((mode(TI))); -typedef int DI __attribute__((mode(DI))); - -DI -test (DI x, DI y) -{ - return ((TI)x * y) >> 64; -} - -/* { dg-final { scan-rtl-dump "highparttmp" "expand" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/spill-less.c b/gcc/testsuite/gcc.target/loongarch/spill-less.c deleted file mode 100644 index 77eb9b5963b4..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/spill-less.c +++ /dev/null @@ -1,14 +0,0 @@ -/* { dg-do compile { target { loongarch64*-*-* } } } */ -/* { dg-options "-O3 -fno-strict-aliasing" } */ - -double -convert (long long in) -{ - double f; - *((long long *)&f) = in; - return f; -} - -/* { dg-final { scan-assembler-not "st\\.d" } } */ -/* { dg-final { scan-assembler-not "fld\\.d" } } */ -/* { dg-final { scan-assembler "movgr2fr\\.d" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/sqrtf.c b/gcc/testsuite/gcc.target/loongarch/sqrtf.c deleted file mode 100644 index c2720faac7b3..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/sqrtf.c +++ /dev/null @@ -1,24 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -ffast-math -mrecip -mfrecipe -fno-unsafe-math-optimizations" } */ -/* { dg-final { scan-assembler-times "fsqrt.s" 3 } } */ -/* { dg-final { scan-assembler-not "frsqrte.s" } } */ - -extern float sqrtf (float); - -float -foo1 (float a, float b) -{ - return a/sqrtf(b); -} - -float -foo2 (float a, float b) -{ - return sqrtf(a/b); -} - -float -foo3 (float a) -{ - return sqrtf(a); -} diff --git a/gcc/testsuite/gcc.target/loongarch/strict-align.c b/gcc/testsuite/gcc.target/loongarch/strict-align.c deleted file mode 100644 index 040d849584be..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/strict-align.c +++ /dev/null @@ -1,12 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-Ofast -mstrict-align -mlasx" } */ -/* { dg-final { scan-assembler-not "vfadd.s" } } */ - -void -foo (float *restrict x, float *restrict y) -{ - x[0] = x[0] + y[0]; - x[1] = x[1] + y[1]; - x[2] = x[2] + y[2]; - x[3] = x[3] + y[3]; -} diff --git a/gcc/testsuite/gcc.target/loongarch/switch-qi.c b/gcc/testsuite/gcc.target/loongarch/switch-qi.c deleted file mode 100644 index dd192fd497f1..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/switch-qi.c +++ /dev/null @@ -1,16 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=loongarch64 -mabi=lp64d" } */ -/* { dg-final { scan-assembler-not "bstrpick" } } */ - -/* Test for loongarch_extend_comparands patch. */ -extern void asdf (int); -void -foo (signed char x) { - switch (x) { - case 0: asdf (10); break; - case 1: asdf (11); break; - case 2: asdf (12); break; - case 3: asdf (13); break; - case 4: asdf (14); break; - } -} diff --git a/gcc/testsuite/gcc.target/loongarch/tls-extreme-macro.c b/gcc/testsuite/gcc.target/loongarch/tls-extreme-macro.c deleted file mode 100644 index 7f6160e1f662..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/tls-extreme-macro.c +++ /dev/null @@ -1,35 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=loongarch64 -mabi=lp64d -O2 -mcmodel=extreme -mtls-dialect=trad -fno-plt -mexplicit-relocs=none -fPIC" } */ -/* { dg-final { scan-assembler "test_le:.*la.tls.le\t\\\$r\[0-9\]+,c" { target tls_native } } } */ -/* { dg-final { scan-assembler "test_ie:.*la.tls.ie\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,d" { target tls_native } } } */ -/* { dg-final { scan-assembler "test_ld:.*la.tls.ld\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,e.*la.global\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,__tls_get_addr" { target tls_native } } } */ -/* { dg-final { scan-assembler "test_le:.*la.tls.gd\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,f.*la.global\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,__tls_get_addr" { target tls_native } } } */ - -__thread int c __attribute__ ((tls_model ("local-exec"))); -__thread int d __attribute__ ((tls_model ("initial-exec"))); -__thread int e __attribute__ ((tls_model ("local-dynamic"))); -__thread int f __attribute__ ((tls_model ("global-dynamic"))); - -int -test_le (void) -{ - return c; -} - -int -test_ie (void) -{ - return d; -} - -int -test_ld (void) -{ - return e; -} - -int -test_gd (void) -{ - return f; -} diff --git a/gcc/testsuite/gcc.target/loongarch/tls-gd-noplt.c b/gcc/testsuite/gcc.target/loongarch/tls-gd-noplt.c deleted file mode 100644 index 610262a7783f..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/tls-gd-noplt.c +++ /dev/null @@ -1,12 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O0 -fno-plt -mcmodel=normal -mtls-dialect=trad -mexplicit-relocs -fPIC" } */ -/* { dg-final { scan-assembler "pcalau12i\t.*%got_pc_hi20\\(__tls_get_addr\\)\n\tld\.d.*%got_pc_lo12\\(__tls_get_addr\\)" { target tls_native } } } */ - -__attribute__ ((tls_model ("global-dynamic"))) __thread int a; - -void -test (void) -{ - a = 10; -} - diff --git a/gcc/testsuite/gcc.target/loongarch/tls-ie-extreme.c b/gcc/testsuite/gcc.target/loongarch/tls-ie-extreme.c deleted file mode 100644 index 00c545a3e8c3..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/tls-ie-extreme.c +++ /dev/null @@ -1,5 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mabi=lp64d -mcmodel=extreme -mexplicit-relocs=auto -mrelax" } */ -/* { dg-final { scan-assembler-not "R_LARCH_RELAX" { target tls_native } } } */ - -#include "tls-ie-relax.c" diff --git a/gcc/testsuite/gcc.target/loongarch/tls-ie-norelax.c b/gcc/testsuite/gcc.target/loongarch/tls-ie-norelax.c deleted file mode 100644 index dd6bf3634a4d..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/tls-ie-norelax.c +++ /dev/null @@ -1,5 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mcmodel=normal -mexplicit-relocs -mno-relax" } */ -/* { dg-final { scan-assembler-not "R_LARCH_RELAX" { target tls_native } } } */ - -#include "tls-ie-relax.c" diff --git a/gcc/testsuite/gcc.target/loongarch/tls-ie-relax.c b/gcc/testsuite/gcc.target/loongarch/tls-ie-relax.c deleted file mode 100644 index e9f7569b1da1..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/tls-ie-relax.c +++ /dev/null @@ -1,11 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mcmodel=normal -mexplicit-relocs -mrelax" } */ -/* { dg-final { scan-assembler-times "R_LARCH_RELAX" 2 { target tls_native } } } */ - -extern __thread int errno; - -void -unimplemented (void) -{ - errno = -38; -} diff --git a/gcc/testsuite/gcc.target/loongarch/tls-le-relax.c b/gcc/testsuite/gcc.target/loongarch/tls-le-relax.c deleted file mode 100644 index a9a404fc70ab..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/tls-le-relax.c +++ /dev/null @@ -1,12 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mcmodel=normal -mexplicit-relocs" } */ -/* { dg-final { scan-assembler "%le_add_r" { target tls_le_relax } } } */ - -__attribute__ ((tls_model ("local-exec"))) __thread int a; - -void -test (void) -{ - a = 10; -} - diff --git a/gcc/testsuite/gcc.target/loongarch/vec_pack_unpack_128.c b/gcc/testsuite/gcc.target/loongarch/vec_pack_unpack_128.c deleted file mode 100644 index 164b01e245d2..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vec_pack_unpack_128.c +++ /dev/null @@ -1,120 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mlsx -O3" } */ - -#define N 128 - -char c[N]; -short int h[N]; -int s[N]; -long l[N]; -float f[N]; -double d[N]; -unsigned char uc[N]; -unsigned short int uh[N]; -unsigned int us[N]; -unsigned long ul[N]; - -/* { dg-final { scan-assembler-not "test_vec_pack_sfix_trunc_v2df:.*\tvftintrz\\.l\\.d.*-test_vec_pack_sfix_trunc_v2df\n" } } */ -/* { dg-final { scan-assembler-not "test_vec_pack_sfix_trunc_v2df:.*\tvpickev\\.w.*-test_vec_pack_sfix_trunc_v2df\n" } } */ -/* { dg-final { scan-assembler "test_vec_pack_sfix_trunc_v2df:.*\tvftintrz\\.w\\.d.*-test_vec_pack_sfix_trunc_v2df\n" } } */ -void -test_vec_pack_sfix_trunc_v2df (void) -{ - for (int i = 0; i < N; i++) - s[i] = d[i]; -} - -/* { dg-final { scan-assembler-not "test_vec_packs_float_v2di:.*\tmovgr2fr\\.d.*-test_vec_packs_float_v2di" } } */ -/* { dg-final { scan-assembler "test_vec_packs_float_v2di:.*\tvffint\\.s\\.l.*-test_vec_packs_float_v2di" } } */ -void -test_vec_packs_float_v2di (void) -{ - for (int i = 0; i < N; i++) - f[i] = l[i]; -} - -/* { dg-final { scan-assembler-not "test_vec_unpack_sfix_trunc_hi_lo_v4sf:.*\tftintrz\\.l\\.s.*-test_vec_unpack_sfix_trunc_hi_lo_v4sf" } } */ -/* { dg-final { scan-assembler "test_vec_unpack_sfix_trunc_hi_lo_v4sf:.*\tvftintrzh\\.l\\.s.*-test_vec_unpack_sfix_trunc_hi_lo_v4sf" } } */ -/* { dg-final { scan-assembler "test_vec_unpack_sfix_trunc_hi_lo_v4sf:.*\tvftintrzl\\.l\\.s.*-test_vec_unpack_sfix_trunc_hi_lo_v4sf" } } */ -void -test_vec_unpack_sfix_trunc_hi_lo_v4sf (void) -{ - for (int i = 0; i < N; i++) - l[i] = f[i]; -} - -/* { dg-final { scan-assembler-not "test_vec_unpacks_float_hi_lo_v4si:.*\tvslti\\.w.*-test_vec_unpacks_float_hi_lo_v4si" } } */ -/* { dg-final { scan-assembler-not "test_vec_unpacks_float_hi_lo_v4si:.*\tvilvl\\.w.*-test_vec_unpacks_float_hi_lo_v4si" } } */ -/* { dg-final { scan-assembler-not "test_vec_unpacks_float_hi_lo_v4si:.*\tvilvh\\.w.*-test_vec_unpacks_float_hi_lo_v4si" } } */ -/* { dg-final { scan-assembler-not "test_vec_unpacks_float_hi_lo_v4si:.*\tvffint\\.d\\.l.*-test_vec_unpacks_float_hi_lo_v4si" } } */ -/* { dg-final { scan-assembler "test_vec_unpacks_float_hi_lo_v4si:.*\tvffinth\\.d\\.w.*-test_vec_unpacks_float_hi_lo_v4si" } } */ -/* { dg-final { scan-assembler "test_vec_unpacks_float_hi_lo_v4si:.*\tvffintl\\.d\\.w.*-test_vec_unpacks_float_hi_lo_v4si" } } */ -void -test_vec_unpacks_float_hi_lo_v4si (void) -{ - for (int i = 0; i < N; i++) - d[i] = s[i]; -} - -/* { dg-final { scan-assembler-not "test_vec_unpacks_hi_lo_v4si:.*\tvilvh\\.w.*-test_vec_unpacks_hi_lo_v4si" } } */ -/* { dg-final { scan-assembler "test_vec_unpacks_hi_lo_v4si:.*\tvexth\\.d\\.w.*-test_vec_unpacks_hi_lo_v4si" } } */ -void -test_vec_unpacks_hi_lo_v4si (void) -{ - for (int i = 0; i < N; i++) - l[i] = s[i]; -} - -/* { dg-final { scan-assembler-not "test_vec_unpacks_hi_lo_v8hi:.*\tvilvh\\.h.*-test_vec_unpacks_hi_lo_v8hi" } } */ -/* { dg-final { scan-assembler "test_vec_unpacks_hi_lo_v8hi:.*\tvexth\\.w\\.h.*-test_vec_unpacks_hi_lo_v8hi" } } */ -void -test_vec_unpacks_hi_lo_v8hi (void) -{ - for (int i = 0; i < N; i++) - s[i] = h[i]; -} - -/* { dg-final { scan-assembler-not "test_vec_unpacks_hi_lo_v16qi:.*\tvilvh\\.b.*-test_vec_unpacks_hi_lo_v16qi" } } */ -/* { dg-final { scan-assembler "test_vec_unpacks_hi_lo_v16qi:.*\tvexth\\.h\\.b.*-test_vec_unpacks_hi_lo_v16qi" } } */ -void -test_vec_unpacks_hi_lo_v16qi (void) -{ - for (int i = 0; i < N; i++) - h[i] = c[i]; -} - -/* { dg-final { scan-assembler "test_vec_unpacks_hi_lo_v4sf:.*\tvfcvtl\\.d\\.s.*-test_vec_unpacks_hi_lo_v4sf" } } */ -/* { dg-final { scan-assembler "test_vec_unpacks_hi_lo_v4sf:.*\tvfcvth\\.d\\.s.*-test_vec_unpacks_hi_lo_v4sf" } } */ -void -test_vec_unpacks_hi_lo_v4sf (void) -{ - for (int i = 0; i < N; i++) - d[i] = f[i]; -} - -/* { dg-final { scan-assembler-not "test_vec_unpacku_hi_lo_v4si:.*\tvilvh\\.w.*-test_vec_unpacku_hi_lo_v4si" } } */ -/* { dg-final { scan-assembler "test_vec_unpacku_hi_lo_v4si:.*\tvexth\\.du\\.wu.*-test_vec_unpacku_hi_lo_v4si" } } */ -void -test_vec_unpacku_hi_lo_v4si (void) -{ - for (int i = 0; i < N; i++) - ul[i] = us[i]; -} - -/* { dg-final { scan-assembler-not "test_vec_unpacku_hi_lo_v8hi:.*\tvilvh\\.h.*-test_vec_unpacku_hi_lo_v8hi" } } */ -/* { dg-final { scan-assembler "test_vec_unpacku_hi_lo_v8hi:.*\tvexth\\.wu\\.hu.*-test_vec_unpacku_hi_lo_v8hi" } } */ -void -test_vec_unpacku_hi_lo_v8hi (void) -{ - for (int i = 0; i < N; i++) - us[i] = uh[i]; -} - -/* { dg-final { scan-assembler-not "test_vec_unpacku_hi_lo_v16qi:.*\tvilvh\\.b.*-test_vec_unpacku_hi_lo_v16qi" } } */ -/* { dg-final { scan-assembler "test_vec_unpacku_hi_lo_v16qi:.*\tvexth\\.hu\\.bu.*-test_vec_unpacku_hi_lo_v16qi" } } */ -void -test_vec_unpacku_hi_lo_v16qi (void) -{ - for (int i = 0; i < N; i++) - uh[i] = uc[i]; -} diff --git a/gcc/testsuite/gcc.target/loongarch/vec_pack_unpack_256.c b/gcc/testsuite/gcc.target/loongarch/vec_pack_unpack_256.c deleted file mode 100644 index 5b2fd9b0599f..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vec_pack_unpack_256.c +++ /dev/null @@ -1,124 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mlasx -O3" } */ - -#define N 128 - -char c[N]; -short int h[N]; -int s[N]; -long l[N]; -float f[N]; -double d[N]; -unsigned char uc[N]; -unsigned short int uh[N]; -unsigned int us[N]; -unsigned long ul[N]; - -/* { dg-final { scan-assembler-not "test_vec_pack_sfix_trunc_v4df:.*\txvftintrz\\.l\\.d.*-test_vec_pack_sfix_trunc_v4df\n" } } */ -/* { dg-final { scan-assembler-not "test_vec_pack_sfix_trunc_v4df:.*\txvpickev\\.w.*-test_vec_pack_sfix_trunc_v4df\n" } } */ -/* { dg-final { scan-assembler "test_vec_pack_sfix_trunc_v4df:.*\txvftintrz\\.w\\.d.*-test_vec_pack_sfix_trunc_v4df\n" } } */ -void -test_vec_pack_sfix_trunc_v4df (void) -{ - for (int i = 0; i < N; i++) - s[i] = d[i]; -} - -/* { dg-final { scan-assembler-not "test_vec_packs_float_v4di:.*\tmovgr2fr\\.d.*-test_vec_packs_float_v4di" } } */ -/* { dg-final { scan-assembler "test_vec_packs_float_v4di:.*\txvffint\\.s\\.l.*-test_vec_packs_float_v4di" } } */ -void -test_vec_packs_float_v4di (void) -{ - for (int i = 0; i < N; i++) - f[i] = l[i]; -} - -/* { dg-final { scan-assembler-not "test_vec_unpack_sfix_trunc_hi_lo_v8sf:.*\tftintrz\\.l\\.s.*-test_vec_unpack_sfix_trunc_hi_lo_v8sf" } } */ -/* { dg-final { scan-assembler "test_vec_unpack_sfix_trunc_hi_lo_v8sf:.*\txvftintrzh\\.l\\.s.*-test_vec_unpack_sfix_trunc_hi_lo_v8sf" } } */ -/* { dg-final { scan-assembler "test_vec_unpack_sfix_trunc_hi_lo_v8sf:.*\txvftintrzl\\.l\\.s.*-test_vec_unpack_sfix_trunc_hi_lo_v8sf" } } */ -void -test_vec_unpack_sfix_trunc_hi_lo_v8sf (void) -{ - for (int i = 0; i < N; i++) - l[i] = f[i]; -} - -/* { dg-final { scan-assembler "test_vec_unpacks_float_hi_lo_v8si:.*\txvpermi\\.d.*-test_vec_unpacks_float_hi_lo_v8si" } } */ -/* { dg-final { scan-assembler "test_vec_unpacks_float_hi_lo_v8si:.*\tvext2xv\\.d\\.w.*-test_vec_unpacks_float_hi_lo_v8si" } } */ -/* { dg-final { scan-assembler "test_vec_unpacks_float_hi_lo_v8si:.*\txvffint\\.d\\.l.*-test_vec_unpacks_float_hi_lo_v8si" } } */ -/* { dg-final { scan-assembler "test_vec_unpacks_float_hi_lo_v8si:.*\txvffinth\\.d\\.w.*-test_vec_unpacks_float_hi_lo_v8si" } } */ -void -test_vec_unpacks_float_hi_lo_v8si (void) -{ - for (int i = 0; i < N; i++) - d[i] = s[i]; -} - -/* { dg-final { scan-assembler "test_vec_unpacks_hi_lo_v8si:.*\tvext2xv\\.d\\.w.*-test_vec_unpacks_hi_lo_v8si" } } */ -/* { dg-final { scan-assembler "test_vec_unpacks_hi_lo_v8si:.*\txvpermi\\.d.*-test_vec_unpacks_hi_lo_v8si" } } */ -/* { dg-final { scan-assembler-not "test_vec_unpacks_hi_lo_v8si:.*\txvpermi\\.q.*-test_vec_unpacks_hi_lo_v8si" } } */ -void -test_vec_unpacks_hi_lo_v8si (void) -{ - for (int i = 0; i < N; i++) - l[i] = s[i]; -} - -/* { dg-final { scan-assembler "test_vec_unpacks_hi_lo_v16hi:.*\tvext2xv\\.w\\.h.*-test_vec_unpacks_hi_lo_v16hi" } } */ -/* { dg-final { scan-assembler "test_vec_unpacks_hi_lo_v16hi:.*\txvpermi\\.d.*-test_vec_unpacks_hi_lo_v16hi" } } */ -/* { dg-final { scan-assembler-not "test_vec_unpacks_hi_lo_v16hi:.*\txvpermi\\.q.*-test_vec_unpacks_hi_lo_v16hi" } } */ -void -test_vec_unpacks_hi_lo_v16hi (void) -{ - for (int i = 0; i < N; i++) - s[i] = h[i]; -} - -/* { dg-final { scan-assembler "test_vec_unpacks_hi_lo_v32qi:.*\tvext2xv\\.h\\.b.*-test_vec_unpacks_hi_lo_v32qi" } } */ -/* { dg-final { scan-assembler "test_vec_unpacks_hi_lo_v32qi:.*\txvpermi\\.d.*-test_vec_unpacks_hi_lo_v32qi" } } */ -/* { dg-final { scan-assembler-not "test_vec_unpacks_hi_lo_v32qi:.*\txvpermi\\.q.*-test_vec_unpacks_hi_lo_v32qi" } } */ -void -test_vec_unpacks_hi_lo_v32qi (void) -{ - for (int i = 0; i < N; i++) - h[i] = c[i]; -} - -/* { dg-final { scan-assembler "test_vec_unpacks_hi_lo_v8sf:.*\txvfcvtl\\.d\\.s.*-test_vec_unpacks_hi_lo_v8sf" } } */ -/* { dg-final { scan-assembler "test_vec_unpacks_hi_lo_v8sf:.*\txvpermi\\.d.*-test_vec_unpacks_hi_lo_v8sf" } } */ -void -test_vec_unpacks_hi_lo_v8sf (void) -{ - for (int i = 0; i < N; i++) - d[i] = f[i]; -} - -/* { dg-final { scan-assembler "test_vec_unpacku_hi_lo_v8si:.*\tvext2xv\\.du\\.wu.*-test_vec_unpacku_hi_lo_v8si" } } */ -/* { dg-final { scan-assembler "test_vec_unpacku_hi_lo_v8si:.*\txvpermi\\.d.*-test_vec_unpacku_hi_lo_v8si" } } */ -/* { dg-final { scan-assembler-not "test_vec_unpacku_hi_lo_v8si:.*\txvpermi\\.q.*-test_vec_unpacku_hi_lo_v8si" } } */ -void -test_vec_unpacku_hi_lo_v8si (void) -{ - for (int i = 0; i < N; i++) - ul[i] = us[i]; -} - -/* { dg-final { scan-assembler "test_vec_unpacku_hi_lo_v16hi:.*\tvext2xv\\.wu\\.hu.*-test_vec_unpacku_hi_lo_v16hi" } } */ -/* { dg-final { scan-assembler "test_vec_unpacku_hi_lo_v16hi:.*\txvpermi\\.d.*-test_vec_unpacku_hi_lo_v16hi" } } */ -/* { dg-final { scan-assembler-not "test_vec_unpacku_hi_lo_v16hi:.*\txvpermi\\.q.*-test_vec_unpacku_hi_lo_v16hi" } } */ -void -test_vec_unpacku_hi_lo_v16hi (void) -{ - for (int i = 0; i < N; i++) - us[i] = uh[i]; -} - -/* { dg-final { scan-assembler "test_vec_unpacku_hi_lo_v32qi:.*\tvext2xv\\.hu\\.bu.*-test_vec_unpacku_hi_lo_v32qi" } } */ -/* { dg-final { scan-assembler "test_vec_unpacku_hi_lo_v32qi:.*\txvpermi\\.d.*-test_vec_unpacku_hi_lo_v32qi" } } */ -/* { dg-final { scan-assembler-not "test_vec_unpacku_hi_lo_v32qi:.*\txvpermi\\.q.*-test_vec_unpacku_hi_lo_v32qi" } } */ -void -test_vec_unpacku_hi_lo_v32qi (void) -{ - for (int i = 0; i < N; i++) - uh[i] = uc[i]; -} diff --git a/gcc/testsuite/gcc.target/loongarch/vec_reduc_half.c b/gcc/testsuite/gcc.target/loongarch/vec_reduc_half.c deleted file mode 100644 index 39e817bddaff..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vec_reduc_half.c +++ /dev/null @@ -1,10 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -ffast-math -mlasx" } */ - -double -foo_1 (double *a, double *b) -{ - return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]; -} - -/* { dg-final { scan-assembler-times "xvpermi.d" 1} } */ diff --git a/gcc/testsuite/gcc.target/loongarch/vect-extract.c b/gcc/testsuite/gcc.target/loongarch/vect-extract.c deleted file mode 100644 index ce126e3a4f19..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vect-extract.c +++ /dev/null @@ -1,20 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -ffast-math -mlasx -fno-vect-cost-model -fno-unroll-loops" } */ -/* { dg-final { scan-assembler-not "xvpickve.w" } } */ -/* { dg-final { scan-assembler-not "xvpickve.d" } } */ - -float -sum_float (float *a, int n) { - float res = 0.0; - for (int i = 0; i < n; i++) - res += a[i]; - return res; -} - -double -sum_double (double *a, int n) { - double res = 0.0; - for (int i = 0; i < n; i++) - res += a[i]; - return res; -} diff --git a/gcc/testsuite/gcc.target/loongarch/vect-frint-no-inexact.c b/gcc/testsuite/gcc.target/loongarch/vect-frint-no-inexact.c deleted file mode 100644 index e20eaea205a5..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vect-frint-no-inexact.c +++ /dev/null @@ -1,48 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mabi=lp64d -mdouble-float -fno-math-errno -fno-fp-int-builtin-inexact -mlasx -mcmodel=normal" } */ - -#include "vect-frint.c" - -/* ceil */ -/* { dg-final { scan-assembler "bl\t%plt\\(ceil\\)" } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(ceilf\\)" } } */ -/* { dg-final { scan-assembler-not "\tvfrintrp\.s" } } */ -/* { dg-final { scan-assembler-not "\tvfrintrp\.d" } } */ -/* { dg-final { scan-assembler-not "\txvfrintrp\.s" } } */ -/* { dg-final { scan-assembler-not "\txvfrintrp\.d" } } */ - -/* floor */ -/* { dg-final { scan-assembler "bl\t%plt\\(floor\\)" } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(floorf\\)" } } */ -/* { dg-final { scan-assembler-not "\tvfrintrm\.s" } } */ -/* { dg-final { scan-assembler-not "\tvfrintrm\.d" } } */ -/* { dg-final { scan-assembler-not "\txvfrintrm\.s" } } */ -/* { dg-final { scan-assembler-not "\txvfrintrm\.d" } } */ - -/* nearbyint + rint: Only rint is allowed */ -/* { dg-final { scan-assembler "bl\t%plt\\(nearbyint\\)" } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(nearbyintf\\)" } } */ -/* { dg-final { scan-assembler-times "\tvfrint\.s" 1 } } */ -/* { dg-final { scan-assembler-times "\tvfrint\.d" 1 } } */ -/* { dg-final { scan-assembler-times "\txvfrint\.s" 1 } } */ -/* { dg-final { scan-assembler-times "\txvfrint\.d" 1 } } */ - -/* round: we don't have a corresponding instruction */ -/* { dg-final { scan-assembler "bl\t%plt\\(round\\)" } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(roundf\\)" } } */ - -/* roundeven */ -/* { dg-final { scan-assembler "bl\t%plt\\(roundeven\\)" } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(roundevenf\\)" } } */ -/* { dg-final { scan-assembler-not "\tvfrintrne\.s" } } */ -/* { dg-final { scan-assembler-not "\tvfrintrne\.d" } } */ -/* { dg-final { scan-assembler-not "\txvfrintrne\.s" } } */ -/* { dg-final { scan-assembler-not "\txvfrintrne\.d" } } */ - -/* trunc */ -/* { dg-final { scan-assembler "bl\t%plt\\(trunc\\)" } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(truncf\\)" } } */ -/* { dg-final { scan-assembler-not "\tvfrintrz\.s" } } */ -/* { dg-final { scan-assembler-not "\tvfrintrz\.d" } } */ -/* { dg-final { scan-assembler-not "\txvfrintrz\.s" } } */ -/* { dg-final { scan-assembler-not "\txvfrintrz\.d" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/vect-frint-scalar-no-inexact.c b/gcc/testsuite/gcc.target/loongarch/vect-frint-scalar-no-inexact.c deleted file mode 100644 index d5f0933537d0..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vect-frint-scalar-no-inexact.c +++ /dev/null @@ -1,23 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlsx -fno-fp-int-builtin-inexact -mcmodel=normal" } */ - -#include "vect-frint-scalar.c" - -/* cannot use LSX for these with -fno-fp-int-builtin-inexact, - call library function. */ -/* { dg-final { scan-assembler "\tb\t%plt\\(ceil\\)" } } */ -/* { dg-final { scan-assembler "\tb\t%plt\\(ceilf\\)" } } */ -/* { dg-final { scan-assembler "\tb\t%plt\\(floor\\)" } } */ -/* { dg-final { scan-assembler "\tb\t%plt\\(floorf\\)" } } */ -/* { dg-final { scan-assembler "\tb\t%plt\\(trunc\\)" } } */ -/* { dg-final { scan-assembler "\tb\t%plt\\(truncf\\)" } } */ -/* { dg-final { scan-assembler "\tb\t%plt\\(roundeven\\)" } } */ -/* { dg-final { scan-assembler "\tb\t%plt\\(roundevenf\\)" } } */ - -/* nearbyint is not allowed to rasie FE_INEXACT for decades */ -/* { dg-final { scan-assembler "\tb\t%plt\\(nearbyint\\)" } } */ -/* { dg-final { scan-assembler "\tb\t%plt\\(nearbyintf\\)" } } */ - -/* rint should just use basic FP operation */ -/* { dg-final { scan-assembler "\tfrint\.s" } } */ -/* { dg-final { scan-assembler "\tfrint\.d" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/vect-frint-scalar.c b/gcc/testsuite/gcc.target/loongarch/vect-frint-scalar.c deleted file mode 100644 index 171ba98f00b7..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vect-frint-scalar.c +++ /dev/null @@ -1,43 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlsx -ffp-int-builtin-inexact -mcmodel=normal" } */ - -#define test(func, suffix) \ -__typeof__ (1.##suffix) \ -_##func##suffix (__typeof__ (1.##suffix) x) \ -{ \ - return __builtin_##func##suffix (x); \ -} - -test (ceil, f) -test (ceil, ) -test (floor, f) -test (floor, ) -test (trunc, f) -test (trunc, ) -test (roundeven, f) -test (roundeven, ) -test (nearbyint, f) -test (nearbyint, ) -test (rint, f) -test (rint, ) - -/* { dg-final { scan-assembler "\tvfrintrp\.s" } } */ -/* { dg-final { scan-assembler "\tvfrintrm\.s" } } */ -/* { dg-final { scan-assembler "\tvfrintrz\.s" } } */ -/* { dg-final { scan-assembler "\tvfrintrne\.s" } } */ -/* { dg-final { scan-assembler "\tvfrintrp\.d" } } */ -/* { dg-final { scan-assembler "\tvfrintrm\.d" } } */ -/* { dg-final { scan-assembler "\tvfrintrz\.d" } } */ -/* { dg-final { scan-assembler "\tvfrintrne\.d" } } */ - -/* must do vreplvei first */ -/* { dg-final { scan-assembler-times "\tvreplvei\.w\t\\\$vr0,\\\$vr0,0" 4 } } */ -/* { dg-final { scan-assembler-times "\tvreplvei\.d\t\\\$vr0,\\\$vr0,0" 4 } } */ - -/* nearbyint is not allowed to rasie FE_INEXACT for decades */ -/* { dg-final { scan-assembler "\tb\t%plt\\(nearbyint\\)" } } */ -/* { dg-final { scan-assembler "\tb\t%plt\\(nearbyintf\\)" } } */ - -/* rint should just use basic FP operation */ -/* { dg-final { scan-assembler "\tfrint\.s" } } */ -/* { dg-final { scan-assembler "\tfrint\.d" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/vect-frint.c b/gcc/testsuite/gcc.target/loongarch/vect-frint.c deleted file mode 100644 index bda041bdf910..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vect-frint.c +++ /dev/null @@ -1,85 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mabi=lp64d -mdouble-float -fno-math-errno -ffp-int-builtin-inexact -mlasx -mcmodel=normal" } */ - -float out_x[8]; -double out_y[4]; - -float x[8]; -double y[4]; - -#define TEST(op, N, func) \ -void \ -test_##op##_##N##_##func () \ -{ \ - for (int i = 0; i < N; i++) \ - out_##op[i] = __builtin_##func (op[i]); \ -} - -TEST(x, 4, ceilf); -TEST(x, 4, floorf); -TEST(x, 4, nearbyintf); -TEST(x, 4, rintf); -TEST(x, 4, roundf); -TEST(x, 4, roundevenf); -TEST(x, 4, truncf); - -TEST(x, 8, ceilf); -TEST(x, 8, floorf); -TEST(x, 8, nearbyintf); -TEST(x, 8, rintf); -TEST(x, 8, roundf); -TEST(x, 8, roundevenf); -TEST(x, 8, truncf); - -TEST(y, 2, ceil); -TEST(y, 2, floor); -TEST(y, 2, nearbyint); -TEST(y, 2, rint); -TEST(y, 2, round); -TEST(y, 2, roundeven); -TEST(y, 2, trunc); - -TEST(y, 4, ceil); -TEST(y, 4, floor); -TEST(y, 4, nearbyint); -TEST(y, 4, rint); -TEST(y, 4, round); -TEST(y, 4, roundeven); -TEST(y, 4, trunc); - -/* ceil */ -/* { dg-final { scan-assembler "\tvfrintrp\.s" } } */ -/* { dg-final { scan-assembler "\tvfrintrp\.d" } } */ -/* { dg-final { scan-assembler "\txvfrintrp\.s" } } */ -/* { dg-final { scan-assembler "\txvfrintrp\.d" } } */ - -/* floor */ -/* { dg-final { scan-assembler "\tvfrintrm\.s" } } */ -/* { dg-final { scan-assembler "\tvfrintrm\.d" } } */ -/* { dg-final { scan-assembler "\txvfrintrm\.s" } } */ -/* { dg-final { scan-assembler "\txvfrintrm\.d" } } */ - -/* rint and nearbyint - nearbyint has been disallowed to raise FE_INEXACT for decades. */ -/* { dg-final { scan-assembler-times "\tvfrint\.s" 1 } } */ -/* { dg-final { scan-assembler-times "\tvfrint\.d" 1 } } */ -/* { dg-final { scan-assembler-times "\txvfrint\.s" 1 } } */ -/* { dg-final { scan-assembler-times "\txvfrint\.d" 1 } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(nearbyint\\)" } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(nearbyintf\\)" } } */ - -/* round: we don't have a corresponding instruction */ -/* { dg-final { scan-assembler "bl\t%plt\\(round\\)" } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(roundf\\)" } } */ - -/* roundeven */ -/* { dg-final { scan-assembler "\tvfrintrne\.s" } } */ -/* { dg-final { scan-assembler "\tvfrintrne\.d" } } */ -/* { dg-final { scan-assembler "\txvfrintrne\.s" } } */ -/* { dg-final { scan-assembler "\txvfrintrne\.d" } } */ - -/* trunc */ -/* { dg-final { scan-assembler "\tvfrintrz\.s" } } */ -/* { dg-final { scan-assembler "\tvfrintrz\.d" } } */ -/* { dg-final { scan-assembler "\txvfrintrz\.s" } } */ -/* { dg-final { scan-assembler "\txvfrintrz\.d" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/vect-ftint-no-inexact.c b/gcc/testsuite/gcc.target/loongarch/vect-ftint-no-inexact.c deleted file mode 100644 index 3fa97531d598..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vect-ftint-no-inexact.c +++ /dev/null @@ -1,43 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mabi=lp64d -mdouble-float -fno-math-errno -fno-fp-int-builtin-inexact -mlasx -mcmodel=normal" } */ - -#include "vect-ftint.c" - -/* ceil */ -/* { dg-final { scan-assembler "bl\t%plt\\(ceil\\)" } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(ceilf\\)" } } */ -/* { dg-final { scan-assembler-not "\tvftintrp\.w\.s" } } */ -/* { dg-final { scan-assembler-not "\tvftintrp\.l\.d" } } */ -/* { dg-final { scan-assembler-not "\txvftintrp\.w\.s" } } */ -/* { dg-final { scan-assembler-not "\txvftintrp\.l\.d" } } */ - -/* floor */ -/* { dg-final { scan-assembler "bl\t%plt\\(floor\\)" } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(floorf\\)" } } */ -/* { dg-final { scan-assembler-not "\tvftintrm\.w\.s" } } */ -/* { dg-final { scan-assembler-not "\tvftintrm\.l\.d" } } */ -/* { dg-final { scan-assembler-not "\txvftintrm\.w\.s" } } */ -/* { dg-final { scan-assembler-not "\txvftintrm\.l\.d" } } */ - -/* nearbyint + rint */ -/* { dg-final { scan-assembler "bl\t%plt\\(floor\\)" } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(floorf\\)" } } */ -/* { dg-final { scan-assembler-times "\tvftint\.w\.s" 1 } } */ -/* { dg-final { scan-assembler-times "\tvftint\.l\.d" 1 } } */ -/* { dg-final { scan-assembler-times "\txvftint\.w\.s" 1 } } */ -/* { dg-final { scan-assembler-times "\txvftint\.l\.d" 1 } } */ - -/* round: we don't have a corresponding instruction */ -/* { dg-final { scan-assembler "bl\t%plt\\(lround\\)" } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(roundf\\)" } } */ - -/* roundeven */ -/* { dg-final { scan-assembler "bl\t%plt\\(roundeven\\)" } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(roundevenf\\)" } } */ -/* { dg-final { scan-assembler-not "\tvftintrne\.w\.s" } } */ -/* { dg-final { scan-assembler-not "\tvftintrne\.l\.d" } } */ -/* { dg-final { scan-assembler-not "\txvftintrne\.w\.s" } } */ -/* { dg-final { scan-assembler-not "\txvftintrne\.l\.d" } } */ - -/* { dg-final { scan-assembler "bl\t%plt\\(trunc\\)" } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(truncf\\)" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/vect-ftint.c b/gcc/testsuite/gcc.target/loongarch/vect-ftint.c deleted file mode 100644 index 96da3cd7b576..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vect-ftint.c +++ /dev/null @@ -1,83 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mabi=lp64d -mdouble-float -fno-math-errno -ffp-int-builtin-inexact -mlasx -mcmodel=normal" } */ - -int out_x[8]; -long out_y[4]; - -float x[8]; -double y[4]; - -#define TEST(op, N, func) \ -void \ -test_##op##_##N##_##func () \ -{ \ - for (int i = 0; i < N; i++) \ - out_##op[i] = __builtin_##func (op[i]); \ -} - -TEST(x, 4, ceilf); -TEST(x, 4, floorf); -TEST(x, 4, nearbyintf); -TEST(x, 4, rintf); -TEST(x, 4, roundf); -TEST(x, 4, roundevenf); -TEST(x, 4, truncf); - -TEST(x, 8, ceilf); -TEST(x, 8, floorf); -TEST(x, 8, nearbyintf); -TEST(x, 8, rintf); -TEST(x, 8, roundf); -TEST(x, 8, roundevenf); -TEST(x, 8, truncf); - -TEST(y, 2, ceil); -TEST(y, 2, floor); -TEST(y, 2, nearbyint); -TEST(y, 2, rint); -TEST(y, 2, round); -TEST(y, 2, roundeven); -TEST(y, 2, trunc); - -TEST(y, 4, ceil); -TEST(y, 4, floor); -TEST(y, 4, nearbyint); -TEST(y, 4, rint); -TEST(y, 4, round); -TEST(y, 4, roundeven); -TEST(y, 4, trunc); - -/* ceil */ -/* { dg-final { scan-assembler "\tvftintrp\.w\.s" } } */ -/* { dg-final { scan-assembler "\tvftintrp\.l\.d" } } */ -/* { dg-final { scan-assembler "\txvftintrp\.w\.s" } } */ -/* { dg-final { scan-assembler "\txvftintrp\.l\.d" } } */ - -/* floor */ -/* { dg-final { scan-assembler "\tvftintrm\.w\.s" } } */ -/* { dg-final { scan-assembler "\tvftintrm\.l\.d" } } */ -/* { dg-final { scan-assembler "\txvftintrm\.w\.s" } } */ -/* { dg-final { scan-assembler "\txvftintrm\.l\.d" } } */ - -/* rint and nearbyint - nearbyint has been disallowed to raise FE_INEXACT for decades. */ -/* { dg-final { scan-assembler-times "\tvftint\.w\.s" 1 } } */ -/* { dg-final { scan-assembler-times "\tvftint\.l\.d" 1 } } */ -/* { dg-final { scan-assembler-times "\txvftint\.w\.s" 1 } } */ -/* { dg-final { scan-assembler-times "\txvftint\.l\.d" 1 } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(nearbyint\\)" } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(nearbyintf\\)" } } */ - -/* round: we don't have a corresponding instruction */ -/* { dg-final { scan-assembler "bl\t%plt\\(lround\\)" } } */ -/* { dg-final { scan-assembler "bl\t%plt\\(roundf\\)" } } */ - -/* roundeven */ -/* { dg-final { scan-assembler "\tvftintrne\.w\.s" } } */ -/* { dg-final { scan-assembler "\tvftintrne\.l\.d" } } */ -/* { dg-final { scan-assembler "\txvftintrne\.w\.s" } } */ -/* { dg-final { scan-assembler "\txvftintrne\.l\.d" } } */ - -/* trunc */ -/* { dg-final { scan-assembler-not "bl\t%plt\\(trunc\\)" } } */ -/* { dg-final { scan-assembler-not "bl\t%plt\\(truncf\\)" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/vect-ld-st-imm12.c b/gcc/testsuite/gcc.target/loongarch/vect-ld-st-imm12.c deleted file mode 100644 index bfc208e4fe8d..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vect-ld-st-imm12.c +++ /dev/null @@ -1,15 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=loongarch64 -mabi=lp64d -mlasx -O2" } */ -/* { dg-final { scan-assembler-not "addi.d" } } */ - -extern short a[1000]; -extern short b[1000]; -extern short c[1000]; - -void -test (void) -{ - for (int i = 501; i < 517; i++) - ((int *)(c + 1))[i] = ((int *)(a + 1))[i] + ((int *)(b + 1))[i]; -} - diff --git a/gcc/testsuite/gcc.target/loongarch/vect-muh.c b/gcc/testsuite/gcc.target/loongarch/vect-muh.c deleted file mode 100644 index a788840b23cf..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vect-muh.c +++ /dev/null @@ -1,36 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mlasx -O3" } */ -/* { dg-final { scan-assembler "\tvmuh\.w\t" } } */ -/* { dg-final { scan-assembler "\tvmuh\.wu\t" } } */ -/* { dg-final { scan-assembler "\txvmuh\.w\t" } } */ -/* { dg-final { scan-assembler "\txvmuh\.wu\t" } } */ - -int a[8], b[8], c[8]; - -void -test1 (void) -{ - for (int i = 0; i < 4; i++) - c[i] = ((long)a[i] * (long)b[i]) >> 32; -} - -void -test2 (void) -{ - for (int i = 0; i < 4; i++) - c[i] = ((long)(unsigned)a[i] * (long)(unsigned)b[i]) >> 32; -} - -void -test3 (void) -{ - for (int i = 0; i < 8; i++) - c[i] = ((long)a[i] * (long)b[i]) >> 32; -} - -void -test4 (void) -{ - for (int i = 0; i < 8; i++) - c[i] = ((long)(unsigned)a[i] * (long)(unsigned)b[i]) >> 32; -} diff --git a/gcc/testsuite/gcc.target/loongarch/vect-rotr.c b/gcc/testsuite/gcc.target/loongarch/vect-rotr.c deleted file mode 100644 index 733c36334cef..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vect-rotr.c +++ /dev/null @@ -1,36 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlasx" } */ -/* { dg-final { scan-assembler "\tvrotr\.w\t" } } */ -/* { dg-final { scan-assembler "\txvrotr\.w\t" } } */ -/* { dg-final { scan-assembler "\tvrotri\.w\t\[^\n\]*7\n" } } */ -/* { dg-final { scan-assembler "\txvrotri\.w\t\[^\n\]*7\n" } } */ - -unsigned int a[8], b[8]; - -void -test1 (void) -{ - for (int i = 0; i < 4; i++) - a[i] = a[i] >> b[i] | a[i] << (32 - b[i]); -} - -void -test2 (void) -{ - for (int i = 0; i < 8; i++) - a[i] = a[i] >> b[i] | a[i] << (32 - b[i]); -} - -void -test3 (void) -{ - for (int i = 0; i < 4; i++) - a[i] = a[i] >> 7 | a[i] << 25; -} - -void -test4 (void) -{ - for (int i = 0; i < 8; i++) - a[i] = a[i] >> 7 | a[i] << 25; -} diff --git a/gcc/testsuite/gcc.target/loongarch/vect-shift-imm-round.c b/gcc/testsuite/gcc.target/loongarch/vect-shift-imm-round.c deleted file mode 100644 index 6f16566ba9bf..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vect-shift-imm-round.c +++ /dev/null @@ -1,11 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=loongarch64 -mlsx" } */ -/* { dg-final { scan-assembler "vsrari\\.w\t\\\$vr\[0-9\]+,\\\$vr\[0-9\]+,15" } } */ - -int x __attribute__ ((vector_size (16))); - -void -f (void) -{ - x = (x + (1 << 14)) >> 15; -} diff --git a/gcc/testsuite/gcc.target/loongarch/vect-shuf-fp.c b/gcc/testsuite/gcc.target/loongarch/vect-shuf-fp.c deleted file mode 100644 index 7acc2113afe9..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vect-shuf-fp.c +++ /dev/null @@ -1,16 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mlasx -O3" } */ -/* { dg-final { scan-assembler "vshuf\.w" } } */ - -#define V __attribute__ ((vector_size (16))) - -int a V; -float b V; -float c V; -float d V; - -void -test (void) -{ - d = __builtin_shuffle (b, c, a); -} diff --git a/gcc/testsuite/gcc.target/loongarch/vect-slp-two-operator.c b/gcc/testsuite/gcc.target/loongarch/vect-slp-two-operator.c deleted file mode 100644 index 43b46759902b..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vect-slp-two-operator.c +++ /dev/null @@ -1,38 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlasx -ftree-vectorize -fdump-tree-vect -fdump-tree-vect-details" } */ - -typedef unsigned char uint8_t; -typedef unsigned int uint32_t; - -#define HADAMARD4(d0, d1, d2, d3, s0, s1, s2, s3) \ - { \ - int t0 = s0 + s1; \ - int t1 = s0 - s1; \ - int t2 = s2 + s3; \ - int t3 = s2 - s3; \ - d0 = t0 + t2; \ - d1 = t1 + t3; \ - d2 = t0 - t2; \ - d3 = t1 - t3; \ - } - -void sink (uint32_t tmp[4][4]); - -void -x264_pixel_satd_8x4 (uint8_t *pix1, int i_pix1, uint8_t *pix2, int i_pix2) -{ - uint32_t tmp[4][4]; - int sum = 0; - for (int i = 0; i < 4; i++, pix1 += i_pix1, pix2 += i_pix2) - { - uint32_t a0 = (pix1[0] - pix2[0]) + ((pix1[4] - pix2[4]) << 16); - uint32_t a1 = (pix1[1] - pix2[1]) + ((pix1[5] - pix2[5]) << 16); - uint32_t a2 = (pix1[2] - pix2[2]) + ((pix1[6] - pix2[6]) << 16); - uint32_t a3 = (pix1[3] - pix2[3]) + ((pix1[7] - pix2[7]) << 16); - HADAMARD4 (tmp[i][0], tmp[i][1], tmp[i][2], tmp[i][3], a0, a1, a2, a3); - } - sink (tmp); -} - -/* { dg-final { scan-tree-dump "vectorizing stmts using SLP" "vect" } } */ -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/vect-widen-add.c b/gcc/testsuite/gcc.target/loongarch/vect-widen-add.c deleted file mode 100644 index 0bf832d0e8af..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vect-widen-add.c +++ /dev/null @@ -1,24 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -mlasx" } */ -/* { dg-final { scan-assembler "xvaddwev.w.h" } } */ -/* { dg-final { scan-assembler "xvaddwod.w.h" } } */ -/* { dg-final { scan-assembler "xvaddwev.w.hu" } } */ -/* { dg-final { scan-assembler "xvaddwod.w.hu" } } */ - -#include - -#define SIZE 1024 - -void -wide_uadd (uint32_t *foo, uint16_t *a, uint16_t *b) -{ - for ( int i = 0; i < SIZE; i++) - foo[i] = a[i] + b[i]; -} - -void -wide_sadd (int32_t *foo, int16_t *a, int16_t *b) -{ - for ( int i = 0; i < SIZE; i++) - foo[i] = a[i] + b[i]; -} diff --git a/gcc/testsuite/gcc.target/loongarch/vect-widen-mul.c b/gcc/testsuite/gcc.target/loongarch/vect-widen-mul.c deleted file mode 100644 index 84b020eea261..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vect-widen-mul.c +++ /dev/null @@ -1,24 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -mlasx" } */ -/* { dg-final { scan-assembler "xvmulwev.w.h" } } */ -/* { dg-final { scan-assembler "xvmulwod.w.h" } } */ -/* { dg-final { scan-assembler "xvmulwev.w.hu" } } */ -/* { dg-final { scan-assembler "xvmulwod.w.hu" } } */ - -#include - -#define SIZE 1024 - -void -wide_umul (uint32_t *foo, uint16_t *a, uint16_t *b) -{ - for ( int i = 0; i < SIZE; i++) - foo[i] = a[i] * b[i]; -} - -void -wide_smul (int32_t *foo, int16_t *a, int16_t *b) -{ - for ( int i = 0; i < SIZE; i++) - foo[i] = a[i] * b[i]; -} diff --git a/gcc/testsuite/gcc.target/loongarch/vect-widen-sub.c b/gcc/testsuite/gcc.target/loongarch/vect-widen-sub.c deleted file mode 100644 index 69fc3a5174f8..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vect-widen-sub.c +++ /dev/null @@ -1,24 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O3 -mlasx" } */ -/* { dg-final { scan-assembler "xvsubwev.w.h" } } */ -/* { dg-final { scan-assembler "xvsubwod.w.h" } } */ -/* { dg-final { scan-assembler "xvsubwev.w.hu" } } */ -/* { dg-final { scan-assembler "xvsubwod.w.hu" } } */ - -#include - -#define SIZE 1024 - -void -wide_usub (uint32_t *foo, uint16_t *a, uint16_t *b) -{ - for ( int i = 0; i < SIZE; i++) - foo[i] = a[i] - b[i]; -} - -void -wide_ssub (int32_t *foo, int16_t *a, int16_t *b) -{ - for ( int i = 0; i < SIZE; i++) - foo[i] = a[i] - b[i]; -} diff --git a/gcc/testsuite/gcc.target/loongarch/vector-func-attr-1.c b/gcc/testsuite/gcc.target/loongarch/vector-func-attr-1.c deleted file mode 100644 index 4e00606b1c61..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vector-func-attr-1.c +++ /dev/null @@ -1,19 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlsx" } */ - -typedef int v4i32 __attribute__ ((vector_size(16), aligned(16))); -extern v4i32 a, b, c; - -#ifndef TEST_TARGET_PRAGMA -__attribute__ ((target ("no-lasx"))) -#else -#pragma GCC target ("no-lasx") -#endif -void -test (void) -{ - a = b + c; -} - - -/* { dg-final { scan-assembler "vadd.w" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/vector-pragma-attr-1.c b/gcc/testsuite/gcc.target/loongarch/vector-pragma-attr-1.c deleted file mode 100644 index 7bbb16901133..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vector-pragma-attr-1.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlsx" } */ - -#define TEST_TARGET_PRAGMA 1 -#include "./vector-func-attr-1.c" - -/* { dg-final { scan-assembler "vadd.w" } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/vector/loongarch-vector.exp b/gcc/testsuite/gcc.target/loongarch/vector/loongarch-vector.exp index 9df3f2908573..86a172a86cdd 100644 --- a/gcc/testsuite/gcc.target/loongarch/vector/loongarch-vector.exp +++ b/gcc/testsuite/gcc.target/loongarch/vector/loongarch-vector.exp @@ -36,10 +36,14 @@ dg-init # If the target hardware supports LSX, the default action is "run", otherwise # just "compile". set saved-dg-do-what-default ${dg-do-what-default} -if {[check_effective_target_loongarch_sx_hw]} then { - set dg-do-what-default run +if [check_effective_target_loongarch_sx] { # If compiler support vector + if {[check_effective_target_loongarch_sx_hw]} then { # If hardware support vector + set dg-do-what-default run + } else { + set dg-do-what-default compile + } } else { - set dg-do-what-default compile + return 0 } #Main loop. @@ -54,10 +58,14 @@ dg-init # just "compile". set saved-dg-do-what-default ${dg-do-what-default} -if {[check_effective_target_loongarch_asx_hw]} then { - set dg-do-what-default run +if [check_effective_target_loongarch_asx] { # If compiler support vector + if {[check_effective_target_loongarch_asx_hw]} then { # If hardware support vector + set dg-do-what-default run + } else { + set dg-do-what-default compile + } } else { - set dg-do-what-default compile + return 0 } dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/lasx/*.\[cS\]]] \ diff --git a/gcc/testsuite/gcc.target/loongarch/vfcmp-d.c b/gcc/testsuite/gcc.target/loongarch/vfcmp-d.c deleted file mode 100644 index 87e4ed19e96b..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vfcmp-d.c +++ /dev/null @@ -1,188 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlsx -fno-vect-cost-model" } */ -/* { dg-final { check-function-bodies "**" "" } } */ - -#define F double -#define I long long - -#include "vfcmp-f.c" - -/* -** compare_quiet_equal: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.ceq.d (\$vr[0-9]+),(\1,\2|\2,\1) -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_not_equal: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cune.d (\$vr[0-9]+),(\1,\2|\2,\1) -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_greater: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.slt.d (\$vr[0-9]+),\2,\1 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_greater_equal: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.sle.d (\$vr[0-9]+),\2,\1 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_less: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.slt.d (\$vr[0-9]+),\1,\2 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_less_equal: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.sle.d (\$vr[0-9]+),\1,\2 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_not_greater: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.sule.d (\$vr[0-9]+),\1,\2 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_less_unordered: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.sult.d (\$vr[0-9]+),\1,\2 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_not_less: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.sule.d (\$vr[0-9]+),\2,\1 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_greater_unordered: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.sult.d (\$vr[0-9]+),\2,\1 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_less: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.clt.d (\$vr[0-9]+),\1,\2 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_less_equal: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cle.d (\$vr[0-9]+),\1,\2 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_greater: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.clt.d (\$vr[0-9]+),\2,\1 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_greater_equal: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cle.d (\$vr[0-9]+),\2,\1 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_not_less: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cule.d (\$vr[0-9]+),\2,\1 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_greater_unordered: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cult.d (\$vr[0-9]+),\2,\1 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_not_greater: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cule.d (\$vr[0-9]+),\1,\2 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_less_unordered: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cult.d (\$vr[0-9]+),\1,\2 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_unordered: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cun.d (\$vr[0-9]+),(\1,\2|\2,\1) -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_ordered: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cor.d (\$vr[0-9]+),(\1,\2|\2,\1) -** vst \3,\$r6,0 -** jr \$r1 -*/ diff --git a/gcc/testsuite/gcc.target/loongarch/vfcmp-f.c b/gcc/testsuite/gcc.target/loongarch/vfcmp-f.c deleted file mode 100644 index 8d2671998ecf..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vfcmp-f.c +++ /dev/null @@ -1,373 +0,0 @@ -/* Test mapping IEC 60559 operations to SIMD instructions. - For details read C23 Annex F.3 and LoongArch Vol. 1 section 3.2.2.1. */ - -/* { dg-do compile } */ -/* { dg-options "-O2 -mlsx -fno-vect-cost-model" } */ -/* { dg-final { check-function-bodies "**" "" } } */ - -#ifndef F -#define F float -#endif - -#ifndef I -#define I int -#endif - -#ifndef VL -#define VL 16 -#endif - -typedef F VF __attribute__ ((vector_size (VL))); -typedef I VI __attribute__ ((vector_size (VL))); - -#define ARGS const VF *a, const VF *b, VI *c - -void -compare_quiet_equal (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - *c = (_a == *b); -} - -void -compare_quiet_not_equal (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - *c = (_a != *b); -} - -void -compare_signaling_greater (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - *c = (_a > *b); -} - -void -compare_signaling_greater_equal (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - *c = (_a >= *b); -} - -void -compare_signaling_less (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - *c = (_a < *b); -} - -void -compare_signaling_less_equal (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - *c = (_a <= *b); -} - -void -compare_signaling_not_greater (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - *c = ~(_a > *b); -} - -void -compare_signaling_less_unordered (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - *c = ~(_a >= *b); -} - -void -compare_signaling_not_less (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - *c = ~(_a < *b); -} - -void -compare_signaling_greater_unordered (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - *c = ~(_a <= *b); -} - -void -compare_quiet_less (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - for (int i = 0; i < sizeof (*c) / sizeof ((*c)[0]); i++) - (*c)[i] = __builtin_isless (_a[i], (*b)[i]) ? -1 : 0; -} - -void -compare_quiet_less_equal (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - for (int i = 0; i < sizeof (*c) / sizeof ((*c)[0]); i++) - (*c)[i] = __builtin_islessequal (_a[i], (*b)[i]) ? -1 : 0; -} - -void -compare_quiet_greater (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - for (int i = 0; i < sizeof (*c) / sizeof ((*c)[0]); i++) - (*c)[i] = __builtin_isgreater (_a[i], (*b)[i]) ? -1 : 0; -} - -void -compare_quiet_greater_equal (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - for (int i = 0; i < sizeof (*c) / sizeof ((*c)[0]); i++) - (*c)[i] = __builtin_isgreaterequal (_a[i], (*b)[i]) ? -1 : 0; -} - -void -compare_quiet_not_less (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - for (int i = 0; i < sizeof (*c) / sizeof ((*c)[0]); i++) - (*c)[i] = __builtin_isless (_a[i], (*b)[i]) ? 0 : -1; -} - -void -compare_quiet_greater_unordered (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - for (int i = 0; i < sizeof (*c) / sizeof ((*c)[0]); i++) - (*c)[i] = __builtin_islessequal (_a[i], (*b)[i]) ? 0 : -1; -} - -void -compare_quiet_not_greater (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - for (int i = 0; i < sizeof (*c) / sizeof ((*c)[0]); i++) - (*c)[i] = __builtin_isgreater (_a[i], (*b)[i]) ? 0 : -1; -} - -void -compare_quiet_less_unordered (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - for (int i = 0; i < sizeof (*c) / sizeof ((*c)[0]); i++) - (*c)[i] = __builtin_isgreaterequal (_a[i], (*b)[i]) ? 0 : -1; -} - -void -compare_quiet_unordered (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - for (int i = 0; i < sizeof (*c) / sizeof ((*c)[0]); i++) - (*c)[i] = __builtin_isunordered (_a[i], (*b)[i]) ? -1 : 0; -} - -void -compare_quiet_ordered (ARGS) -{ - VF _a = *a; - asm("" ::: "memory"); - for (int i = 0; i < sizeof (*c) / sizeof ((*c)[0]); i++) - (*c)[i] = __builtin_isunordered (_a[i], (*b)[i]) ? 0 : -1; -} - -/* -** compare_quiet_equal: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.ceq.s (\$vr[0-9]+),(\1,\2|\2,\1) -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_not_equal: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cune.s (\$vr[0-9]+),(\1,\2|\2,\1) -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_greater: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.slt.s (\$vr[0-9]+),\2,\1 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_greater_equal: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.sle.s (\$vr[0-9]+),\2,\1 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_less: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.slt.s (\$vr[0-9]+),\1,\2 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_less_equal: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.sle.s (\$vr[0-9]+),\1,\2 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_not_greater: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.sule.s (\$vr[0-9]+),\1,\2 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_less_unordered: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.sult.s (\$vr[0-9]+),\1,\2 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_not_less: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.sule.s (\$vr[0-9]+),\2,\1 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_greater_unordered: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.sult.s (\$vr[0-9]+),\2,\1 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_less: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.clt.s (\$vr[0-9]+),\1,\2 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_less_equal: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cle.s (\$vr[0-9]+),\1,\2 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_greater: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.clt.s (\$vr[0-9]+),\2,\1 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_greater_equal: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cle.s (\$vr[0-9]+),\2,\1 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_not_less: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cule.s (\$vr[0-9]+),\2,\1 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_greater_unordered: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cult.s (\$vr[0-9]+),\2,\1 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_not_greater: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cule.s (\$vr[0-9]+),\1,\2 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_less_unordered: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cult.s (\$vr[0-9]+),\1,\2 -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_unordered: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cun.s (\$vr[0-9]+),(\1,\2|\2,\1) -** vst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_ordered: -** vld (\$vr[0-9]+),\$r4,0 -** vld (\$vr[0-9]+),\$r5,0 -** vfcmp.cor.s (\$vr[0-9]+),(\1,\2|\2,\1) -** vst \3,\$r6,0 -** jr \$r1 -*/ diff --git a/gcc/testsuite/gcc.target/loongarch/vfmax-vfmin.c b/gcc/testsuite/gcc.target/loongarch/vfmax-vfmin.c deleted file mode 100644 index 811fee361c33..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vfmax-vfmin.c +++ /dev/null @@ -1,31 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mtune=la464 -mlasx" } */ -/* { dg-final { scan-assembler "\tvfmin\\.d" } } */ -/* { dg-final { scan-assembler "\tvfmax\\.d" } } */ -/* { dg-final { scan-assembler "\txvfmin\\.d" } } */ -/* { dg-final { scan-assembler "\txvfmax\\.d" } } */ -/* { dg-final { scan-assembler "\tvfmin\\.s" } } */ -/* { dg-final { scan-assembler "\tvfmax\\.s" } } */ -/* { dg-final { scan-assembler "\txvfmin\\.s" } } */ -/* { dg-final { scan-assembler "\txvfmax\\.s" } } */ - -#define T(OP) __typeof__ (__builtin_##OP (0, 0)) - -#define TEST(OP, LEN) \ -void \ -test_##OP##LEN (T (OP) *restrict dest, \ - const T (OP) *restrict src1, \ - const T (OP) *restrict src2) \ -{ \ - for (int i = 0; i < LEN / sizeof (T(OP)); i++) \ - dest[i] = __builtin_##OP (src1[i], src2[i]); \ -} - -TEST(fmin, 16) -TEST(fmax, 16) -TEST(fmin, 32) -TEST(fmax, 32) -TEST(fminf, 16) -TEST(fmaxf, 16) -TEST(fminf, 32) -TEST(fmaxf, 32) diff --git a/gcc/testsuite/gcc.target/loongarch/vrepli.c b/gcc/testsuite/gcc.target/loongarch/vrepli.c deleted file mode 100644 index 8eef4890f61f..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/vrepli.c +++ /dev/null @@ -1,15 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlasx" } */ -/* { dg-final { scan-assembler "\tvldi\t\\\$vr\[0-9\]+,221" } } */ -/* { dg-final { scan-assembler "\txvldi\t\\\$xr\[0-9\]+,221" } } */ - -int f __attribute__((vector_size (16))); -int g __attribute__((vector_size (32))); - -void -test (void) -{ - constexpr int x = (int) 0xdddddddd; - f = (typeof(f)){x, x, x, x}; - g = (typeof(g)){x, x, x, x, x, x, x, x}; -} diff --git a/gcc/testsuite/gcc.target/loongarch/wide-mul-reduc-1.c b/gcc/testsuite/gcc.target/loongarch/wide-mul-reduc-1.c deleted file mode 100644 index d6e0da59dc47..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/wide-mul-reduc-1.c +++ /dev/null @@ -1,18 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlasx -fdump-tree-optimized" } */ -/* { dg-final { scan-tree-dump "WIDEN_MULT_EVEN_EXPR" "optimized" } } */ -/* { dg-final { scan-tree-dump "WIDEN_MULT_ODD_EXPR" "optimized" } } */ - -typedef __INT32_TYPE__ i32; -typedef __INT64_TYPE__ i64; - -i32 x[8], y[8]; - -i64 -test (void) -{ - i64 ret = 0; - for (int i = 0; i < 8; i++) - ret ^= (i64) x[i] * y[i]; - return ret; -} diff --git a/gcc/testsuite/gcc.target/loongarch/wide-mul-reduc-2.c b/gcc/testsuite/gcc.target/loongarch/wide-mul-reduc-2.c deleted file mode 100644 index 61e92e58fc3e..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/wide-mul-reduc-2.c +++ /dev/null @@ -1,18 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlasx -fdump-tree-optimized" } */ -/* { dg-final { scan-assembler "xvmaddw(ev|od)\\.d\\.w" } } */ -/* { dg-final { scan-tree-dump "DOT_PROD_EXPR" "optimized" } } */ - -typedef __INT32_TYPE__ i32; -typedef __INT64_TYPE__ i64; - -i32 x[8], y[8]; - -i64 -test (void) -{ - i64 ret = 0; - for (int i = 0; i < 8; i++) - ret += (i64) x[i] * y[i]; - return ret; -} diff --git a/gcc/testsuite/gcc.target/loongarch/widen-mul-rtx-cost-signed.c b/gcc/testsuite/gcc.target/loongarch/widen-mul-rtx-cost-signed.c deleted file mode 100644 index 61d21a88681a..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/widen-mul-rtx-cost-signed.c +++ /dev/null @@ -1,12 +0,0 @@ -/* Verify optimization for mulw.d.w, - which can help with the replacement of the high-latency div.w. */ -/* { dg-do compile { target { loongarch64*-*-* } } } */ -/* { dg-options "-O3" } */ - -int -test (int a) -{ - return a / 3; -} - -/* { dg-final { scan-assembler-not {\tdiv.w\t} } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/widen-mul-rtx-cost-unsigned.c b/gcc/testsuite/gcc.target/loongarch/widen-mul-rtx-cost-unsigned.c deleted file mode 100644 index 32a428f8c622..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/widen-mul-rtx-cost-unsigned.c +++ /dev/null @@ -1,11 +0,0 @@ -/* Verify optimization for mulh.wu, which can reduce insns. */ -/* { dg-do compile } */ -/* { dg-options "-O3" } */ - -int -test (unsigned int a) -{ - return a / 3; -} - -/* { dg-final { scan-assembler {\tmulh.wu\t} } } */ diff --git a/gcc/testsuite/gcc.target/loongarch/xorsign-run.c b/gcc/testsuite/gcc.target/loongarch/xorsign-run.c deleted file mode 100644 index b4f28adf8c8f..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/xorsign-run.c +++ /dev/null @@ -1,25 +0,0 @@ -/* { dg-do run } */ -/* { dg-options "-O2 -mlsx" } */ -/* { dg-require-effective-target loongarch_sx_hw } */ - -extern void abort(void); - -static double x = 2.0; -static float y = 2.0; - -int main() -{ - if ((2.5 * __builtin_copysign(1.0d, x)) != 2.5) - abort(); - - if ((2.5 * __builtin_copysign(1.0f, y)) != 2.5) - abort(); - - if ((2.5 * __builtin_copysignf(1.0d, -x)) != -2.5) - abort(); - - if ((2.5 * __builtin_copysignf(1.0f, -y)) != -2.5) - abort(); - - return 0; -} diff --git a/gcc/testsuite/gcc.target/loongarch/xorsign.c b/gcc/testsuite/gcc.target/loongarch/xorsign.c deleted file mode 100644 index ca80603d48b0..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/xorsign.c +++ /dev/null @@ -1,18 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlsx" } */ -/* { dg-final { scan-assembler "vand\\.v" } } */ -/* { dg-final { scan-assembler "vxor\\.v" } } */ -/* { dg-final { scan-assembler-not "fcopysign" } } */ -/* { dg-final { scan-assembler-not "fmul" } } */ - -double -my_xorsign (double a, double b) -{ - return a * __builtin_copysign (1.0d, b); -} - -float -my_xorsignf (float a, float b) -{ - return a * __builtin_copysignf (1.0f, b); -} diff --git a/gcc/testsuite/gcc.target/loongarch/xvfcmp-d.c b/gcc/testsuite/gcc.target/loongarch/xvfcmp-d.c deleted file mode 100644 index b27efebad8ca..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/xvfcmp-d.c +++ /dev/null @@ -1,189 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlasx -fno-vect-cost-model" } */ -/* { dg-final { check-function-bodies "**" "" } } */ - -#define F double -#define I long long -#define VL 32 - -#include "vfcmp-f.c" - -/* -** compare_quiet_equal: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.ceq.d (\$xr[0-9]+),(\1,\2|\2,\1) -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_not_equal: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cune.d (\$xr[0-9]+),(\1,\2|\2,\1) -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_greater: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.slt.d (\$xr[0-9]+),\2,\1 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_greater_equal: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.sle.d (\$xr[0-9]+),\2,\1 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_less: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.slt.d (\$xr[0-9]+),\1,\2 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_less_equal: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.sle.d (\$xr[0-9]+),\1,\2 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_not_greater: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.sule.d (\$xr[0-9]+),\1,\2 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_less_unordered: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.sult.d (\$xr[0-9]+),\1,\2 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_not_less: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.sule.d (\$xr[0-9]+),\2,\1 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_greater_unordered: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.sult.d (\$xr[0-9]+),\2,\1 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_less: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.clt.d (\$xr[0-9]+),\1,\2 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_less_equal: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cle.d (\$xr[0-9]+),\1,\2 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_greater: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.clt.d (\$xr[0-9]+),\2,\1 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_greater_equal: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cle.d (\$xr[0-9]+),\2,\1 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_not_less: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cule.d (\$xr[0-9]+),\2,\1 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_greater_unordered: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cult.d (\$xr[0-9]+),\2,\1 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_not_greater: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cule.d (\$xr[0-9]+),\1,\2 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_less_unordered: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cult.d (\$xr[0-9]+),\1,\2 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_unordered: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cun.d (\$xr[0-9]+),(\1,\2|\2,\1) -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_ordered: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cor.d (\$xr[0-9]+),(\1,\2|\2,\1) -** xvst \3,\$r6,0 -** jr \$r1 -*/ diff --git a/gcc/testsuite/gcc.target/loongarch/xvfcmp-f.c b/gcc/testsuite/gcc.target/loongarch/xvfcmp-f.c deleted file mode 100644 index 1ca1e6c8b693..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/xvfcmp-f.c +++ /dev/null @@ -1,189 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mlasx -fno-vect-cost-model" } */ -/* { dg-final { check-function-bodies "**" "" } } */ - -#define F float -#define I int -#define VL 32 - -#include "vfcmp-f.c" - -/* -** compare_quiet_equal: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.ceq.s (\$xr[0-9]+),(\1,\2|\2,\1) -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_not_equal: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cune.s (\$xr[0-9]+),(\1,\2|\2,\1) -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_greater: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.slt.s (\$xr[0-9]+),\2,\1 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_greater_equal: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.sle.s (\$xr[0-9]+),\2,\1 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_less: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.slt.s (\$xr[0-9]+),\1,\2 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_less_equal: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.sle.s (\$xr[0-9]+),\1,\2 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_not_greater: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.sule.s (\$xr[0-9]+),\1,\2 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_less_unordered: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.sult.s (\$xr[0-9]+),\1,\2 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_not_less: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.sule.s (\$xr[0-9]+),\2,\1 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_signaling_greater_unordered: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.sult.s (\$xr[0-9]+),\2,\1 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_less: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.clt.s (\$xr[0-9]+),\1,\2 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_less_equal: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cle.s (\$xr[0-9]+),\1,\2 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_greater: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.clt.s (\$xr[0-9]+),\2,\1 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_greater_equal: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cle.s (\$xr[0-9]+),\2,\1 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_not_less: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cule.s (\$xr[0-9]+),\2,\1 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_greater_unordered: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cult.s (\$xr[0-9]+),\2,\1 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_not_greater: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cule.s (\$xr[0-9]+),\1,\2 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_less_unordered: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cult.s (\$xr[0-9]+),\1,\2 -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_unordered: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cun.s (\$xr[0-9]+),(\1,\2|\2,\1) -** xvst \3,\$r6,0 -** jr \$r1 -*/ - -/* -** compare_quiet_ordered: -** xvld (\$xr[0-9]+),\$r4,0 -** xvld (\$xr[0-9]+),\$r5,0 -** xvfcmp.cor.s (\$xr[0-9]+),(\1,\2|\2,\1) -** xvst \3,\$r6,0 -** jr \$r1 -*/ diff --git a/gcc/testsuite/gcc.target/loongarch/zero-size-field-pass.c b/gcc/testsuite/gcc.target/loongarch/zero-size-field-pass.c deleted file mode 100644 index 999dc913a71b..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/zero-size-field-pass.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Test that LoongArch backend ignores zero-sized fields of aggregates in - argument passing. */ - -/* { dg-do compile } */ -/* { dg-options "-O2 -mdouble-float -mabi=lp64d" } */ -/* { dg-final { scan-assembler "\\\$f1" } } */ - -struct test -{ - int empty1[0]; - double empty2[0]; - int : 0; - float x; - long empty3[0]; - long : 0; - float y; - unsigned : 0; - char empty4[0]; -}; - -extern void callee (struct test); - -void -caller (void) -{ - struct test test; - test.x = 114; - test.y = 514; - callee (test); -} diff --git a/gcc/testsuite/gcc.target/loongarch/zero-size-field-ret.c b/gcc/testsuite/gcc.target/loongarch/zero-size-field-ret.c deleted file mode 100644 index 40137d97555e..000000000000 --- a/gcc/testsuite/gcc.target/loongarch/zero-size-field-ret.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Test that LoongArch backend ignores zero-sized fields of aggregates in - returning. */ - -/* { dg-do compile } */ -/* { dg-options "-O2 -mdouble-float -mabi=lp64d" } */ -/* { dg-final { scan-assembler-not "\\\$r4" } } */ - -struct test -{ - int empty1[0]; - double empty2[0]; - int : 0; - float x; - long empty3[0]; - long : 0; - float y; - unsigned : 0; - char empty4[0]; -}; - -extern struct test callee (void); - -float -caller (void) -{ - struct test test = callee (); - return test.x + test.y; -} diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index d3752e3ca072..b1c0ed740c90 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -4366,7 +4366,8 @@ proc add_options_for_bfloat16 { flags } { proc check_effective_target_scalar_all_fma { } { if { [istarget aarch64*-*-*] - || [istarget loongarch*-*-*]} { + || ([istarget loongarch*-*-*] + && [check_effective_target_hard_float])} { return 1 } return 0 @@ -4563,7 +4564,8 @@ proc check_effective_target_vect_cmdline_needed { } { || ([istarget arm*-*-*] && [check_effective_target_arm_neon]) || [istarget aarch64*-*-*] || [istarget amdgcn*-*-*] - || [istarget riscv*-*-*]} { + || [istarget riscv*-*-*] + || [istarget loongarch*-*-*]} { return 0 } else { return 1 @@ -12542,13 +12544,17 @@ proc check_vect_support_and_set_flags { } { return 0 } } elseif [istarget loongarch*-*-*] { - # Set the default vectorization option to "-mlsx" due to the problem - # of non-aligned memory access when using 256-bit vectorization. - lappend DEFAULT_VECTCFLAGS "-mdouble-float" "-mlsx" - if [check_effective_target_loongarch_sx_hw] { - set dg-do-what-default run + if [check_effective_target_loongarch_sx] { # If compiler support vector + # Set the default vectorization option to "-mlsx" due to the problem + # of non-aligned memory access when using 256-bit vectorization. + lappend DEFAULT_VECTCFLAGS "-mdouble-float" "-mlsx" + if [check_effective_target_loongarch_sx_hw] { # If hardware support vector + set dg-do-what-default run + } else { + set dg-do-what-default compile + } } else { - set dg-do-what-default compile + return 0 } } else { return 0 -- 2.47.3