These series patches introduce LoongArch32(LA32) ilp32d abi and LoongArch32 Reduced(LA32R) ilp32s abi. The ilp32 abi is similar to lp64 abi[1], with some differences in details.
Most testcases have passed when using qemu-user. A LA32 linux system based on qemu is here[2]. The binutils and glibc sources is here[3] [4]. A LA32 instruction set manual is here [5] or in any LA64 manual. A Chinese LA32R instruction set manual is here[6]. These patches are based on Jiajia Chen's previous work[7]. [1] https://github.com/loongson/la-abi-specs/tree/release [2] https://github.com/sunhaiyong1978/CLFS-for-LoongArch32/blob/main/Qemu_For_LoongArch32-Simple.md [3] https://github.com/cloudspurs/binutils-gdb/tree/la32 [4] https://github.com/cloudspurs/glibc/tree/la32 [5] https://github.com/loongson/LoongArch-Documentation/blob/main/docs/LoongArch-Vol1-EN/basic-integer-instructions/overview-of-basic-integer-instructions.adoc [6] https://www.loongson.cn/uploads/images/2025032109211238668.%E9%BE%99%E6%9E%B6%E6%9E%8432%E4%BD%8D%E7%B2%BE%E7%AE%80%E7%89%88%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C_r1p04.pdf [7] https://github.com/jiegec/gcc/tree/loongarch32-new Changes v2 -> v3: - Reorganize and merge patches. - Add gcc.target/loongarch/{la32|la64} testcases path. Jiajie Chen (4): LoongArch: Fix addsi3 pattern for LA32 LoongArch: Set long double width to 128 in LA32 LoongArch: Allow lo_sum to be used with DF in LoongArch32 with 64-bit FPU LoongArch: Fix signed 32-bit overflow for loongarch32 target mengqinggang (13): LoongArch: Introduce LoongArch32 target LoongArch: Machine description modifications for LA32 LoongArch: Disable some constraints, predicates and instrcions on LA32 LoongArch: Add support for call30 and TLS descriptors on LA32 LoongArch: Disable features not supported by LA32 LoongArch: Add support for libgcc on LA32 LoongArch: Macro modifications for LA32 LoongArch: Fix 64-bit move for LA32 LoongArch: Fix redundant SI sign_extend in atomic_compare_and_swap<mode> LoongArch: Use DFmode to save or restore float registers on ilp32d ABI LoongArch: Fix uint64_t a & 0xfffffffffff on LA32 LoongArch: XALLOCAVEC allocate to large space on stack LoongArch: Testcases modifications for LA32 contrib/config-list.mk | 1 + gcc/config.gcc | 48 +- gcc/config/loongarch/constraints.md | 1 + .../loongarch/genopts/loongarch-strings | 10 + gcc/config/loongarch/genopts/loongarch.opt.in | 24 + gcc/config/loongarch/gnu-user.h | 3 + gcc/config/loongarch/larchintrin.h | 21 +- gcc/config/loongarch/linux.h | 8 +- gcc/config/loongarch/loongarch-c.cc | 5 + gcc/config/loongarch/loongarch-def.cc | 51 +- gcc/config/loongarch/loongarch-def.h | 28 +- gcc/config/loongarch/loongarch-driver.h | 4 + gcc/config/loongarch/loongarch-opts.cc | 53 ++- gcc/config/loongarch/loongarch-opts.h | 19 +- gcc/config/loongarch/loongarch-str.h | 10 + gcc/config/loongarch/loongarch.cc | 131 ++++-- gcc/config/loongarch/loongarch.h | 18 +- gcc/config/loongarch/loongarch.md | 444 +++++++++++++----- gcc/config/loongarch/loongarch.opt | 24 + gcc/config/loongarch/predicates.md | 10 +- gcc/config/loongarch/sync.md | 198 ++++++-- gcc/config/loongarch/t-linux | 6 + 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.target/loongarch/float-load.c | 1 + gcc/testsuite/gcc.target/loongarch/la32/and.c | 8 + .../gcc.target/loongarch/la32/la32.exp | 40 ++ .../loongarch/la32/trunc_int_for_mode.c | 17 + .../loongarch/{ => la64}/add-const.c | 0 .../loongarch/{ => la64}/alsl-cost.c | 0 .../gcc.target/loongarch/{ => la64}/alsl_wu.c | 0 .../{ => la64}/and-large-immediate-opt.c | 0 .../loongarch/{ => la64}/arch-func-attr-1.c | 0 .../loongarch/{ => la64}/arch-pragma-attr-1.c | 0 .../loongarch/{ => la64}/attr-model-1.c | 0 .../loongarch/{ => la64}/attr-model-2.c | 0 .../loongarch/{ => la64}/attr-model-3.c | 0 .../loongarch/{ => la64}/attr-model-4.c | 0 .../loongarch/{ => la64}/attr-model-5.c | 0 .../loongarch/{ => la64}/attr-model-diag.c | 0 .../loongarch/{ => la64}/attr-model-test.c | 0 .../loongarch/{ => la64}/bitint-alignments.c | 0 .../loongarch/{ => la64}/bitint-args.c | 0 .../loongarch/{ => la64}/bitint-sizes.c | 0 .../{ => la64}/bitwise-shift-reassoc.c | 0 .../loongarch/{ => la64}/bitwise_extend.c | 0 .../loongarch/{ => la64}/bstrins-1.c | 0 .../loongarch/{ => la64}/bstrins-2.c | 0 .../loongarch/{ => la64}/bstrins-3.c | 0 .../loongarch/{ => la64}/bstrins-4.c | 0 .../{ => la64}/bstrpick_alsl_paired.c | 0 .../loongarch/{ => la64}/bytepick_combine.c | 0 .../loongarch/{ => la64}/bytepick_shift_128.c | 0 .../loongarch/{ => la64}/can_inline_1.c | 0 .../loongarch/{ => la64}/can_inline_2.c | 0 .../loongarch/{ => la64}/can_inline_3.c | 0 .../loongarch/{ => la64}/can_inline_4.c | 0 .../loongarch/{ => la64}/can_inline_5.c | 0 .../loongarch/{ => la64}/can_inline_6.c | 0 .../loongarch/{ => la64}/cmodel-extreme-1.c | 0 .../loongarch/{ => la64}/cmodel-extreme-2.c | 0 .../loongarch/{ => la64}/cmodel-func-attr-1.c | 0 .../{ => la64}/cmodel-pragma-attr-1.c | 0 .../gcc.target/loongarch/{ => la64}/cmov_ii.c | 0 .../{ => la64}/compare-both-non-zero.c | 0 .../{ => la64}/conditional-move-opt-1.c | 0 .../{ => la64}/conditional-move-opt-2.c | 0 .../{ => la64}/conditional-move-opt-3.c | 0 .../{ => la64}/const-double-zero-stx.c | 0 .../loongarch/{ => la64}/crc-sext.c | 0 .../loongarch/{ => la64}/direct-extern-1.c | 0 .../loongarch/{ => la64}/div-div32.c | 0 .../loongarch/{ => la64}/div-no-div32.c | 0 .../gcc.target/loongarch/{ => la64}/divf.c | 0 .../explicit-relocs-auto-extreme-tls-desc.c | 0 .../{ => la64}/explicit-relocs-auto-lto.c | 0 ...explicit-relocs-auto-single-load-store-2.c | 0 ...explicit-relocs-auto-single-load-store-3.c | 0 ...-relocs-auto-single-load-store-no-anchor.c | 0 .../explicit-relocs-auto-single-load-store.c | 0 .../explicit-relocs-auto-tls-desc.c | 0 .../explicit-relocs-auto-tls-ld-gd.c | 0 .../explicit-relocs-auto-tls-le-ie.c | 0 .../explicit-relocs-extreme-auto-tls-ld-gd.c | 0 .../explicit-relocs-extreme-tls-desc.c | 0 .../explicit-relocs-medium-auto-tls-ld-gd.c | 0 ...icit-relocs-medium-call36-auto-tls-ld-gd.c | 0 .../{ => la64}/explicit-relocs-tls-desc.c | 0 .../{ => la64}/extendsidi2-combine.c | 0 .../loongarch/{ => la64}/fclass-compile.c | 0 .../loongarch/{ => la64}/fclass-run.c | 0 .../gcc.target/loongarch/{ => la64}/flogb.c | 0 .../loongarch/{ => la64}/flt-abi-isa-1.c | 0 .../loongarch/{ => la64}/flt-abi-isa-2.c | 0 .../loongarch/{ => la64}/flt-abi-isa-3.c | 0 .../loongarch/{ => la64}/flt-abi-isa-4.c | 0 .../gcc.target/loongarch/{ => la64}/frint.c | 0 .../gcc.target/loongarch/{ => la64}/fscaleb.c | 0 .../loongarch/{ => la64}/ftint-no-inexact.c | 0 .../gcc.target/loongarch/{ => la64}/ftint.c | 0 .../loongarch/{ => la64}/func-call-1.c | 0 .../loongarch/{ => la64}/func-call-2.c | 0 .../loongarch/{ => la64}/func-call-3.c | 0 .../loongarch/{ => la64}/func-call-4.c | 0 .../loongarch/{ => la64}/func-call-5.c | 0 .../loongarch/{ => la64}/func-call-6.c | 0 .../loongarch/{ => la64}/func-call-7.c | 0 .../loongarch/{ => la64}/func-call-8.c | 0 .../{ => la64}/func-call-extreme-1.c | 0 .../{ => la64}/func-call-extreme-2.c | 0 .../{ => la64}/func-call-extreme-3.c | 0 .../{ => la64}/func-call-extreme-4.c | 0 .../{ => la64}/func-call-extreme-5.c | 0 .../{ => la64}/func-call-extreme-6.c | 0 .../loongarch/{ => la64}/func-call-medium-1.c | 0 .../loongarch/{ => la64}/func-call-medium-2.c | 0 .../loongarch/{ => la64}/func-call-medium-3.c | 0 .../loongarch/{ => la64}/func-call-medium-5.c | 0 .../loongarch/{ => la64}/func-call-medium-6.c | 0 .../loongarch/{ => la64}/func-call-medium-7.c | 0 .../loongarch/{ => la64}/func-call-medium-8.c | 0 .../{ => la64}/func-call-medium-call36-1.c | 0 .../{ => la64}/func-call-medium-call36.c | 0 .../loongarch/{ => la64}/imm-load.c | 0 .../loongarch/{ => la64}/imm-load1.c | 0 .../loongarch/{ => la64}/invariant-recip.c | 0 .../gcc.target/loongarch/la64/la64.exp | 40 ++ .../{ => la64}/larch-frecipe-builtin.c | 0 .../{ => la64}/larch-frecipe-intrinsic.c | 0 .../loongarch/{ => la64}/lasx-func-attr-1.c | 0 .../loongarch/{ => la64}/lasx-pragma-attr-1.c | 0 .../loongarch/{ => la64}/lsx-func-attr-1.c | 0 .../loongarch/{ => la64}/lsx-pragma-attr-1.c | 0 .../loongarch/{ => la64}/math-float-128.c | 0 .../loongarch/{ => la64}/mem-and-mask-opt.c | 0 .../loongarch/{ => la64}/memcpy-vec-1.c | 0 .../loongarch/{ => la64}/memcpy-vec-2.c | 0 .../loongarch/{ => la64}/memcpy-vec-3.c | 0 .../loongarch/{ => la64}/mode-tieable-opt.c | 0 .../loongarch/{ => la64}/mov-zero-2.c | 0 .../loongarch/{ => la64}/movcf2gr-via-fr.c | 0 .../loongarch/{ => la64}/movcf2gr.c | 0 .../{ => la64}/mul-const-reduction.c | 0 .../gcc.target/loongarch/{ => la64}/mulh_wu.c | 0 .../loongarch/{ => la64}/mulw_d_w.c | 0 .../loongarch/{ => la64}/mulw_d_wu.c | 0 .../loongarch/{ => la64}/pr109465-1.c | 0 .../loongarch/{ => la64}/pr109465-2.c | 0 .../loongarch/{ => la64}/pr109465-3.c | 0 .../loongarch/{ => la64}/pr113148.c | 0 .../loongarch/{ => la64}/pr114861.c | 0 .../loongarch/{ => la64}/pr118561.c | 0 .../loongarch/{ => la64}/pr118828-2.c | 0 .../loongarch/{ => la64}/pr118828-3.c | 0 .../loongarch/{ => la64}/pr118828-4.c | 0 .../loongarch/{ => la64}/pr118828.c | 0 .../loongarch/{ => la64}/pr118843.c | 0 .../loongarch/{ => la64}/pr119127.c | 0 .../loongarch/{ => la64}/pr121542.c | 0 .../loongarch/{ => la64}/pr121634.c | 0 .../loongarch/{ => la64}/pr121875.c | 0 .../loongarch/{ => la64}/prolog-opt.c | 0 .../loongarch/{ => la64}/recip-divf.c | 0 .../loongarch/{ => la64}/recip-sqrtf.c | 0 .../{ => la64}/relocs-symbol-noaddend.c | 0 .../gcc.target/loongarch/{ => la64}/revb.c | 0 .../loongarch/{ => la64}/rotl-with-rotr.c | 0 .../gcc.target/loongarch/{ => la64}/rotrw.c | 0 .../loongarch/{ => la64}/sign-extend-1.c | 0 .../loongarch/{ => la64}/sign-extend-2.c | 0 .../loongarch/{ => la64}/sign-extend-3.c | 0 .../loongarch/{ => la64}/sign-extend-4.c | 0 .../loongarch/{ => la64}/sign-extend-5.c | 0 .../loongarch/{ => la64}/sign-extend-6.c | 0 .../{ => la64}/sign-extend-bitwise.c | 0 .../loongarch/{ => la64}/sign_extend_ashift.c | 0 .../loongarch/{ => la64}/slt-sign-extend.c | 0 .../loongarch/{ => la64}/smuldi3_highpart.c | 0 .../loongarch/{ => la64}/spill-less.c | 0 .../gcc.target/loongarch/{ => la64}/sqrtf.c | 0 .../loongarch/{ => la64}/switch-qi.c | 0 .../loongarch/{ => la64}/tls-extreme-macro.c | 0 .../loongarch/{ => la64}/tls-gd-noplt.c | 0 .../loongarch/{ => la64}/tls-ie-extreme.c | 0 .../loongarch/{ => la64}/tls-ie-norelax.c | 0 .../loongarch/{ => la64}/tls-ie-relax.c | 0 .../loongarch/{ => la64}/tls-le-relax.c | 0 .../{ => la64}/widen-mul-rtx-cost-signed.c | 0 .../{ => la64}/widen-mul-rtx-cost-unsigned.c | 0 .../{ => la64}/zero-size-field-pass.c | 0 .../{ => la64}/zero-size-field-ret.c | 0 .../gcc.target/loongarch/larch-builtin.c | 72 +-- gcc/testsuite/gcc.target/loongarch/pr115752.c | 1 + .../loongarch/{ => vector/lasx}/abd-lasx.c | 0 .../{ => vector/lasx}/avg-ceil-lasx.c | 0 .../{ => vector/lasx}/avg-floor-lasx.c | 0 .../loongarch/{ => vector/lasx}/fnmam4-vec.c | 0 .../{ => vector/lasx}/lasx-andn-iorn.c | 0 .../lasx}/lasx-extract-even_odd-opt.c | 0 .../{ => vector/lasx}/lasx-func-attr-2.c | 0 .../{ => vector/lasx}/lasx-pragma-attr-2.c | 0 .../{ => vector/lasx}/lasx-reduc-1.c | 0 .../{ => vector/lasx}/lasx-xvpermi_q-opt.c | 0 .../loongarch/{ => vector/lasx}/pr112476-2.c | 0 .../loongarch/{ => vector/lasx}/pr112476-4.c | 0 .../loongarch/{ => vector/lasx}/pr113033.c | 0 .../{ => vector/lasx}/pragma-push-pop.c | 0 .../{ => vector/lasx}/rotl-with-xvrotr-b.c | 0 .../{ => vector/lasx}/rotl-with-xvrotr-d.c | 0 .../{ => vector/lasx}/rotl-with-xvrotr-h.c | 0 .../{ => vector/lasx}/rotl-with-xvrotr-w.c | 0 .../loongarch/{ => vector/lasx}/sad-lasx.c | 0 .../{ => vector/lasx}/strict-align.c | 0 .../{ => vector/lasx}/vec_pack_unpack_256.c | 0 .../{ => vector/lasx}/vect-extract.c | 0 .../{ => vector/lasx}/vect-frint-no-inexact.c | 0 .../loongarch/{ => vector/lasx}/vect-frint.c | 0 .../{ => vector/lasx}/vect-ftint-no-inexact.c | 0 .../loongarch/{ => vector/lasx}/vect-ftint.c | 0 .../{ => vector/lasx}/vect-ld-st-imm12.c | 0 .../loongarch/{ => vector/lasx}/vect-muh.c | 0 .../loongarch/{ => vector/lasx}/vect-rotr.c | 0 .../{ => vector/lasx}/vect-shuf-fp.c | 0 .../{ => vector/lasx}/vect-slp-two-operator.c | 0 .../{ => vector/lasx}/vect-widen-add.c | 0 .../{ => vector/lasx}/vect-widen-mul.c | 0 .../{ => vector/lasx}/vect-widen-sub.c | 0 .../loongarch/{ => vector/lasx}/vfmax-vfmin.c | 0 .../loongarch/{ => vector/lasx}/vrepli.c | 0 .../{ => vector/lasx}/wide-mul-reduc-1.c | 0 .../{ => vector/lasx}/wide-mul-reduc-2.c | 0 .../loongarch/{ => vector/lasx}/xvfcmp-d.c | 0 .../loongarch/{ => vector/lasx}/xvfcmp-f.c | 0 .../loongarch/vector/loongarch-vector.exp | 20 +- .../loongarch/{ => vector/lsx}/abd-lsx.c | 0 .../loongarch/{ => vector/lsx}/avg-ceil-lsx.c | 0 .../{ => vector/lsx}/avg-floor-lsx.c | 0 .../{ => vector/lsx}/lsx-andn-iorn.c | 0 .../{ => vector/lsx}/lsx-func-attr-2.c | 0 .../{ => vector/lsx}/lsx-pragma-attr-2.c | 0 .../loongarch/{ => vector/lsx}/mov-zero-1.c | 0 .../loongarch/{ => vector/lsx}/popcnt.c | 0 .../loongarch/{ => vector/lsx}/popcount.c | 0 .../loongarch/{ => vector/lsx}/pr112476-1.c | 0 .../loongarch/{ => vector/lsx}/pr112476-3.c | 0 .../loongarch/{ => vector/lsx}/pr119084.c | 0 .../loongarch/{ => vector/lsx}/pr121064.c | 0 .../loongarch/{ => vector/lsx}/pr122097.c | 0 .../{ => vector/lsx}/rotl-with-vrotr-b.c | 0 .../{ => vector/lsx}/rotl-with-vrotr-d.c | 0 .../{ => vector/lsx}/rotl-with-vrotr-h.c | 0 .../{ => vector/lsx}/rotl-with-vrotr-w.c | 0 .../loongarch/{ => vector/lsx}/sad-lsx.c | 0 .../{ => vector/lsx}/vec_pack_unpack_128.c | 0 .../lsx}/vect-frint-scalar-no-inexact.c | 0 .../{ => vector/lsx}/vect-frint-scalar.c | 0 .../{ => vector/lsx}/vect-shift-imm-round.c | 0 .../{ => vector/lsx}/vector-func-attr-1.c | 0 .../{ => vector/lsx}/vector-pragma-attr-1.c | 0 .../loongarch/{ => vector/lsx}/vfcmp-d.c | 0 .../loongarch/{ => vector/lsx}/vfcmp-f.c | 0 .../loongarch/{ => vector/lsx}/xorsign-run.c | 0 .../loongarch/{ => vector/lsx}/xorsign.c | 0 gcc/testsuite/lib/target-supports.exp | 22 +- include/longlong.h | 6 +- libgcc/config/loongarch/t-crtstuff-la32 | 11 + .../loongarch/{t-crtstuff => t-crtstuff-la64} | 0 libgcc/configure | 12 + libgcc/configure.ac | 12 + libitm/config/loongarch/asm.h | 2 +- 278 files changed, 1082 insertions(+), 318 deletions(-) create mode 100644 gcc/testsuite/gcc.target/loongarch/la32/and.c create mode 100644 gcc/testsuite/gcc.target/loongarch/la32/la32.exp create mode 100644 gcc/testsuite/gcc.target/loongarch/la32/trunc_int_for_mode.c rename gcc/testsuite/gcc.target/loongarch/{ => la64}/add-const.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/alsl-cost.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/alsl_wu.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/and-large-immediate-opt.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/arch-func-attr-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/arch-pragma-attr-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/attr-model-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/attr-model-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/attr-model-3.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/attr-model-4.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/attr-model-5.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/attr-model-diag.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/attr-model-test.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/bitint-alignments.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/bitint-args.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/bitint-sizes.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/bitwise-shift-reassoc.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/bitwise_extend.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/bstrins-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/bstrins-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/bstrins-3.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/bstrins-4.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/bstrpick_alsl_paired.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/bytepick_combine.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/bytepick_shift_128.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/can_inline_1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/can_inline_2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/can_inline_3.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/can_inline_4.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/can_inline_5.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/can_inline_6.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/cmodel-extreme-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/cmodel-extreme-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/cmodel-func-attr-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/cmodel-pragma-attr-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/cmov_ii.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/compare-both-non-zero.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/conditional-move-opt-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/conditional-move-opt-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/conditional-move-opt-3.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/const-double-zero-stx.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/crc-sext.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/direct-extern-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/div-div32.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/div-no-div32.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/divf.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/explicit-relocs-auto-extreme-tls-desc.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/explicit-relocs-auto-lto.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/explicit-relocs-auto-single-load-store-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/explicit-relocs-auto-single-load-store-3.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/explicit-relocs-auto-single-load-store-no-anchor.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/explicit-relocs-auto-single-load-store.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/explicit-relocs-auto-tls-desc.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/explicit-relocs-auto-tls-ld-gd.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/explicit-relocs-auto-tls-le-ie.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/explicit-relocs-extreme-auto-tls-ld-gd.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/explicit-relocs-extreme-tls-desc.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/explicit-relocs-medium-auto-tls-ld-gd.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/explicit-relocs-medium-call36-auto-tls-ld-gd.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/explicit-relocs-tls-desc.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/extendsidi2-combine.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/fclass-compile.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/fclass-run.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/flogb.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/flt-abi-isa-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/flt-abi-isa-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/flt-abi-isa-3.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/flt-abi-isa-4.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/frint.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/fscaleb.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/ftint-no-inexact.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/ftint.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-3.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-4.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-5.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-6.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-7.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-8.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-extreme-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-extreme-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-extreme-3.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-extreme-4.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-extreme-5.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-extreme-6.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-medium-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-medium-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-medium-3.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-medium-5.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-medium-6.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-medium-7.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-medium-8.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-medium-call36-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/func-call-medium-call36.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/imm-load.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/imm-load1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/invariant-recip.c (100%) create mode 100644 gcc/testsuite/gcc.target/loongarch/la64/la64.exp rename gcc/testsuite/gcc.target/loongarch/{ => la64}/larch-frecipe-builtin.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/larch-frecipe-intrinsic.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/lasx-func-attr-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/lasx-pragma-attr-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/lsx-func-attr-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/lsx-pragma-attr-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/math-float-128.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/mem-and-mask-opt.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/memcpy-vec-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/memcpy-vec-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/memcpy-vec-3.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/mode-tieable-opt.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/mov-zero-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/movcf2gr-via-fr.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/movcf2gr.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/mul-const-reduction.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/mulh_wu.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/mulw_d_w.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/mulw_d_wu.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/pr109465-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/pr109465-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/pr109465-3.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/pr113148.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/pr114861.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/pr118561.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/pr118828-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/pr118828-3.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/pr118828-4.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/pr118828.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/pr118843.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/pr119127.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/pr121542.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/pr121634.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/pr121875.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/prolog-opt.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/recip-divf.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/recip-sqrtf.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/relocs-symbol-noaddend.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/revb.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/rotl-with-rotr.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/rotrw.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/sign-extend-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/sign-extend-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/sign-extend-3.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/sign-extend-4.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/sign-extend-5.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/sign-extend-6.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/sign-extend-bitwise.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/sign_extend_ashift.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/slt-sign-extend.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/smuldi3_highpart.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/spill-less.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/sqrtf.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/switch-qi.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/tls-extreme-macro.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/tls-gd-noplt.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/tls-ie-extreme.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/tls-ie-norelax.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/tls-ie-relax.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/tls-le-relax.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/widen-mul-rtx-cost-signed.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/widen-mul-rtx-cost-unsigned.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/zero-size-field-pass.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => la64}/zero-size-field-ret.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/abd-lasx.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/avg-ceil-lasx.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/avg-floor-lasx.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/fnmam4-vec.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/lasx-andn-iorn.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/lasx-extract-even_odd-opt.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/lasx-func-attr-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/lasx-pragma-attr-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/lasx-reduc-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/lasx-xvpermi_q-opt.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/pr112476-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/pr112476-4.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/pr113033.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/pragma-push-pop.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/rotl-with-xvrotr-b.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/rotl-with-xvrotr-d.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/rotl-with-xvrotr-h.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/rotl-with-xvrotr-w.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/sad-lasx.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/strict-align.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/vec_pack_unpack_256.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/vect-extract.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/vect-frint-no-inexact.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/vect-frint.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/vect-ftint-no-inexact.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/vect-ftint.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/vect-ld-st-imm12.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/vect-muh.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/vect-rotr.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/vect-shuf-fp.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/vect-slp-two-operator.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/vect-widen-add.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/vect-widen-mul.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/vect-widen-sub.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/vfmax-vfmin.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/vrepli.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/wide-mul-reduc-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/wide-mul-reduc-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/xvfcmp-d.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/xvfcmp-f.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/abd-lsx.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/avg-ceil-lsx.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/avg-floor-lsx.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/lsx-andn-iorn.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/lsx-func-attr-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/lsx-pragma-attr-2.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/mov-zero-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/popcnt.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/popcount.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/pr112476-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/pr112476-3.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/pr119084.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/pr121064.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/pr122097.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/rotl-with-vrotr-b.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/rotl-with-vrotr-d.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/rotl-with-vrotr-h.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/rotl-with-vrotr-w.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/sad-lsx.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/vec_pack_unpack_128.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/vect-frint-scalar-no-inexact.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/vect-frint-scalar.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/vect-shift-imm-round.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/vector-func-attr-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/vector-pragma-attr-1.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/vfcmp-d.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/vfcmp-f.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/xorsign-run.c (100%) rename gcc/testsuite/gcc.target/loongarch/{ => vector/lsx}/xorsign.c (100%) create mode 100644 libgcc/config/loongarch/t-crtstuff-la32 rename libgcc/config/loongarch/{t-crtstuff => t-crtstuff-la64} (100%) -- 2.34.1
