search for: noophazard

Displaying 20 results from an estimated 21 matches for "noophazard".

2017 Feb 12
2
Pre-RA scheduler does not generate NOPs when getHazardType() returns NoopHazard
...tive instructions that are separated in the final ASM listing and they should not. I also tried the standard pre-RA scheduler, implemented in lib/CodeGen/ScheduleDAGRRList.cpp, (with a ScoreboardHazardRecognizer), but even if I report that I have a data hazard in getHazardType() and return NoopHazard, the scheduler will not insert a NOP instruction in the respective place where I report the hazard . For me it is more convenient, in principle, to use the pre-RA scheduler, but it is not generating NOPs. Could you please tell me how can I generate NOPs with a pre-RA scheduler when I am al...
2017 Feb 09
2
Specify special cases of delay slots in the back end
...s stated in my first email, for example, I have a store instruction that is storing the value updated by the instruction immediately above, which is NOT ok, since for my processor this is a data hazard and in this case I have to insert a NOP in between by making getHazardType() to: return NoopHazard; // this basically emits noop However, to my surprise, my very simple post-RA scheduler (using my class derived from ScoreboardHazardRecognizer) is cycling FOREVER after this return NoopHazard, by calling getHazardType() again and again for this SAME store instruction I found in the first...
2017 Feb 10
2
Specify special cases of delay slots in the back end
...lo. I am progressing a bit with difficulty with the post RA scheduler (PostRASchedulerList.cpp with ScoreboardHazardRecognizer) - the problem I have is that it doesn't advance at the next available instruction when the overridden ScoreboardHazardRecognizer::getHazardType() method returns NoopHazard and it gets stuck at the same instruction (store in my runs). Just to make sure: I am trying to use the post-RA (Register Allocation) scheduler to avoid data hazards by inserting, if possible, other USEFUL instructions from the program instead of (just) NOPs. Is this out-of-order scheduling...
2017 Feb 11
2
Specify special cases of delay slots in the back end
...ly a method: HazardType getHazardType(SUnit *SU, int Stalls); In this method I check if the current SU is a vector store and the previous instruction updates the register used by the store, which in my processor is a data hazard, in which case I give: return NoopHazard; and otherwise, I give: return ScoreboardHazardRecognizer::getHazardType(SU, Stalls); - I implemented in [Target]InstrInfo.cpp 2 more methods: - CreateTargetPostRAHazardRecognizer() to register the [Target]DispatchGroupSBHazardRecognizer()...
2017 Feb 02
2
Specify special cases of delay slots in the back end
Hello. I see there is little information on specifying instructions with delay slots. So could you please tell me how can I insert NOPs (BEFORE or after an instruction) or how to make an aware instruction scheduler in order to avoid miscalculations due to the delay slot effect? More exactly, I have the following constraints on my (SIMD) processor: - certain stores or
2011 Oct 21
0
[LLVMdev] VLIW Ports
...king, Scheduling, Unpacking) Assembly Printer In principle, it is possible to use the LLVM scheduler to generate parallel code by providing a custom hazard recognizer that checks true data dependencies of the current bundle. The scheduler has also the capability to output NEXT operations by using NoopHazard and outputting a NEXT instruction instead of a NOP. However, the scheduler that is used within "DAG->DAG Pattern Instruction Selection" uses this glue mechanism and that could be problematic since no NEXT instructions are issued between glued instructions. Within my back-end I added a...
2010 Jul 08
0
[LLVMdev] "Scheduling Hazards" on common architectures
Hi, I'm not a compiler expert, so this is a basic questions. I'm trying to get some new instruction scheduling code working, and I'm trying to do things as simply as possible in the initial prototype. Looking through the code it looks like only PPC architecture can return NoopHazard, and I'm not interested in PPC. If in addition I'm preventing avoidable stalls by different means, that means I can completely ignore the HazardRecognizer and CurCycle (for now)? Many thanks for any help, David Steven Tweed
2011 Oct 22
3
[LLVMdev] VLIW Ports
...packing) > Assembly Printer > > > In principle, it is possible to use the LLVM scheduler to generate parallel code by providing a custom hazard recognizer that checks true data dependencies of the current bundle. The scheduler has also the capability to output NEXT operations by using NoopHazard and outputting a NEXT instruction instead of a NOP. However, the scheduler that is used within "DAG->DAG Pattern Instruction Selection" uses this glue mechanism and that could be problematic since no NEXT instructions are issued between glued instructions. > > Within my back-end...
2011 Aug 17
1
[LLVMdev] Question on instruction itineraries
Thanks Eli. Somehow I was assuming the scheduler would insert NOPs to enforce latencies The CPU I'm dealing with doesn't automatically stall, i.e. latency must be ensured by the program. As an alternative to a pass, is it feasible to modify the scheduler to do so (optionally) or it would be too complicated. If possible, what would be the right place to look ? Thanks so much Miguel On
2011 Oct 06
3
[LLVMdev] VLIW Ports
Hi all, here is the current (unfinished) version of the VLIW support I mentioned. It is a patch over svn rev 141176. It includes the MachineInstrBundle class, and small required changes in a couple of outside LLVM files. Also includes a modification to Mips target to simulate a 2-wide VLIW MIPS. The scheduler is really silly, I did not want to implement a scheduler, just the bundle class, and
2011 Oct 24
3
[LLVMdev] VLIW Ports
...packing) > Assembly Printer > > > In principle, it is possible to use the LLVM scheduler to generate parallel code by providing a custom hazard recognizer that checks true data dependencies of the current bundle. The scheduler has also the capability to output NEXT operations by using NoopHazard and outputting a NEXT instruction instead of a NOP. However, the scheduler that is used within "DAG->DAG Pattern Instruction Selection" uses this glue mechanism and that could be problematic since no NEXT instructions are issued between glued instructions. > > Within my back-end...
2011 Oct 24
0
[LLVMdev] VLIW Ports
...; Assembly Printer >> >> >> In principle, it is possible to use the LLVM scheduler to generate parallel code by providing a custom hazard recognizer that checks true data dependencies of the current bundle. The scheduler has also the capability to output NEXT operations by using NoopHazard and outputting a NEXT instruction instead of a NOP. However, the scheduler that is used within "DAG->DAG Pattern Instruction Selection" uses this glue mechanism and that could be problematic since no NEXT instructions are issued between glued instructions. >> >> Within my...
2011 Oct 24
2
[LLVMdev] VLIW Ports
...; Assembly Printer >> >> >> In principle, it is possible to use the LLVM scheduler to generate parallel code by providing a custom hazard recognizer that checks true data dependencies of the current bundle. The scheduler has also the capability to output NEXT operations by using NoopHazard and outputting a NEXT instruction instead of a NOP. However, the scheduler that is used within "DAG->DAG Pattern Instruction Selection" uses this glue mechanism and that could be problematic since no NEXT instructions are issued between glued instructions. >> >> Within my...
2011 Oct 24
3
[LLVMdev] VLIW Ports
...rinter >>> >>> >>> In principle, it is possible to use the LLVM scheduler to generate parallel code by providing a custom hazard recognizer that checks true data dependencies of the current bundle. The scheduler has also the capability to output NEXT operations by using NoopHazard and outputting a NEXT instruction instead of a NOP. However, the scheduler that is used within "DAG->DAG Pattern Instruction Selection" uses this glue mechanism and that could be problematic since no NEXT instructions are issued between glued instructions. >>> >>> Wi...
2011 Oct 25
0
[LLVMdev] VLIW Ports
...t; > >> > >> In principle, it is possible to use the LLVM scheduler to generate > parallel code by providing a custom hazard recognizer that checks true data > dependencies of the current bundle. The scheduler has also the capability to > output NEXT operations by using NoopHazard and outputting a NEXT instruction > instead of a NOP. However, the scheduler that is used within "DAG->DAG > Pattern Instruction Selection" uses this glue mechanism and that could be > problematic since no NEXT instructions are issued between glued > instructions. > >...
2011 Oct 22
0
[LLVMdev] VLIW Ports
...gt; Assembly Printer >> >> >> In principle, it is possible to use the LLVM scheduler to generate parallel code by providing a custom hazard recognizer that checks true data dependencies of the current bundle. The scheduler has also the capability to output NEXT operations by using NoopHazard and outputting a NEXT instruction instead of a NOP. However, the scheduler that is used within "DAG->DAG Pattern Instruction Selection" uses this glue mechanism and that could be problematic since no NEXT instructions are issued between glued instructions. >> >> Within my b...
2011 Oct 25
2
[LLVMdev] VLIW Ports
...t; > >> > >> In principle, it is possible to use the LLVM scheduler to generate > parallel code by providing a custom hazard recognizer that checks true data > dependencies of the current bundle. The scheduler has also the capability to > output NEXT operations by using NoopHazard and outputting a NEXT instruction > instead of a NOP. However, the scheduler that is used within "DAG->DAG > Pattern Instruction Selection" uses this glue mechanism and that could be > problematic since no NEXT instructions are issued between glued > instructions. > >...
2011 Oct 25
0
[LLVMdev] VLIW Ports
...rinter >>> >>> >>> In principle, it is possible to use the LLVM scheduler to generate parallel code by providing a custom hazard recognizer that checks true data dependencies of the current bundle. The scheduler has also the capability to output NEXT operations by using NoopHazard and outputting a NEXT instruction instead of a NOP. However, the scheduler that is used within "DAG->DAG Pattern Instruction Selection" uses this glue mechanism and that could be problematic since no NEXT instructions are issued between glued instructions. >>> >>> Wi...
2011 Oct 25
0
[LLVMdev] VLIW Ports
...gt; >>>> In principle, it is possible to use the LLVM scheduler to generate >> parallel code by providing a custom hazard recognizer that checks true data >> dependencies of the current bundle. The scheduler has also the capability to >> output NEXT operations by using NoopHazard and outputting a NEXT instruction >> instead of a NOP. However, the scheduler that is used within "DAG->DAG >> Pattern Instruction Selection" uses this glue mechanism and that could be >> problematic since no NEXT instructions are issued between glued >> instruc...
2011 Oct 26
2
[LLVMdev] VLIW Ports
...gt;>> >>>> >>>> In principle, it is possible to use the LLVM scheduler to generate parallel code by providing a custom hazard recognizer that checks true data dependencies of the current bundle. The scheduler has also the capability to output NEXT operations by using NoopHazard and outputting a NEXT instruction instead of a NOP. However, the scheduler that is used within "DAG->DAG Pattern Instruction Selection" uses this glue mechanism and that could be problematic since no NEXT instructions are issued between glued instructions. >>>> >>&gt...