This sounds a bit too trivial. OTOH, I had problem with people not putting one space after the "//" as comment. This happens almost always with China trained engrs. Please add that space. It helps to keep formats consistent and a bit more easy reading Sun
On Tue, Aug 31, 2010 at 10:55 PM, <s...@open64.net> wrote: > Author: zhuqing > Date: 2010-09-01 01:55:28 -0400 (Wed, 01 Sep 2010) > New Revision: 3332 > > Modified: > trunk/osprey/wgen/wgen_expr.cxx > Log: > add intrinsic for _mm_extract_pi16 > > Modified: trunk/osprey/wgen/wgen_expr.cxx > =================================================================== > --- trunk/osprey/wgen/wgen_expr.cxx 2010-09-01 05:42:02 UTC (rev 3331) > +++ trunk/osprey/wgen/wgen_expr.cxx 2010-09-01 05:55:28 UTC (rev 3332) > @@ -3967,7 +3967,29 @@ > case GSBI_IX86_BUILTIN_VEC_EXT_V4SI: > *iopc = INTRN_VEC_EXT_V2SI; > break; > - case GSBI_IX86_BUILTIN_VEC_EXT_V2DI: > + case GSBI_IX86_BUILTIN_VEC_EXT_V4HI: > + //add intrinsic for _mm_extract_pi16 > + if (WN_operator(arg1) != OPR_INTCONST) > + Fail_FmtAssertion ("selector must be an integer constant in the range > 0..3"); > + switch (WN_const_val(arg1)){ > + case 0: > + *iopc = INTRN_PEXTRW0; > + break; > + case 1: > + *iopc = INTRN_PEXTRW1; > + break; > + case 2: > + *iopc = INTRN_PEXTRW2; > + break; > + case 3: > + *iopc = INTRN_PEXTRW3; > + break; > + default: > + Fail_FmtAssertion ("selector must be an integer constant in the range > 0..3" ); > + } > + break; > + > + case GSBI_IX86_BUILTIN_VEC_EXT_V2DI: > *iopc = INTRN_VEC_EXT_V2SI; > break; > case GSBI_IX86_BUILTIN_VEC_EXT_V2DF: > @@ -9294,7 +9316,18 @@ > for (i = 0, list = gs_tree_operand (exp, 1); > list; > i++, list = gs_tree_chain (list)) { > - arg_wn = WGEN_Expand_Expr (gs_tree_value (list)); > + //if intrinsic equals _mm_extract_pi16, > + //the second param is fixed to const 0,1,2,3, so > + //there is no need to generate the second arg node. > + if (i ==1 && (iopc == INTRN_PEXTRW0 || > + iopc == INTRN_PEXTRW1 || > + iopc == INTRN_PEXTRW2 || > + iopc == INTRN_PEXTRW3)) { > + num_args = 1; > + break; > + } > + arg_wn = WGEN_Expand_Expr (gs_tree_value (list)); > + > #ifdef KEY // bug 11286 > if (i == 1 && TARGET_64BIT && > (gs_decl_function_code(func) == GSBI_BUILT_IN_POWI || > > > ------------------------------------------------------------------------------ > This SF.net Dev2Dev email is sponsored by: > > Show off your parallel programming skills. > Enter the Intel(R) Threading Challenge 2010. > http://p.sf.net/sfu/intel-thread-sfd > _______________________________________________ > Open64-devel mailing list > Open64-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/open64-devel > ------------------------------------------------------------------------------ This SF.net Dev2Dev email is sponsored by: Show off your parallel programming skills. Enter the Intel(R) Threading Challenge 2010. http://p.sf.net/sfu/intel-thread-sfd _______________________________________________ Open64-devel mailing list Open64-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open64-devel