<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bcm5719-llvm/llvm/test/CodeGen/ARM/inlineasm.ll, branch meklort-10.0.1</title>
<subtitle>Project Ortega BCM5719 LLVM</subtitle>
<id>https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1</id>
<link rel='self' href='https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1'/>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/'/>
<updated>2019-06-25T16:49:32+00:00</updated>
<entry>
<title>[ARM] Support inline assembler constraints for MVE.</title>
<updated>2019-06-25T16:49:32+00:00</updated>
<author>
<name>Simon Tatham</name>
<email>simon.tatham@arm.com</email>
</author>
<published>2019-06-25T16:49:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=e8de8ba6a637c60d53db2433c0962c3fdbbdbf5c'/>
<id>urn:sha1:e8de8ba6a637c60d53db2433c0962c3fdbbdbf5c</id>
<content type='text'>
"To" selects an odd-numbered GPR, and "Te" an even one. There are some
8.1-M instructions that have one too few bits in their register fields
and require registers of particular parity, without necessarily using
a consecutive even/odd pair.

Also, the constraint letter "t" should select an MVE q-register, when
MVE is present. This didn't need any source changes, but some extra
tests have been added.

Reviewers: dmgreen, samparker, SjoerdMeijer

Subscribers: javed.absar, eraman, kristof.beyls, hiraditya, cfe-commits, llvm-commits

Tags: #clang, #llvm

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

llvm-svn: 364331
</content>
</entry>
<entry>
<title>[ARM] Allow 64- and 128-bit types with 't' inline asm constraint</title>
<updated>2018-02-15T14:44:22+00:00</updated>
<author>
<name>Pablo Barrio</name>
<email>pablo.barrio@arm.com</email>
</author>
<published>2018-02-15T14:44:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=e28cb8399a057bbe97002d7da78af18a6d56e4ff'/>
<id>urn:sha1:e28cb8399a057bbe97002d7da78af18a6d56e4ff</id>
<content type='text'>
Summary:
In LLVM, 't' selects a floating-point/SIMD register and only supports
32-bit values. This is appropriately documented in the LLVM Language
Reference Manual. However, this behaviour diverges from that of GCC, where
't' selects the s0-s31 registers and its qX and dX variants depending on
additional operand modifiers (q/P).

For example, the following C code:

#include &lt;arm_neon.h&gt;
float32x4_t a, b, x;
asm("vadd.f32 %0, %1, %2" : "=t" (x) : "t" (a), "t" (b))

results in the following assembly if compiled with GCC:

vadd.f32 s0, s0, s1

whereas LLVM will show "error: couldn't allocate output register for
constraint 't'", since a, b, x are 128-bit variables, not 32-bit.

This patch extends the use of 't' to mean that of GCC, thus allowing
selection of the lower Q vector regs and their D/S variants. For example,
the earlier code will now compile as:

vadd.f32 q0, q0, q1

This behaviour still differs from that of GCC but I think it is actually
more correct, since LLVM picks up the right register type based on the
datatype of x, while GCC would need an extra operand modifier to achieve
the same result, as follows:

asm("vadd.f32 %q0, %q1, %q2" : "=t" (x) : "t" (a), "t" (b))

Since this is only an extension of functionality, existing code should not
be affected by this change. Note that operand modifiers q/P are already
supported by LLVM, so this patch should suffice to support inline
assembly with constraint 't' originally built for GCC.

Reviewers: grosbach, rengolin

Reviewed By: rengolin

Subscribers: rogfer01, efriedma, olista01, aemerson, javed.absar, eraman, kristof.beyls, llvm-commits

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

llvm-svn: 325244
</content>
</entry>
<entry>
<title>[ARM] 't' asm constraint should accept i32</title>
<updated>2017-11-16T23:38:17+00:00</updated>
<author>
<name>Yi Kong</name>
<email>yikong@google.com</email>
</author>
<published>2017-11-16T23:38:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=39bcd4ed3e5e824f363303077c98f54be61c3add'/>
<id>urn:sha1:39bcd4ed3e5e824f363303077c98f54be61c3add</id>
<content type='text'>
't' constraint normally only accepts f32 operands, but for VCVT the
operands can be i32. LLVM is overly restrictive and rejects asm like:

  float foo() {
    float result;
    __asm__ __volatile__(
      "vcvt.f32.s32 %[result], %[arg1]\n"
      : [result]"=t"(result)
      : [arg1]"t"(0x01020304) );
    return result;
  }

