Commit 8fa477f7 by Bernd Schmidt Committed by Bernd Schmidt

bfin.md (loadbytes): New pattern.

	* config/bfin/bfin.md (loadbytes): New pattern.
	* config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
	(bfin_init_builtins): Initialize it.
	(bdesc_1arg): Add it.

From-SVN: r135351
parent 4e8c438f
2008-05-15 Bernd Schmidt <bernd.schmidt@analog.com>
* config/bfin/bfin.md (loadbytes): New pattern.
* config/bfin/bfin.c (enum bfin_builtins): Add BFIN_BUILTIN_LOADBYTES.
(bfin_init_builtins): Initialize it.
(bdesc_1arg): Add it.
2008-05-15 Sa Liu <saliu@de.ibm.com>
* testsuite/gfortran.dg/c_kind_int128_test1.f03: New.
......
......@@ -5228,6 +5228,8 @@ enum bfin_builtins
BFIN_BUILTIN_CPLX_SQU,
BFIN_BUILTIN_LOADBYTES,
BFIN_BUILTIN_MAX
};
......@@ -5282,7 +5284,11 @@ bfin_init_builtins (void)
tree short_ftype_v2hi
= build_function_type_list (short_integer_type_node, V2HI_type_node,
NULL_TREE);
tree int_ftype_pint
= build_function_type_list (integer_type_node,
build_pointer_type (integer_type_node),
NULL_TREE);
/* Add the remaining MMX insns with somewhat more complicated types. */
def_builtin ("__builtin_bfin_csync", void_ftype_void, BFIN_BUILTIN_CSYNC);
def_builtin ("__builtin_bfin_ssync", void_ftype_void, BFIN_BUILTIN_SSYNC);
......@@ -5409,6 +5415,11 @@ bfin_init_builtins (void)
BFIN_BUILTIN_CPLX_MSU_16_S40);
def_builtin ("__builtin_bfin_csqu_fr16", v2hi_ftype_v2hi,
BFIN_BUILTIN_CPLX_SQU);
/* "Unaligned" load. */
def_builtin ("__builtin_bfin_loadbytes", int_ftype_pint,
BFIN_BUILTIN_LOADBYTES);
}
......@@ -5456,6 +5467,8 @@ static const struct builtin_description bdesc_2arg[] =
static const struct builtin_description bdesc_1arg[] =
{
{ CODE_FOR_loadbytes, "__builtin_bfin_loadbytes", BFIN_BUILTIN_LOADBYTES, 0 },
{ CODE_FOR_ones, "__builtin_bfin_ones", BFIN_BUILTIN_ONES, 0 },
{ CODE_FOR_signbitshi2, "__builtin_bfin_norm_fr1x16", BFIN_BUILTIN_NORM_1X16, 0 },
......
......@@ -4253,3 +4253,13 @@
%0 = %1 >> %N2 (V)%!"
[(set_attr "type" "dsp32")])
;; Load without alignment exception (masking off low bits)
(define_insn "loadbytes"
[(set (match_operand:SI 0 "register_operand" "=d")
(mem:SI (and:SI (match_operand:SI 1 "register_operand" "b")
(const_int -4))))]
""
"DISALGNEXCPT || %0 = [%1];"
[(set_attr "type" "mcld")
(set_attr "length" "8")])
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment