[PATCH] D19061: [ARM] Add support for the X asm constraint

Renato Golin via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 13 08:59:14 PDT 2016


rengolin added a comment.

Hi Silviu,

The documentation on the X constraint is... lacking. All it says is "Any operand whatsoever is allowed.". Sigh...

So, before we get support for it, I'd like to see a few examples from user code on how people expect it to work (probably the best we can do for now).

Also, you don't seem to be testing much. I think you need to have better instructions (adds, movs, loads) to make sure we're testing the whole range of the X constraint. I'm guessing *any* operand is a bit vague, but does it support immediates, as well as registers, expressions?

Maybe it'd be easier to create a bug, block PR27197 with it, and explain the expected behaviour, with reproducible C files and command lines.

cheers,
--renato


================
Comment at: lib/Target/ARM/ARMISelLowering.cpp:11450
@@ +11449,3 @@
+const char *ARMTargetLowering::LowerXConstraint(EVT ConstraintVT) const {
+  if (!Subtarget->hasNEON())
+    return "r";
----------------
What about VFP?

================
Comment at: lib/Target/ARM/ARMISelLowering.cpp:11457
@@ +11456,3 @@
+      ConstraintVT.getSizeInBits() == 128))
+    return "w";
+
----------------
No "t" for 32-bit FP registers?

================
Comment at: test/CodeGen/ARM/inlineasm-X-constraint.ll:1
@@ +1,2 @@
+; RUN: llc -mtriple=armv7-none-eabi -mattr=+neon -no-integrated-as %s -o - | FileCheck %s
+
----------------
why do you need -no-integrated-as?


http://reviews.llvm.org/D19061





More information about the llvm-commits mailing list