search for: fpimm

Displaying 20 results from an estimated 20 matches for "fpimm".

2011 Oct 06
4
[LLVMdev] TableGen and Greenspun
...de with a for-loop) ---------------------------------------- multiclass PTX_FLOAT_4OP<string opcstr, SDNode opnode1, SDNode opnode2> { for nbit = [32, 32, 64, 64], op_suffix = [r, i, r, i], op_type = [RegF32, f32imm, RegF64, f64imm], op_node_type = [RegF32, fpimm, RegF64, fpimm] in { def rr#op_suffix#nbit : InstPTX<(outs RegF#nbit:$d), (ins RegF#nbit:$a, RegF#nbit:$b, #op_type:$c), !strconcat(opcstr, ".f#nbit\t$d, $a, $b, $c"), [(set RegF#nbit:$d, (opnode2 (opnode1 Reg...
2011 Aug 24
1
[LLVMdev] proposal: add macro expansion of for-loop to TableGen
...ns RegF32:$a, RegF32:$b, f32imm:$c), !strconcat(opcstr, ".f32\t$d, $a, $b, $c"), [(set RegF32:$d, (opnode2 (opnode1 RegF32:$a, RegF32:$b), fpimm:$c))]>; def rrr64 : InstPTX<(outs RegF64:$d), (ins RegF64:$a, RegF64:$b, RegF64:$c), !strconcat(opcstr, ".f64\t$d, $a, $b, $c"), [(set RegF64:$d, (opnode2 (opnode1 RegF64:$a,...
2011 Oct 06
0
[LLVMdev] TableGen and Greenspun
Jakob Stoklund Olesen <jolesen at apple.com> writes: > The TableGen language seems to be growing Lisp macros from two > different directions. > > Che-Liang Chiou added a preprocessor with for loops, and David Greene > added multidefs. > > It seems that some kind of macro facility is needed, perhaps we should > discuss what it is supposed to look like? Don't
2011 Oct 06
3
[LLVMdev] TableGen and Greenspun
The TableGen language seems to be growing Lisp macros from two different directions. Che-Liang Chiou added a preprocessor with for loops, and David Greene added multidefs. It seems that some kind of macro facility is needed, perhaps we should discuss what it is supposed to look like? /jakob
2011 Oct 06
0
[LLVMdev] Enhacing TabelGen
...----------------------------------- > multiclass PTX_FLOAT_4OP<string opcstr, SDNode opnode1, SDNode opnode2> { > for nbit = [32, 32, 64, 64], > op_suffix = [r, i, r, i], > op_type = [RegF32, f32imm, RegF64, f64imm], > op_node_type = [RegF32, fpimm, RegF64, fpimm] in { > def !strconcat(!strconcat("rr", !cast<string>(op_suffix)), "nbit") > [...] > } > } > > Yes, it's a bit more verbose but also more flexible in what you can do > with iterator values. Here's some more detail on...
2013 Feb 06
4
[LLVMdev] [llvm-tblgen] Two issues: crash case and mysterious double-inclusion case
...Segmentation fault (core dumped) ==== 2) Second test case: double inclusion of file, that is definitely included once: ==== $ ./llvm-tblgen -gen-tgt-intrinsic NVPTX2.td Included from NVPTX2.td:20: NVPTXIntrinsics.td:10:1: error: def 'immFloat0' already defined def immFloat0 : PatLeaf<(fpimm), [{ ^ NVPTX1.td differs from NVPTX2.td just in one line: include "NVPTXIntrinsics.td" ==== Expected behavior ==== 1) In first case, where .td file has empty list of intrinsics, the tool should not crash 2) In second case there should not me an error message about already defined symb...
2013 Feb 07
0
[LLVMdev] [llvm-tblgen] Two issues: crash case and mysterious double-inclusion case
...> 2) Second test case: double inclusion of file, that is definitely included > once: > ==== > > $ ./llvm-tblgen -gen-tgt-intrinsic NVPTX2.td > Included from NVPTX2.td:20: > NVPTXIntrinsics.td:10:1: error: def 'immFloat0' already defined > def immFloat0 : PatLeaf<(fpimm), [{ > ^ $ llvm-tblgen -gen-tgt-intrinsic NVPTX2.td Included from NVPTX2.td:18: NVPTXRegisterInfo.td:32:14: error: Value list is not of list type foreach i = 0-395 in { ^ Included from NVPTX2.td:18: NVPTXRegisterInfo.td:32:14: error: expected declaration in for foreach i = 0-395 in...
2008 Nov 18
1
[LLVMdev] 32 bit boolean results
You can tell LLVM that you have "sign extended" setCC results (all ones). Dan On Nov 18, 2008, at 5:33 PM, Eli Friedman wrote: > On Tue, Nov 18, 2008 at 1:56 PM, Villmow, Micah > <Micah.Villmow at amd.com> wrote: >> The IR produces correct results, but my backend does not and the >> only thing >> I can think of is that the IR is treating the
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)), FPU...
2012 Mar 19
1
[LLVMdev] floating point immediate problem
I tried to generate pattern for instruction which transports floating point immediate to a floating point register. def MOVF32fk : InstTCE<(outs F32Regs:$dst), (ins f32imm:$val), "$val -> $dst;", [(set F32Regs:$dst, (f32 imm:$val))]>; This causes an type contradiction:
2011 Oct 06
0
[LLVMdev] MIPS 32bit code generation
...de with a for-loop) ---------------------------------------- multiclass PTX_FLOAT_4OP<string opcstr, SDNode opnode1, SDNode opnode2> { for nbit = [32, 32, 64, 64], op_suffix = [r, i, r, i], op_type = [RegF32, f32imm, RegF64, f64imm], op_node_type = [RegF32, fpimm, RegF64, fpimm] in { def rr#op_suffix#nbit : InstPTX<(outs RegF#nbit:$d), (ins RegF#nbit:$a, RegF#nbit:$b, #op_type:$c), !strconcat(opcstr, ".f#nbit\t$d, $a, $b, $c"), [(set RegF#nbit:$d, (opnode2 (opnode1 Reg...
2015 Dec 02
4
lower 64 bits constant
...t;, [(set (i64 GRWideRegs:$dst), imm:$src)]>{ let isMoveImm = 1; } def CONSTF64 : InstFOO<(outs GRWideRegs:$dst), (ins f64imm:$src), "const-double $dst, $src", [(set (f64 GRWideRegs:$dst), fpimm:$src)]>{ let isMoveImm = 1; } GRWideRegs can be f64 and i64. However, the 'const-long' works while the 'const-double' doesn't work. From the -debug log, it seems "f64 = ConstantFP" is replaced by "f64,ch = load" and this is where the error happens. Can...
2011 Aug 30
2
[LLVMdev] ARMCodeEmitter.cpp JIT support very broken (2.9 and svn)
...as removed in r116644. If you try to add back a case for them in the obvious way, getBinaryCodeForInstr() (which now ostensibly should handle this and has a case for it) asserts constructing the instruction because getMachineOpValue(MI, MI,getOperand(1)) doesn't handle a MachineOperand of type FPImm. I'm not sure what the right way to fix these last to issues is. Is any regression testing done at all for JIT support on non-X86 platforms? It seems like a simple cross-compilation framework could be set up to allow such targets to be sanity-tested without needing an actual CPU to run one....
2012 Aug 10
1
[LLVMdev] Pseudo instructions expansion
Hi Jim, thank you for the quick response. I have used InstAlias in some cases, but these are really simple pseudo instructions where the pseudo instruction is more like a special case of existing one, like using fixed operand or simply a more human understandable way of presenting an operation. I know that there are predicates available to improve matching, but can InstAlias use conditions to
2018 May 04
0
How to constraint instructions reordering from patterns?
...16<0>, t41:1 t43: ch = CLPISD::RET_FLAG t42:1 ISEL: Starting pattern match on root node: t50: i32 = Constant<1065353216> Initial Opcode index to 415 TypeSwitch[i32] from 416 to 432 Morphed node: t50: i32 = MOVSUTO_A_iSLo TargetConstant:i32<1065353216> def : Pat<(f32 fpimm:$imm), (MOVSUTO_A_iSLo (bitcast_fpimm_to_i32 f32:$imm))>; def : Pat<(i32 imm:$imm), (MOVSUTO_A_iSLo (trunc_imm i32:$imm))>; ===== Instruction selection ends: Selected selection DAG: BB#0 '_start:entry' SelectionDAG has 42 nodes:...
2018 May 04
2
How to constraint instructions reordering from patterns?
...2:1 > > ISEL: Starting pattern match on root node: t50: i32 = Constant<1065353216> > >   Initial Opcode index to 415 > >   TypeSwitch[i32] from 416 to 432 > > Morphed node: t50: i32 = MOVSUTO_A_iSLo TargetConstant:i32<1065353216> > > def: Pat<(f32 fpimm:$imm), > >                         (MOVSUTO_A_iSLo (bitcast_fpimm_to_i32 f32:$imm))>; > > def: Pat<(i32 imm:$imm), > >                         (MOVSUTO_A_iSLo (trunc_imm i32:$imm))>; > > ===== Instruction selection ends: > > Selected selection DAG: BB#0...
2018 May 04
2
How to constraint instructions reordering from patterns?
Hi, Is there a kind of scope mechanism in the instruction lowering pattern language in order to control where instructions are inserted or how they are later reordered during the SelectionDiag linearization? I know the glue chain that stick instructions together. But such mechanism in not provided in instruction lowering pattern. I'm facing many situations where some patterns are lowered into
2018 May 04
0
How to constraint instructions reordering from patterns?
...t; > ISEL: Starting pattern match on root node: t50: i32 = > Constant<1065353216> > >   Initial Opcode index to 415 > >   TypeSwitch[i32] from 416 to 432 > > Morphed node: t50: i32 = MOVSUTO_A_iSLo TargetConstant:i32<1065353216> > > def: Pat<(f32 fpimm:$imm), > >                         (MOVSUTO_A_iSLo (bitcast_fpimm_to_i32 > f32:$imm))>; > > def: Pat<(i32 imm:$imm), > >                         (MOVSUTO_A_iSLo (trunc_imm i32:$imm))>; > > ===== Instruction selection ends: > > Selected selection DAG...
2014 Mar 26
19
[LLVMdev] 3.4.1 Release Plans
Hi, We are now about halfway between the 3.4 and 3.5 releases, and I would like to start preparing for a 3.4.1 release. Here is my proposed release schedule: Mar 26 - April 9: Identify and backport additional bug fixes to the 3.4 branch. April 9 - April 18: Testing Phase April 18: 3.4.1 Release How you can help: - If you have any bug fixes you think should be included to 3.4.1, send me an
2012 Jul 16
3
[LLVMdev] RFC: LLVM incubation, or requirements for committing new backends
...asm, pattern> { > + > + field bits<32> Inst = 0xffffffff; > + > +} > + > +class Constants { > +int TWO_PI = 0x40c90fdb; > +int PI = 0x40490fdb; > +int TWO_PI_INV = 0x3e22f983; > +} > +def CONST : Constants; > + > +def FP_ZERO : PatLeaf < > + (fpimm), > + [{return N->getValueAPF().isZero();}] > +>; > + > +def FP_ONE : PatLeaf < > + (fpimm), > + [{return N->isExactlyValue(1.0);}] > +>; > + > +let isCodeGenOnly = 1, isPseudo = 1, usesCustomInserter = 1 in { > + > +class CLAMP <RegisterClass...