Pushed to r16-6050...r16-6059.
在 2025/12/10 下午5:55, mengqinggang 写道:
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 Jiajie 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
v4 -> v5:
- Fix some tests on LA64.
- Enable mstrict-align by default on LA32.
- Disable some builtin on LA32.
- Remove fpu64 from march=la32v1.0.
Jiajie Chen (1):
LoongArch: Fix signed 32-bit overflow for loongarch32 target
mengqinggang (8):
LoongArch: Introduce LoongArch32 target
LoongArch: C and .h files for LA32
LoongArch: Machine description files for LA32
LoongArch: Add support for intrinsics on LA32
LoongArch: Add support for libgcc on LA32
LoongArch: Fix uint64_t a & 0xfffffffffff on LA32
LoongArch: XALLOCAVEC allocate too large space on stack
LoongArch: Testcases 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-builtins.cc | 42 +-
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 | 55 ++-
gcc/config/loongarch/loongarch-opts.h | 19 +-
gcc/config/loongarch/loongarch-str.h | 10 +
gcc/config/loongarch/loongarch.cc | 132 ++++--
gcc/config/loongarch/loongarch.h | 19 +-
gcc/config/loongarch/loongarch.md | 436 +++++++++++++-----
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/doc/invoke.texi | 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 ++
.../gcc.target/loongarch/la32/memcpy.c | 10 +
.../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 | 4 +-
.../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 | 2 +-
.../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 | 2 +-
.../loongarch/{ => vector/lasx}/pr112476-4.c | 2 +-
.../loongarch/{ => vector/lasx}/pr113033.c | 0
.../{ => vector/lasx}/pragma-push-pop.c | 0
.../{ => vector/lasx}/rotl-with-xvrotr-b.c | 2 +-
.../{ => vector/lasx}/rotl-with-xvrotr-d.c | 2 +-
.../{ => vector/lasx}/rotl-with-xvrotr-h.c | 2 +-
.../{ => vector/lasx}/rotl-with-xvrotr-w.c | 2 +-
.../loongarch/{ => vector/lasx}/sad-lasx.c | 0
.../{ => vector/lasx}/strict-align.c | 0
.../{ => vector/lasx}/vec_pack_unpack_256.c | 0
.../{ => vector/lasx}/vec_reduc_half.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 | 2 +-
.../loongarch/{ => vector/lasx}/xvfcmp-f.c | 2 +-
.../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 +-
282 files changed, 1131 insertions(+), 345 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/memcpy.c
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 (95%)
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
(89%)
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 (81%)
rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/pr112476-4.c (65%)
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 (84%)
rename gcc/testsuite/gcc.target/loongarch/{ =>
vector/lasx}/rotl-with-xvrotr-d.c (84%)
rename gcc/testsuite/gcc.target/loongarch/{ =>
vector/lasx}/rotl-with-xvrotr-h.c (84%)
rename gcc/testsuite/gcc.target/loongarch/{ =>
vector/lasx}/rotl-with-xvrotr-w.c (84%)
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}/vec_reduc_half.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 (99%)
rename gcc/testsuite/gcc.target/loongarch/{ => vector/lasx}/xvfcmp-f.c (99%)
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%)