Relax the value type for 't' constraint to either f32 or i32.

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

llvm-svn: 318472
</content>
</entry>
<entry>
<title>ARM: fixup more tests to specify the target more explicitly</title>
<updated>2014-04-03T16:01:44+00:00</updated>
<author>
<name>Saleem Abdulrasool</name>
<email>compnerd@compnerd.org</email>
</author>
<published>2014-04-03T16:01:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=7258735fa0b60dd7800f5b9859aceeee16bb4990'/>
<id>urn:sha1:7258735fa0b60dd7800f5b9859aceeee16bb4990</id>
<content type='text'>
This changes the tests that were targeting ARM EABI to explicitly specify the
environment rather than relying on the default.  This breaks with the new
Windows on ARM support when running the tests on Windows where the default
environment is no longer EABI.

Take the opportunity to avoid a pointless redirect (helps when trying to debug
with providing a command line invocation which can be copy and pasted) and
removing a few greps in favour of FileCheck.

llvm-svn: 205541
</content>
</entry>
<entry>
<title>llvm can't correctly support 'H', 'Q' and 'R' modifiers. Just mark it an error.</title>
<updated>2010-05-27T22:08:38+00:00</updated>
<author>
<name>Evan Cheng</name>
<email>evan.cheng@apple.com</email>
</author>
<published>2010-05-27T22:08:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=3d3ee87d4e20204e3ebb69f5ad1a58c32b87c017'/>
<id>urn:sha1:3d3ee87d4e20204e3ebb69f5ad1a58c32b87c017</id>
<content type='text'>
llvm-svn: 104891
</content>
</entry>
<entry>
<title>Eliminate more uses of llvm-as and llvm-dis.</title>
<updated>2009-09-09T00:09:15+00:00</updated>
<author>
<name>Dan Gohman</name>
<email>gohman@apple.com</email>
</author>
<published>2009-09-09T00:09:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=c8054d90fbe7ff386577c27dd51d597924036cde'/>
<id>urn:sha1:c8054d90fbe7ff386577c27dd51d597924036cde</id>
<content type='text'>
llvm-svn: 81293
</content>
</entry>
<entry>
<title>update syntax</title>
<updated>2007-04-28T06:03:12+00:00</updated>
<author>
<name>Chris Lattner</name>
<email>sabre@nondot.org</email>
</author>
<published>2007-04-28T06:03:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=193d2f09f0c97e35ead1633aff1ee3314c5aba0b'/>
<id>urn:sha1:193d2f09f0c97e35ead1633aff1ee3314c5aba0b</id>
<content type='text'>
llvm-svn: 36531
</content>
</entry>
<entry>
<title>Test inline asm modifier 'c'.</title>
<updated>2007-03-08T22:45:31+00:00</updated>
<author>
<name>Evan Cheng</name>
<email>evan.cheng@apple.com</email>
</author>
<published>2007-03-08T22:45:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=fe7b8a7c6829dd3ea2edd3086f3643a47bec13c0'/>
<id>urn:sha1:fe7b8a7c6829dd3ea2edd3086f3643a47bec13c0</id>
<content type='text'>
llvm-svn: 35036
</content>
</entry>
<entry>
<title>ARM test cases contributed by Apple.</title>
<updated>2007-01-19T09:20:23+00:00</updated>
<author>
<name>Evan Cheng</name>
<email>evan.cheng@apple.com</email>
</author>
<published>2007-01-19T09:20:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=a5007faaa68de9487fe63b690bea6e16c3c5f770'/>
<id>urn:sha1:a5007faaa68de9487fe63b690bea6e16c3c5f770</id>
<content type='text'>
llvm-svn: 33354
</content>
</entry>
</feed>
