[Sparc] Use float register for integer constrained with "f" in inline asm
authorDaniel Cederman <cederman@gaisler.com>
Thu, 13 Dec 2018 15:13:29 +0000 (15:13 +0000)
committerDaniel Cederman <cederman@gaisler.com>
Thu, 13 Dec 2018 15:13:29 +0000 (15:13 +0000)
commitb5d284408e20e8a9fddf4666854533049a4a62aa
tree4633e8aad96b7351e18bf40d1e5adaedf3d33144
parentc7b43b94ced62e9ce4c7cbb6a1cbafa350e646fa
[Sparc] Use float register for integer constrained with "f"  in inline asm

Summary:
Constraining an integer value to a floating point register using "f"
causes an llvm_unreachable to trigger. This patch allows i32 integers
to be placed in a single precision float register and i64 integers to
be placed in a double precision float register. This matches the behavior
of GCC.

For other types the llvm_unreachable is removed to instead trigger an
error message that points out the offending line.

Reviewers: jyknight, venkatra

Reviewed By: jyknight

Subscribers: eraman, fedor.sergeev, jrtc27, llvm-commits

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

llvm-svn: 349045
llvm/lib/Target/Sparc/SparcISelLowering.cpp
llvm/test/CodeGen/SPARC/inlineasm.ll