Hmm that's a good point. Do you have any ideas on how to handle this in the 
backend? I've been trying to think of a way to prevent generation of FP 
instructions in a more fine grained way, but still error in the right cases. 
For example, since there is *no* soft-float ABI for AArch64, the current 
implementation shouldn't allow users to use floating point operations via 
libcalls, but it unfortunately does.

Amara

> -----Original Message-----
> From: Tim Northover [mailto:[email protected]]
> Sent: 24 January 2014 16:24
> To: Amara Emerson
> Cc: Bernard Ogden; reviews+D2586+public+4d171e861f82b113@llvm-
> reviews.chandlerc.com; [email protected]
> Subject: Re: [PATCH] [AArch64] Add -mgeneral_regs_only option
> 
> > I think that should be an error.
> 
> I disagree. If someone wants to pretend their CPU doesn't have
> floating point registers entirely, that's what -march is for. This
> option says that it's constraining the compiler.
> 
> Also, people usually want this so that they *can* use floating point
> registers under strict controls. For example in kernels to save
> FP-context only when necessary.
> 
> There's no way to do this with the behaviour you're proposing (short
> of a completely separate .S file under complete user control): as soon
> as the -mgeneral_regs_only option is removed LLVM has permission to
> throw them around with gay abandon and any inline asm you use might
> (potentially) see corrupted values produce them.
> 
> > GCC throws an error if you try to use
> > floating point types with -mgeneral-regs-only, so inline assembly
> wouldn't work anyway.
> 
> You don't have to use floating-point types to use FP values in inline
> asm. A simple context-save block might just depend on a "char *" at
> the C level, for example:
> 
>     asm("stp q0, q1, [%0]" : : "r"(&process->fp_regs) : "memory");
> 
> Cheers.
> 
> Tim.





_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to