[llvm] r288279 - [AArch64] Refactor LSE support as feature separate from V8.1a support.

Joel Jones via llvm-commits llvm-commits at lists.llvm.org
Tue May 2 07:08:58 PDT 2017


Thanks for the catch. I once spent a lot of time cleaning up an assembler that didn’t have a history of being picky enough about which particular instructions a specific part supported, until a customer got run-time errors.

Joel

> On May 1, 2017, at 6:01 PM, Ahmed Bougacha <ahmed.bougacha at gmail.com> wrote:
> 
> On Wed, Nov 30, 2016 at 2:25 PM, Joel Jones via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
>> Author: joel_k_jones
>> Date: Wed Nov 30 16:25:24 2016
>> New Revision: 288279
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=288279&view=rev
>> Log:
>> [AArch64] Refactor LSE support as feature separate from V8.1a support.
>> 
>> Summary:
>> This is preparation for ThunderX processors that have Large
>> System Extension (LSE) atomic instructions, but not the
>> other instructions introduced by V8.1a.
>> This will mimic changes to GCC as described here:
>> https://gcc.gnu.org/ml/gcc-patches/2015-06/msg00388.html
>> 
>> LSE instructions are: LD/ST<op>, CAS*, SWP
>> 
>> Reviewers: t.p.northover, echristo, jmolloy, rengolin
>> 
>> Subscribers: aemerson, mehdi_amini
>> 
>> Differential Revision: https://reviews.llvm.org/D26621
>> 
>> Added:
>>    llvm/trunk/test/MC/AArch64/arm64v8.1-diagno-predicate.s
>> Modified:
>>    llvm/trunk/include/llvm/Support/AArch64TargetParser.def
>>    llvm/trunk/include/llvm/Support/TargetParser.h
>>    llvm/trunk/lib/Target/AArch64/AArch64.td
>>    llvm/trunk/lib/Target/AArch64/AArch64InstrFormats.td
>>    llvm/trunk/lib/Target/AArch64/AArch64InstrInfo.td
>>    llvm/trunk/lib/Target/AArch64/AArch64Subtarget.h
>>    llvm/trunk/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
>>    llvm/trunk/test/MC/AArch64/directive-arch-negative.s
>>    llvm/trunk/test/MC/AArch64/directive-cpu.s
>> 
>> Modified: llvm/trunk/include/llvm/Support/AArch64TargetParser.def
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/AArch64TargetParser.def?rev=288279&r1=288278&r2=288279&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/Support/AArch64TargetParser.def (original)
>> +++ llvm/trunk/include/llvm/Support/AArch64TargetParser.def Wed Nov 30 16:25:24 2016
>> @@ -21,15 +21,15 @@ AARCH64_ARCH("invalid", AK_INVALID, null
>> AARCH64_ARCH("armv8-a", AK_ARMV8A, "8-A", "v8", ARMBuildAttrs::CPUArch::v8_A,
>>              FK_CRYPTO_NEON_FP_ARMV8,
>>              (AArch64::AEK_CRC | AArch64::AEK_CRYPTO | AArch64::AEK_FP |
>> -              AArch64::AEK_SIMD))
>> +              AArch64::AEK_SIMD | AArch64::AEK_LSE))
> 
> FYI: I noticed this bit and don't think it's correct (v8-A doesn't
> have LSE); fixed in r301890.  The default extensions are hardly used
> though, so no big deal.
> 
> Sorry for the necromancy,
> -Ahmed



More information about the llvm-commits mailing list