[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.

-Eli

-- 
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