Displaying 20 results from an estimated 48 matches for "v2f32".
2009 Apr 15
2
[LLVMdev] Tablegen question
...> This is the intrinsic definition:
> def int_opencl_math_fdistance_fast : Intrinsic<[llvm_float_ty],
> [llvm_anyfloat_ty, LLVMMatchType<0>]>;
>
> The problem comes when I try to use the intrinsic. It gives me the
> following error:
> GPRV2F32:f32:$src1 MACRO_DISTANCE_FAST_v2f32: (set GPRF32:f32:$dst,
> (intrinsic_w_chain:f32 84:iPTR, GPRV2F32:v2f32:$src0,
> GPRV2F32:f32:$src1))
> TableGen.exe: In MACRO_DISTANCE_FAST_v2f32: Type inference
> contradiction
> found in node!
Your "$src1" is f32 instead of v2f32....
2009 Apr 15
0
[LLVMdev] Tablegen question
If I force it to use v2f32 for my register class, it still fails with:
d:\hq\main\sw\appeng\tools\hpc\opencl\compiler\llvm\test\AMDIL>TableGen.
exe -gen
-dag-isel -I../../include/ test.td > output
GPRV2F32:v2f32:$src1 MACRO_DISTANCE_FAST_v2f32: (set
GPRF32:f32:$dst, (i
ntrinsic_w_chain:f32 84:iPTR, GPRV2F32:v2f...
2009 Apr 15
1
[LLVMdev] Tablegen question
On Apr 15, 2009, at 1:11 PM, Villmow, Micah wrote:
> If I force it to use v2f32 for my register class, it still fails with:
> d:\hq\main\sw\appeng\tools\hpc\opencl\compiler\llvm\test
> \AMDIL>TableGen.
> exe -gen
> -dag-isel -I../../include/ test.td > output
> GPRV2F32:v2f32:$src1 MACRO_DISTANCE_FAST_v2f32: (set
> GPRF32:f32:$dst, (i
> ntrin...
2018 Apr 12
2
How to specify the RegisterClass of an IMPLICIT_DEF?
Hi,
I'm implementing the built_vector as an IMPLICIT_DEF followed by INSERT_SUBREGs. This approach is the one of the SPARC architecture.
def : Pat<(build_vector (f32 fpimm:$a1), (f32 fpimm:$a2)),
(INSERT_SUBREG(INSERT_SUBREG (v2f32 (IMPLICIT_DEF)),
(i32 (COPY_TO_REGCLASS (MOVSUTO_A_iSLo (bitcast_fpimm_to_i32 f32:$a1)), FPUaOffsetClass)), A_UNIT_PART),
(i32 (COPY_TO_REGCLASS (MOVSUTO_A_iSLo (bitcast_fpimm_to_i32 f32:$a2)), FPUaOffsetClass)), B_UNIT_PART)>;
This work quite well: an IMPLIC...
2009 May 19
1
[LLVMdev] TableGen pattern
Hello,
I am trying to convert the subtree (vector_shuffle v2f32, v2f32
(build_vector imm1, imm2)) to a machine instruction that takes 2
v2f32's and 2 immediates. I tried the following table gen pattern :
(set v2f32Reg:$dst, (vector_shuffle v2f32Reg:$src1, v2f32Reg:$src2,
(build_vector
imm:$c1, imm:$c2)))...
2012 Oct 23
0
[LLVMdev] [PATCH] Add custom UINT_TO_FP lowering from v2i32 to v2f32 in 32-bit mode
Hi
As 32-bit mode doesn't have 64-bit GPR, the sequence converting v2i32 to
v2f32 is quite inefficient in 32-bit mode. This patch adds the custom
lowering in 32-bit mode. In addition, it teaches DAG combine to
transform (build_vec (Xint2fp x) (Xint2fp y) ..) to (Xint2fp (build_vec
x y)) to reduce the strength on FP conversion unit.
Thanks for your review
Yours
- Michael
-----...
2018 Jun 20
2
Node deletion during DAG Combination ?
...n't found an API to explicitly remove a node and trigger overall chain update.
Could someone point out an example of API for such node deletion during DAG Combination?
Regards, Dominique T.
t56: ch = store<Volatile ST8[%l2]> t54:1, t55, FrameIndex:i16<1>, undef:i16
t57: v2f32,ch = load<Volatile LD8[%l1]> t56, FrameIndex:i16<0>, undef:i16
t58: v2f32,ch = load<Volatile LD8[%l1]> t57:1, FrameIndex:i16<0>, undef:i16
t59: f32 = extract_vector_elt t58, Constant:i16<0>
t62: ch = llvm.clp.writeapb.f32 t58:1,...
2007 Apr 23
3
[LLVMdev] Instruction pattern type inference problem
On Sun, 22 Apr 2007, Christopher Lamb wrote:
> 1. Is there a good reason that v2f32 types are excluded from the
> isFloatingPoint filter? Looks like a bug to me.
>
> v2f32 = 22, // 2 x f32
> v4f32 = 23, // 4 x f32 <== start ??
> v2f64 = 24, // 2 x f64 <== end
>
> static inline bool isFloatingPoint(Valu...
2013 Mar 05
4
[LLVMdev] Vector splitting vs widening
...0 [ID=0]
Scalarize node result 0: 0x2348220: v1f32 = extract_subvector 0x23434a0, 0x23466e0 [ID=0]
Split node result: 0x23469e0: v4f32 = extract_subvector 0x23435a0, 0x23466e0 [ID=0]
Split node operand: 0x2346be0: v4i1 = setcc 0x23467e0, 0x23469e0, 0x23436a0 [ID=0]
Split node result: 0x2348620: v2f32 = extract_subvector 0x23435a0, 0x2346de0 [ID=0]
Widen node result 0: 0x2348820: v2i1 = setcc 0x2346ee0, 0x2348620, 0x23436a0 [ID=0]
llc: lib/CodeGen/SelectionDAG/LegalizeTypes.h:599: llvm::SDValue llvm::DAGTypeLegalizer::GetWidenedVector(llvm::SDValue): Assertion `WidenedOp.getNode() && &...
2007 Apr 23
0
[LLVMdev] Instruction pattern type inference problem
Digging deeper...
1. Is there a good reason that v2f32 types are excluded from the
isFloatingPoint filter? Looks like a bug to me.
v2f32 = 22, // 2 x f32
v4f32 = 23, // 4 x f32 <== start ??
v2f64 = 24, // 2 x f64 <== end
static inline bool isFloatingPoint(ValueType VT) {
return (VT...
2017 Jan 23
2
Changes to TableGen in v4.0?
I am trying to upgrade to the LLVM v4.0 branch, but I am seeing failures in
my TableGen descriptions for conversion from FP32 to FP16 (scalar and
vector).
The patterns I have are along the lines of:
[(set (f16 RF16:$dst), (fround (f32 RF32:$src)))]
or:
[(set (v2f16 VF16:$dst), (fround (v2f32 VF32:$src)))]
and these now produce the errors:
error: In CONV_f32_f16: Type inference contradiction found, merging 'f32'
into 'f16'
or:
error: In CONV_v2f32_v2f16: Type inference contradiction found, merging
'v2f32' into 'v2f16'
For the scalar version,...
2009 Apr 15
0
[LLVMdev] Tablegen question
...ys.push_back(Tys[0]);
break;
This is the intrinsic definition:
def int_opencl_math_fdistance_fast : Intrinsic<[llvm_float_ty],
[llvm_anyfloat_ty, LLVMMatchType<0>]>;
The problem comes when I try to use the intrinsic. It gives me the
following error:
GPRV2F32:f32:$src1 MACRO_DISTANCE_FAST_v2f32: (set GPRF32:f32:$dst,
(intrinsic_w_chain:f32 84:iPTR, GPRV2F32:v2f32:$src0,
GPRV2F32:f32:$src1))
TableGen.exe: In MACRO_DISTANCE_FAST_v2f32: Type inference contradiction
found in node!
I'm using the following test td file.
This is generated with putting...
2012 Mar 02
1
[LLVMdev] vector shuffle emulation/expand in backend?
I'm having some troubles implementing vector support to our custom backend
It seems that llvm cannot emulate shuffle with extracts, inserts and builds?
I've enabled vector registers with
addRegisterClass(MVT::v2i32, TCE::V2I32RegsRegisterClass);
addRegisterClass(MVT::v2f32, TCE::V2F32RegsRegisterClass);
and created patterns for most vector instructions, including insert,
extract and build.
I've tried to say
setOperationAction(ISD::VECTOR_SHUFFLE, MVT::v2i32, Expand);
setOperationAction(ISD::VECTOR_SHUFFLE, MVT::v2f32, Expand);
but this does not seem to do an...
2009 Apr 15
1
[LLVMdev] Tablegen question
...> This is the intrinsic definition:
> def int_opencl_math_fdistance_fast : Intrinsic<[llvm_float_ty],
> [llvm_anyfloat_ty, LLVMMatchType<0>]>;
>
> The problem comes when I try to use the intrinsic. It gives me the
> following error:
> GPRV2F32:f32:$src1 MACRO_DISTANCE_FAST_v2f32: (set GPRF32:f32:$dst,
> (intrinsic_w_chain:f32 84:iPTR, GPRV2F32:v2f32:$src0,
> GPRV2F32:f32:$src1))
> TableGen.exe: In MACRO_DISTANCE_FAST_v2f32: Type inference contradiction
> found in node!
>
> I'm using the following test td file.
>...
2009 Apr 15
3
[LLVMdev] Tablegen question
Oops. That was premature. I think your original question was on the
right track. TableGen distinguishes between known and "overloaded"
types (like "llvm_anyfloat_ty" in your example). The overloaded types
are numbered separately, and the argument to LLVMMatchType is an index
into these overloaded types, ignoring the known types. So, in your
case, the first
2013 Mar 05
0
[LLVMdev] Vector splitting vs widening
...sult 0: 0x2348220: v1f32 = extract_subvector 0x23434a0, 0x23466e0 [ID=0]
>
> Split node result: 0x23469e0: v4f32 = extract_subvector 0x23435a0, 0x23466e0 [ID=0]
>
> Split node operand: 0x2346be0: v4i1 = setcc 0x23467e0, 0x23469e0, 0x23436a0 [ID=0]
>
> Split node result: 0x2348620: v2f32 = extract_subvector 0x23435a0, 0x2346de0 [ID=0]
>
> Widen node result 0: 0x2348820: v2i1 = setcc 0x2346ee0, 0x2348620, 0x23436a0 [ID=0]
>
> llc: lib/CodeGen/SelectionDAG/LegalizeTypes.h:599: llvm::SDValue llvm::DAGTypeLegalizer::GetWidenedVector(llvm::SDValue): Assertion `WidenedOp.getN...
2007 Apr 23
0
[LLVMdev] Instruction pattern type inference problem
On Apr 23, 2007, at 5:08 PM, Chris Lattner wrote:
> On Sun, 22 Apr 2007, Christopher Lamb wrote:
>> 1. Is there a good reason that v2f32 types are excluded from the
>> isFloatingPoint filter? Looks like a bug to me.
>>
>> v2f32 = 22, // 2 x f32
>> v4f32 = 23, // 4 x f32 <== start ??
>> v2f64 = 24, // 2 x f64 <== end
>>
>> static inli...
2010 Jan 04
0
[LLVMdev] change type allocoted register
Hi;
i am using llvm backend on x86 arch.
My app ABI requires float2 (v2f32) to be passes as parameter and return in XMM0 register.
Currently LLVM handles v2f32 using MMX register MM0.
i wonder what changes do i need to do in LLVM to support that change; manipulating v2f32 (float2) using XMM and not MMX ?
one place i identifies where a change needs to be done is X86Calli...
2010 Jul 05
0
[LLVMdev] Vector promotions for calling conventions
...ax, %rcx
movd %rcx, %xmm0
movl 8(%rdi), %eax
movl 12(%rdi), %ecx
shlq $32, %rcx
addq %rax, %rcx
movd %rcx, %xmm1
ret
when we really just want:
_foo:
movq (%rdi), %xmm0
movq 8(%rdi), %xmm1
ret
I'm looking at having clang generate IR for this by passing and returning the two halfs as v2f32 values, which they are, and doing insert/extracts in the caller/callee. However, at the moment, the x86 backend is passing each element of the v2f32 as an f32, instead of promoting the type and passing the v2f32 as the low two elements of the v4f32. In the example above, this means it returns eac...
2007 Apr 23
4
[LLVMdev] Instruction pattern type inference problem
I have a back end which has both scalar and vector registers that
alias each other. I'm having a problem generating the ISel from
tablegen that appears only when a vector register class is declared
to contain integer vectors. At that moment tablegen doesn't seem to
be able to infer integer types in patterns that it was able to
before, but I'm not clear on why that's the