From: Stepan D. <stp...@na...> - 2013-07-12 13:26:37
|
Hello Borja. Seems I've made things much simpler. Can't understand why I didn't it in beginning. I moved everything into SelectInlineAsmMemoryOperand hook. #1: We don't need 'for' at all. Since it implemented in hook caller. #2: This problem disappeared, see #1. #4: The same. #6: Still not sure about glues. I just tried to keep all chains in proper order. But you rather look at new SelectInlineAsmMemoryOperand. > One last thing, when you run the regression tests, enable locally the > machine verifier to catch any additional errors. To enable it > unconditionally search for the command object (i think it's declared in > codegen/passes.cpp as a cl::opt) and turn it on by default. When you're > doing your own tests you can enable it passing -verify-machineisntrs or > something like that to llc. OK. -Stepan. Borja Ferrer wrote: > Hello Stepan, > > 1) Wow, those are really big conditions xD. You could split them into > single conditions and use continues: > if (cond 1) continue; > if (cond 2) continue; > etc... > > instead of having a huge if() that is quite hard to read. > > 2) Yes I thought about that aswell, that not all constant nodes are asm > flags, but the ARM backend does this, so either they have a bug there or > it's safe? > I prefer if you could move the big condition inside the for() into the > top of the loop, it makes the for() quite unreadable. And adjust there > the i variable as needed for each suboperand as you mentioned before. > > 4) Why do you say they handle everything in the SelectInlineAsm method? > As far as i can see they only handle one specific case, otherwise they > return NULL and let the default behaviour do the work. > > 6) Yes glues are a bit tricky, dont worry about them, I will fix them > when this gets commited. > > One last thing, when you run the regression tests, enable locally the > machine verifier to catch any additional errors. To enable it > unconditionally search for the command object (i think it's declared in > codegen/passes.cpp as a cl::opt) and turn it on by default. When you're > doing your own tests you can enable it passing -verify-machineisntrs or > something like that to llc. > |