On Sam, 2013-06-08 at 20:08 -0400, Tom Stellard wrote: > On Fri, Jun 07, 2013 at 05:48:05PM -0700, Tom Stellard wrote: > > On Fri, Jun 07, 2013 at 05:24:42PM +0200, Michel Dänzer wrote: > > > > > > @@ -1544,6 +1562,26 @@ def : Pat < > > > sub3) > > > >; > > > > > > +class DDXY <Intrinsic name, bits<4> ldsdelta> : Pat < > > > + (name v4f32:$src, imm, imm, imm), > > > + (INSERT_SUBREG (INSERT_SUBREG (INSERT_SUBREG (INSERT_SUBREG (v4f32 > > > (IMPLICIT_DEF)), > > > + (SI_DD (EXTRACT_SUBREG $src, sub0), (V_LSHLREV_B32_e32 2, (SI_TID)), > > > + (V_AND_B32_e32 0xfffffff0, (V_LSHLREV_B32_e32 2, (SI_TID))), > > > + ldsdelta), sub0), > > > + (SI_DD (EXTRACT_SUBREG $src, sub1), (V_LSHLREV_B32_e32 2, (SI_TID)), > > > + (V_AND_B32_e32 0xfffffff0, (V_LSHLREV_B32_e32 2, (SI_TID))), > > > + ldsdelta), sub1), > > > + (SI_DD (EXTRACT_SUBREG $src, sub2), (V_LSHLREV_B32_e32 2, (SI_TID)), > > > + (V_AND_B32_e32 0xfffffff0, (V_LSHLREV_B32_e32 2, (SI_TID))), > > > + ldsdelta), sub2), > > > + (SI_DD (EXTRACT_SUBREG $src, sub3), (V_LSHLREV_B32_e32 2, (SI_TID)), > > > + (V_AND_B32_e32 0xfffffff0, (V_LSHLREV_B32_e32 2, (SI_TID))), > > > + ldsdelta), sub3) > > > +>; > > > > Based on this pattern, I don't think you need to use a ddx/ddy intrinsic > > here. All of the instructions you are lowering DDX/DDY to have an > > equivalent LLVM IR instruction or LLVM intrinsic. > > > > For the DS_READ and DS_WRITE instructions all you need to do is emit > > load/stores to the local address space and then add patterns for those > > int the backend. As an added bonus this will add support for OpenCL > > local address spaces. I think the rest of the instructions are pretty > > straight > > forward (unless I've overlooked something). Let me know if you have any > > questions. > > I did overlook something. You will need to add an intrinsic for thread > id in order to implement ddx/ddy completely in LLVM IR, but I still > think it is the best way.
Shoot, I was just happy I finally got all the piglit tests passing. :) But I agree your suggested approach would be better, I'll give it a go. -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Debian, X and DRI developer _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
