44 Commits

Author SHA1 Message Date
Fangrui Song
9ca2d60213 [Driver][test] Replace legacy -target with --target=
Similar to previous cleanup.

While changing mips* tests, change some -no-integrated-as to the
recommended -fno-integrated-as.
2024-05-27 18:55:03 -07:00
YunQiang Su
d59bc6b5c7
Clang/MIPS: Add +fp64 if MSA and no explicit -mfp option (#91949)
MSA requires -mfp64. If FP64 is supported by CPU (mips32r2+), and no
-mfp32/-mfpxx is explicitly given, let's add +fp64. Otherwise some cmd
like
   clang --target=mips -mips32r5 -mmsa
will issue LLVM backend ICE.
2024-05-20 14:48:34 +08:00
YunQiang Su
b4b95dee31 MIPS: fix build from IR files, nan2008 and FpAbi
When we use llc or lld to compiler IR files, the features +nan2008 and +fpxx/+fp64 are not used.
Thus wrong format files are produced.

In IR files, the attributes are only set for function while not the whole compile units.
So we extract the attributes from the first function and use it for the whole unit.

isFPXXDefault: for o32, the FPXX should always be the default, no matter about the vendors.
Of course some distributions with FP64 default enabled should be listed explicit.
Let's add them in future if we know about one.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D140270
2023-02-06 20:36:11 -08:00
Fangrui Song
c348abce68 Revert D138179 "MIPS: fix build from IR files, nan2008 and FpAbi"
This reverts commit 9739bb81aed490bfcbcbbac6970da8fb7232fd34.
It causes `.module is not permitted after generating code`
for Linux kernel's `ARCH=mips 32r1_defconfig` clang+GNU as build.
It's confirmed as a defect, but the proper fix needs time to sort out.
2022-12-22 11:48:55 -08:00
YunQiang Su
9739bb81ae MIPS: fix build from IR files, nan2008 and FpAbi
When we use llc or lld to compiler IR files, the features +nan2008 and +fpxx/+fp64 are not used.
Thus wrong format files are produced.

In IR files, the attributes are only set for function while not the whole compile units.
So we output `.nan 2008` and `.module fp=xx/64` before every function.

`isFPXXDefault`: for o32, the FPXX should always be the default, no matter about the vendors.
Of course some distributions with FP64 default enabled should be listed explicit.
Let's add them in future if we know about one.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D138179
2022-12-15 09:04:36 +00:00
Fangrui Song
5c29ffda90 Revert "[Driver][test] Replace ^//$ with empty string"
This reverts commit 4817b7729a1846b709ec02b98bfe11b0125f8e8f.

It caused some `^/\n` and had some objection about its readability improvement.
2022-06-24 13:52:27 -07:00
Fangrui Song
4817b7729a [Driver][test] Replace ^//$ with empty string
The convention does not add //\n. Having all RUN/CHECK lines separated by //\n
makes editor movement difficult (e.g. { } in Vim).
2022-06-24 11:25:03 -07:00
Fangrui Song
5fadb39e9b [Driver][test] Make some tests work with CLANG_DEFAULT_PIE_ON_LINUX=on
Also delete some cross-linux.c tests which are covered by linux-cross.cpp
2021-12-12 16:28:33 -08:00
Simon Atanasyan
3552d3e0f7 [mips] Add octeon+ to the list of CPUs accepted by the driver 2019-11-07 13:58:50 +03:00
Aleksandar Beserminji
20d603bbdf [mips] Improve handling of -fno-[pic/PIC] option
In order to disable PIC and to match GCC behaviour, -mno-abicalls
option is neccessary. When -fno-[pic/PIC] is used witout -mno-abicalls,
warning is reported. An error is reported when -fno-pic or -fno-PIC is
used in combination with -mabicalls.

In this commit, test case is added.

Depends on D44381.

Differential Revision: https://reviews.llvm.org/D44684

llvm-svn: 331640
2018-05-07 14:30:49 +00:00
Aleksandar Beserminji
535f5ae003 Revert "[mips] Improve handling of -fno-[pic/PIC] option"
This reverts commit r331636. Forgot to add the test case.

llvm-svn: 331639
2018-05-07 14:28:42 +00:00
Aleksandar Beserminji
f9b3fc5e2b [mips] Improve handling of -fno-[pic/PIC] option
In order to disable PIC and to match GCC behaviour, -mno-abicalls
option is neccessary. When -fno-[pic/PIC] is used witout -mno-abicalls,
warning is reported. An error is reported when -fno-pic or -fno-PIC is
used in combination with -mabicalls.

Depends on D44381.

Differential Revision: https://reviews.llvm.org/D44684

llvm-svn: 331636
2018-05-07 14:19:54 +00:00
Simon Dardis
9e962add70 [mips] Add support for static model on N64
The patch teaches the Clang driver how to handle the N64 static
relocation model properly. It enforces the correct target feature
(+noabicalls) when -fno-pic is used. This is required as non-pic
N64 code as the abi extension to call PIC code (CPIC) is unsupported.

Make PIC the default for mips64 and mips64el, this affects both N32
& N64 ABIs, to better match GCC.

As part of this effort, clean up the assembler invocation command
builder, so the correct flags are used.

This and r293279 in LLVM resolves PR/23485.

Thanks to Brooks Davis for reporting the issue!

Reviewers: slthakur, seanbruno

Differential Revision: https://reviews.llvm.org/D29031

llvm-svn: 293285
2017-01-27 15:05:25 +00:00
Daniel Sanders
07c8654284 [mips] Kill 'support' for untested EABI.
Summary:
There are no llvm backend tests* for EABI and no EABI buildbots. There were only
three clang tests, all of which checked that -mabi=eabi was passed to the
assembler.

*There is a single backend test that specifies EABI but it actually tests MIPS16.

Reviewers: atanasyan

Subscribers: emaste, sdardis, atanasyan, cfe-commits

Differential Revision: http://reviews.llvm.org/D20679

llvm-svn: 270998
2016-05-27 14:30:23 +00:00
Daniel Sanders
ff9525817b [mips][p5600] Add -mcpu=p5600 option.
Summary:

Reviewers: vkalintiris, atanasyan

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D12234

llvm-svn: 249306
2015-10-05 12:24:30 +00:00
Toma Tabacu
94ea6867cc [mips] Don't propagate -mfpxx by default if soft/single float were also set.
Summary:
If the driver is only given -msoft-float/-mfloat-abi=soft or -msingle-float,
we should refrain from propagating -mfpxx, unless it was explicitly given on the
command line.

Reviewers: atanasyan, dsanders

Reviewed By: atanasyan, dsanders

Subscribers: cfe-commits, mpf

Differential Revision: http://reviews.llvm.org/D10387

llvm-svn: 239818
2015-06-16 13:54:13 +00:00
Toma Tabacu
b36d610cc2 [mips] Pass on -m{single,double}-float to GAS.
Summary: We already pass these to the IAS, but not to GAS.

Reviewers: dsanders, atanasyan

Reviewed By: atanasyan

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D10358

llvm-svn: 239525
2015-06-11 12:13:18 +00:00
Simon Atanasyan
162feb5f8e [Mips] Support mips32r3, mips32r5, mips64r3, mips64r5 MIPS ISA names
The patch teaches the clang's driver to understand new MIPS ISA names,
pass appropriate options to the assembler, defines corresponding macros etc

http://reviews.llvm.org/D7737

llvm-svn: 230092
2015-02-20 23:37:40 +00:00
Daniel Sanders
7e7baa9ab8 Partially revert r215204 - [mips] Add -mabicalls/-mno-abicalls to the driver
It wasn't actually a bug that -mabicalls/-mno-abicalls wasn't being passed to
GAS. The only reason we pass it to the integrated assembler is because it shares
the same framework with CodeGen.

llvm-svn: 215236
2014-08-08 18:39:01 +00:00
Daniel Sanders
e805f44c8f [mips] Add -mabicalls/-mno-abicalls to the driver
Based on a patch by Matheus Almeida. I've added testcases and fixed a bug where
the options weren't passed on to GAS.

llvm-svn: 215204
2014-08-08 13:44:50 +00:00
Daniel Sanders
54d8ee6d7b [mips] -mno-shared should only be given to the assembler when -fPIC/-fpic/-fPIE/-fpie is not in effect.
This fixes compiler recursion on MIPS32r2.

llvm-svn: 213741
2014-07-23 12:06:13 +00:00
Daniel Sanders
379d44bfdf [mips] Correct the invocation of GAS in several cases.
Summary:
As a result of this patch, assembling an empty file with GCC and Clang (using
GAS as the assembler) now produces identical objects.

-mfp32/-mfpxx/-mfp64 now form a trinity of options. -mfpxx is the default
when the triple vendor is 'img' or 'mti', the ABI is O32, and the CPU is
between mips2 and mips32r2/mips64r2 (inclusive).

-mno-shared is always given to the assembler to match the effect of
-mabicalls (currently unimplemented but Clang acts as if it is given).
Similarly, -call_nonpic is always given to match the effect of -mplt (also
unimplemented and acts as if given) except when the ABI is 64 in which case
-mplt has no effect so -KPIC is given instead.

-mhard-float/-msoft-float are now passed on.

-modd-spreg/-mno-odd-spreg are now passed on.

-mno-mips16 is correctly passed on. The assembler option is -no-mips16 not
-mno-mips16

Differential Revision: http://reviews.llvm.org/D4515

llvm-svn: 213138
2014-07-16 11:52:23 +00:00
Daniel Sanders
0c8d95ab85 [mips][mips64r6] Implement -mips32r6 and -mips64r6 aliases to -march=mips32r6 and -march=mips64r6
Differential Revision: http://reviews.llvm.org/D4434

llvm-svn: 212625
2014-07-09 14:21:18 +00:00
Simon Atanasyan
4e16a4250d [Driver][Mips] Support one more MIPS CPU name - octeon.
llvm-svn: 212339
2014-07-04 12:37:04 +00:00
Simon Atanasyan
26610c5960 [Driver][Mips] Support more MIPS CPU names: mips1 - mips5.
llvm-svn: 212338
2014-07-04 12:36:56 +00:00
Daniel Sanders
adbbfd1fe9 [mips] Added additional test cases for passing -mabi to the assembler.
Summary:
This patch adds minimal coverage for each -mcpu value to ensure that none of them can pass an empty string in -mabi. 

Prior to r212176, many -mcpu values would trigger this.

Differential Revision: http://reviews.llvm.org/D4272

llvm-svn: 212182
2014-07-02 15:21:50 +00:00
Daniel Sanders
b7689ba49d [mips] Make FileCheck prefixes match the CPU they check
Summary:
For example: s/MIPS32-EB-AS/MIPS32R2-EB-AS/ since it is for MIPS32r2 not MIPS32.

This reduces the noise in my next Clang patch.

Differential Revision: http://reviews.llvm.org/D4271

llvm-svn: 212177
2014-07-02 13:21:52 +00:00
Simon Atanasyan
0091a0758b [Driver][Mips] Fix test cases - make ABI name and target triple consistent.
No functional changes.

llvm-svn: 212023
2014-06-30 08:10:01 +00:00
Saleem Abdulrasool
a56fc7c42c test: fix MIPS driver tests
The tests attempt to validate the invocation of the assembler program with the
integrated assembler disabled.  However, the match pattern for the negative
tests are lax and will match both the driver invocation as well as the assembler
invocation.  Make the tests more strict by ensuring that we only match the
assembler invocation.

llvm-svn: 201959
2014-02-22 23:37:54 +00:00
Nico Rieck
e6a1582595 Fix broken CHECK lines
llvm-svn: 201477
2014-02-16 07:29:41 +00:00
Simon Atanasyan
1a3665b676 [Mips] Change default CPU for MIPS 32/64 targets. Now they are mips32r2/mips64r2 respectively.
llvm-svn: 200222
2014-01-27 13:59:04 +00:00
Simon Atanasyan
bd98663c7a [Mips] Pass -mmsa option to the assembler.
llvm-svn: 195756
2013-11-26 11:58:04 +00:00
Simon Atanasyan
5c5b5daab2 [Mips] Take in account the -mfp64 command line option when build paths
to the crt*.o files, libraries and headers for the MIPS FSFS toolchain.

llvm-svn: 195249
2013-11-20 13:53:20 +00:00
Simon Atanasyan
22127cee34 [Mips] Support -mnan=2008 option. Define "__mips_nan2008" macros and pass
this option to the assembler.

llvm-svn: 191282
2013-09-24 09:09:16 +00:00
Simon Atanasyan
036d16d916 [Mips] Pass -mips16, -mmicromips, -mdsp and -mdspr2 flags to the
assembler.

llvm-svn: 180775
2013-04-30 07:47:13 +00:00
Simon Atanasyan
af9ebc742d [Mips] Remove "REQUIRES: mips-registered-target" from some MIPS-related
driver tests. These tests check the driver only and do not require mips
target.

llvm-svn: 180042
2013-04-22 20:26:27 +00:00
Simon Atanasyan
0da400cf92 [Mips] Add two new aliases for MIPS ABI names 32 (means o32 abi) and 64
(means n64 abi) to improve compatibility with GNU tools.
Patch by Jia Liu <proljc@gmail.com>.

llvm-svn: 176187
2013-02-27 14:55:49 +00:00
Simon Atanasyan
2efe53e448 Add four new command line options for MIPS CPU selection:
-mips32, -mips32r2, -mips64, -mips64r2.

The patch reviewed by Eric Christopher.

llvm-svn: 164410
2012-09-21 20:19:32 +00:00
Simon Atanasyan
464a7f7e89 MIPS: Use -march=arch option to select either generic MIPS ISA,
or the name of a particular processor.

The patch reviewed by Douglas Gregor.

llvm-svn: 163492
2012-09-10 08:32:41 +00:00
Simon Atanasyan
a80313acbc Check for MIPS target availability for Driver/mips-as.c test.
llvm-svn: 162744
2012-08-28 11:17:20 +00:00
Simon Atanasyan
f438281e04 Give test check tags consistent names.
llvm-svn: 159744
2012-07-05 11:30:19 +00:00
Simon Atanasyan
217dc2d8dd MIPS: Pass -KPIC argument to MIPS assembler if necessary.
llvm-svn: 157635
2012-05-29 19:07:33 +00:00
Simon Atanasyan
571d7bde3c MIPS: Pass -mabi option to the assmbler when compile MIPS targets.
llvm-svn: 154270
2012-04-07 22:31:29 +00:00
Simon Atanasyan
2390aa1813 MIPS: Pass -EB/-EL argument to the assembler according to selected endian when compile for MIPS targets.
llvm-svn: 154195
2012-04-06 19:15:24 +00:00