Displaying 15 results from an estimated 15 matches for "fp_extend".
2007 Feb 25
2
[LLVMdev] Linux/ppc backend
...8,13 @@
> case MVT::f32:
> case MVT::f64:
> - if (isVarArg && isPPC64) {
> + if (isVarArg || isPPC64) {
> // Float varargs need to be promoted to double.
> if (Arg.getValueType() == MVT::f32)
> Arg = DAG.getNode(ISD::FP_EXTEND, MVT::f64, Arg);
>
> This changes the darwin/ppc ABI. It's not clear to me that this was
> intended, so I just left it out.
>
Ah yes, I changed this and forgot to mention it (it deserves a different
commit - it's, as you
noticed not, directly related to the linux/ppc abi)....
2013 May 06
1
[LLVMdev] Help with setting up a software-float supported architecture target
...in which the DAG conversion is
Can anyone help with:
I have some C code test like:
float x;
printf("%f", x);
which clang coverts to:
%0 = load float* @x, align 4
%conv = fpext float %0 to double
The issue is for simple Float to Double extension, the DAGCombiner.cpp
DAGCombiner::visitFP_EXTEND(SDNode *N) is making a decision to do a load
extension, and it translates into doing a simple double load. But problem
is that my target can't simple load 8 bytes from the 4 byte float memory
location to do a conversion to double.
But what I need is for the DAG conversion to respect that the...
2007 Feb 25
0
[LLVMdev] Linux/ppc backend
...ply was this one:
@@ -1392,12 +1418,13 @@
case MVT::f32:
case MVT::f64:
- if (isVarArg && isPPC64) {
+ if (isVarArg || isPPC64) {
// Float varargs need to be promoted to double.
if (Arg.getValueType() == MVT::f32)
Arg = DAG.getNode(ISD::FP_EXTEND, MVT::f64, Arg);
This changes the darwin/ppc ABI. It's not clear to me that this was
intended, so I just left it out.
Thanks a lot for these patches. How well does linux/ppc work now?
-Chris
--
http://nondot.org/sabre/
http://llvm.org/
2019 Jan 22
4
_Float16 support
I'd like to start a discussion about how clang supports _Float16 for target architectures that don't have direct support for 16-bit floating point arithmetic.
The current clang language extensions documentation says, "If half-precision instructions are unavailable, values will be promoted to single-precision, similar to the semantics of __fp16 except that the results will be stored
2007 Feb 25
0
[LLVMdev] Linux/ppc backend
...MVT::f32:
>> case MVT::f64:
>> - if (isVarArg && isPPC64) {
>> + if (isVarArg || isPPC64) {
>> // Float varargs need to be promoted to double.
>> if (Arg.getValueType() == MVT::f32)
>> Arg = DAG.getNode(ISD::FP_EXTEND, MVT::f64, Arg);
>>
>> This changes the darwin/ppc ABI. It's not clear to me that this was
>> intended, so I just left it out.
>>
> Ah yes, I changed this and forgot to mention it (it deserves a different
> commit - it's, as you noticed not, directly related...
2017 Dec 04
2
[RFC] Half-Precision Support in the Arm Backends
...h easier and cleaner.
- As a consequence, the isel dags are in a more 'normal form'. I.e. it relies
less on funny nodes FP_TO_FP16 and FP16_TO_FP, which are funny because they
perform float up/down converts and produce i32 values by moving from/to integer
and float registers. Instead, FP_EXTEND and FP_ROUND nodes will be introduced,
so this is more a clean up rather than e.g. addressing a correctness issue.
Unfortunatly I found that I can't completely get rid of nodes FP16_TO_FP, see
'Custom Lowering' below.
- When these FP_EXTEND and FP_ROUND are introduced by the legal...
2007 Feb 17
2
[LLVMdev] Linux/ppc backend
Evan Cheng wrote:
> I think the easiest thing for you to do is to define a separate CALL
> instruction with a different set of Defs. This instruction should
> only be selected when the predicate isMacho is true. Also update
> PPCRegisterInfo.cpp getCalleeSavedRegs() to return a different list
> when subtarget->isMachoABI() is true.
>
Alright, thx Evan, that's
2015 Apr 21
3
[LLVMdev] libclang_rt.asan-x86_64.a: No such file or directory
I just tried building the latest clang following the instructions in
http://clang.llvm.org/get_started.html, and got this error when trying to
compile at test program:
/usr/bin/ld: cannot find /home/davem/clang-235334/bin/../lib/clang/3.7.0/lib/linux/libclang_rt.asan-x86_64.a: No such file or directory
This thread:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2015-April/084175.html
indicates
2018 Jan 18
0
[RFC] Half-Precision Support in the Arm Backends
...IIC_fpCVTSH, "vcvtb", ".f32.f16\t$Sd, $Sm",
[(set SPR:$Sd, (fpextend HPR:$Sm))]>, // <~~~~ new match rule using HPR and SPR
Requires<[HasFP16]>,
Sched<[WriteFPCVT]>;
This new rule matches and fp_extend that consumes an HPR and produces a result
in SPR.
And that's essentially it and all the code changes I want to make. With these
changes, I want to see an fadd with two f16 opernands being codegen'd, and also
I want to keep the existing tests passing of course.
The problem:
------------...
2017 Dec 06
2
[RFC] Half-Precision Support in the Arm Backends
Thanks a lot for the suggestions! I will look into using vld1/vst1, sounds good.
I am custom lowering the bitcasts, that's now the only place where FP_TO_FP16
and FP16_TO_FP nodes are created to avoid inefficient code generation. I will
double check if I can't achieve the same without using these nodes (because I
really would like to get completely rid of them).
Cheers,
Sjoerd.
2018 Jan 18
1
[RFC] Half-Precision Support in the Arm Backends
...IIC_fpCVTSH, "vcvtb", ".f32.f16\t$Sd, $Sm",
[(set SPR:$Sd, (fpextend HPR:$Sm))]>, // <~~~~ new match rule using HPR and SPR
Requires<[HasFP16]>,
Sched<[WriteFPCVT]>;
This new rule matches and fp_extend that consumes an HPR and produces a result
in SPR.
And that's essentially it and all the code changes I want to make. With these
changes, I want to see an fadd with two f16 opernands being codegen'd, and also
I want to keep the existing tests passing of course.
The problem:
------------...
2009 May 21
0
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
On Wed, May 20, 2009 at 4:55 PM, Dan Gohman <gohman at apple.com> wrote:
> Can you explain why you chose the approach of using a new pass?
> I pictured removing LegalizeDAG's type legalization code would
> mostly consist of finding all the places that use TLI.getTypeAction
> and just deleting code for handling its Expand and Promote. Are you
> anticipating something more
2009 May 20
2
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
On May 20, 2009, at 1:34 PM, Eli Friedman wrote:
> On Wed, May 20, 2009 at 1:19 PM, Eli Friedman
> <eli.friedman at gmail.com> wrote:
>
>> Per subject, this patch adding an additional pass to handle vector
>>
>> operations; the idea is that this allows removing the code from
>>
>> LegalizeDAG that handles illegal types, which should be a significant
2009 May 21
2
[LLVMdev] [PATCH] Add new phase to legalization to handle vector operations
...= ExpandLibCall(LC, Node, false/*sign irrelevant*/, Dummy);
- break;
}
- case Promote:
- Tmp1 = PromoteOp(Node->getOperand(0));
- Result = DAG.UpdateNodeOperands(Result, LegalizeOp(Tmp1));
- Result = LegalizeOp(Result);
- break;
- }
break;
case ISD::FP_EXTEND: {
@@ -4208,17 +3506,8 @@
Result = EmitStackConvert(Node->getOperand(0), SrcVT, DstVT, dl);
break;
}
- switch (getTypeAction(Node->getOperand(0).getValueType())) {
- case Expand: assert(0 && "Shouldn't need to expand other operators here!");
-...
2017 Oct 27
5
RFC: We need to explicitly state that some functions are reserved by LLVM
On Fri, Oct 27, 2017 at 1:50 AM, David Chisnall via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> This seems slightly inverted. As I understand it, the root of the problem
> is that some standards, such as C, C++, and POSIX, define some functions as
> special and we rely on their specialness when optimising. Unfortunately,
> the specialness is a property of the source