[llvm-dev] [GlobalISel] G_LOAD/G_STORE i64/f64 handling

Friedman, Eli via llvm-dev llvm-dev at lists.llvm.org
Mon Jul 3 13:28:51 PDT 2017

On 7/2/2017 3:50 AM, Breger, Igor via llvm-dev wrote:
> Hi all,
> I am working on enabling X86 using  GLobalIsel framework.
> I have 32bit platform + float/double  configuration 
> (-mtriple=i386-linux-gnu -mattr=+sse2 )
>                load i64, i64* %p1             -   illegal, require 
> narrowScalar action
>                load double, double * %p1 -    legal
> What is the best approach to Legalize this case ? Should I mark 
> G_LOAD/G_STORE s64 as Custom?

In the world of GlobalISel, i64 and double are both s64, so "load i64" 
and "load double" are the same operation; if one is Legal, both are 
Legal.  This should just work, barring any bugs.

The resulting code will probably be low-quality because there isn't any 
good way to lower the resulting transfers between SSE and integer 
registers, but you can put off dealing with that for now.


Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170703/4667581b/attachment.html>

More information about the llvm-dev mailing list