[llvm-commits] LLVM patch to support ARM fused multiply add/subtract instructions

James Molloy james.molloy at arm.com
Tue Jan 24 01:01:15 PST 2012


Hi Anton,

Had to look this up to confirm, but in the ARMARM (V7-AR, 1.4.1) it states: "if the implementation includes VFPv4 it must include Advanced SIMDv2."

So my opinion on the predicates in LLVM is that they should reflect how the ARMARM describes the architecture. That is:

  * VFP4 does not imply NEON.
  * NEONv2 does not imply VFP4.
  * VFP4 && NEON implies NEON is V2.

Refactoring the patch to reflect this would make it a lot easier for a user to map their feature selection to the description in the ARMARM, I think.

Also, the patch doesn't hook the VMLAs up to "Requires<[UseFPVMLx]>" - is there any reason for this? I know that flag isn't really used but when we do hook VMLAs up to fast-math or disable-excess-fp-precision, it'd be nice to have all implementations orthogonal.

Cheers,

James

-----Original Message-----
From: Anton Korobeynikov [mailto:anton at korobeynikov.info] 
Sent: 24 January 2012 08:47
To: James Molloy
Cc: Ana Pazos; rajav at codeaurora.org; llvm-commits at cs.uiuc.edu
Subject: Re: [llvm-commits] LLVM patch to support ARM fused multiply add/subtract instructions

Hi James,

> I'm not 100% happy with this patch. The implementation means that -mattr=+neon,+vfp4 does not enable neon-vfp4, which I think is rather confusing.
> I'd much prefer the predicate to be rewritten such that hasNEONVFP4() === hasNEONVFP4 || (hasVFP4 && hasNEON), what do you think?
Is it possible for a core to have vfpv4, but have "previous" neon?
VFPv3-like? Or it's pretty tied situation? So, on VFPv4 core NEON will
also always be VFPv4 ?

-- 
With best regards, Anton Korobeynikov
Faculty of Mathematics and Mechanics, Saint Petersburg State University








More information about the llvm-commits mailing list