search for: add16mm

Displaying 4 results from an estimated 4 matches for "add16mm".

Did you mean: add16
2012 Aug 14
2
[LLVMdev] Load serialisation during selection DAG building
...tile i16* @x, align 2, !tbaa !0 > %add = add i16 %1, %0 > store i16 %add, i16* @y, align 2, !tbaa !0 > ret void > } > > has a chain store->load volatile->load. I thought this meant that the load volatile had to occur _after_ the load but the MSP430 backend selects the ADD16mm instruction for which I suspect the order of operand access isn't specified. So, does the chain mean "no earlier than" rather than "later than"? No, a chain is supposed to mean "later than". It sounds like MSP430 is bending the rules here. Dan
2012 Aug 14
0
[LLVMdev] Load serialisation during selection DAG building
> No, a chain is supposed to mean "later than". It sounds like MSP430 is bending > the rules here. The instruction selector for ADD16mm is autogenerated, so, this is not MSP430 bug alone :) This is just the single target in the tree which has mem-mem instructions. -- With best regards, Anton Korobeynikov Faculty of Mathematics and Mechanics, Saint Petersburg State University
2012 Aug 14
0
[LLVMdev] Load serialisation during selection DAG building
...n 2, !tbaa !0 %1 = load volatile i16* @x, align 2, !tbaa !0 %add = add i16 %1, %0 store i16 %add, i16* @y, align 2, !tbaa !0 ret void } has a chain store->load volatile->load. I thought this meant that the load volatile had to occur _after_ the load but the MSP430 backend selects the ADD16mm instruction for which I suspect the order of operand access isn't specified. So, does the chain mean "no earlier than" rather than "later than"? On 14 Aug 2012, at 16:43, Steve Montgomery wrote: > I looked into those patches but I don't think they will help in my s...
2012 Aug 14
2
[LLVMdev] Load serialisation during selection DAG building
I looked into those patches but I don't think they will help in my situation because my problems occur during instruction selection rather than scheduling. A simple and concrete example is a pattern like: [(set GR:$dst (add GR:$src (nvload addr:$mem)))] where nvload matches a load provided that isVolatile() is false. If the selection DAG looks like: | | LD1 LD2 ^