Commit 7e0228bf by Naveen H.S Committed by Naveen H.S

aarch64.md (*ngc<mode>): New pattern.

gcc/

2013-04-25  Naveen H.S  <Naveen.Hurugalawadi@caviumnetworks.com>

	* config/aarch64/aarch64.md (*ngc<mode>): New pattern.
	(*ngcsi_uxtw): New pattern.

gcc/testsuite/

2013-04-25  Naveen H.S  <Naveen.Hurugalawadi@caviumnetworks.com>

	* gcc.target/aarch64/ngc.c: New.

From-SVN: r198302
parent 23db309f
2013-04-25 Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com>
* config/aarch64/aarch64.md (*ngc<mode>): New pattern.
(*ngcsi_uxtw): New pattern.
2013-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
Julian Brown <julian@codesourcery.com>
......
......@@ -1989,6 +1989,27 @@
(set_attr "mode" "SI")]
)
(define_insn "*ngc<mode>"
[(set (match_operand:GPI 0 "register_operand" "=r")
(minus:GPI (neg:GPI (ltu:GPI (reg:CC CC_REGNUM) (const_int 0)))
(match_operand:GPI 1 "register_operand" "r")))]
""
"ngc\\t%<w>0, %<w>1"
[(set_attr "v8type" "adc")
(set_attr "mode" "<MODE>")]
)
(define_insn "*ngcsi_uxtw"
[(set (match_operand:DI 0 "register_operand" "=r")
(zero_extend:DI
(minus:SI (neg:SI (ltu:SI (reg:CC CC_REGNUM) (const_int 0)))
(match_operand:SI 1 "register_operand" "r"))))]
""
"ngc\\t%w0, %w1"
[(set_attr "v8type" "adc")
(set_attr "mode" "SI")]
)
(define_insn "*neg<mode>2_compare0"
[(set (reg:CC_NZ CC_REGNUM)
(compare:CC_NZ (neg:GPI (match_operand:GPI 1 "register_operand" "r"))
......
2013-04-25 Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com>
* gcc.target/aarch64/ngc.c: New.
2013-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* lib/target-supports.exp
......
/* { dg-do run } */
/* { dg-options "-O2 --save-temps -fno-inline" } */
extern void abort (void);
typedef unsigned int u32;
u32
ngc_si (u32 a, u32 b, u32 c, u32 d)
{
a = -b - (c < d);
return a;
}
typedef unsigned long long u64;
u64
ngc_si_tst (u64 a, u32 b, u32 c, u32 d)
{
a = -b - (c < d);
return a;
}
u64
ngc_di (u64 a, u64 b, u64 c, u64 d)
{
a = -b - (c < d);
return a;
}
int
main ()
{
int x;
u64 y;
x = ngc_si (29, 4, 5, 4);
if (x != -4)
abort ();
x = ngc_si (1024, 2, 20, 13);
if (x != -2)
abort ();
y = ngc_si_tst (0x130000029ll, 32, 50, 12);
if (y != 0xffffffe0)
abort ();
y = ngc_si_tst (0x5000500050005ll, 21, 2, 14);
if (y != 0xffffffea)
abort ();
y = ngc_di (0x130000029ll, 0x320000004ll, 0x505050505ll, 0x123123123ll);
if (y != 0xfffffffcdffffffc)
abort ();
y = ngc_di (0x5000500050005ll,
0x2111211121112ll, 0x0000000002020ll, 0x1414575046477ll);
if (y != 0xfffdeeedeeedeeed)
abort ();
return 0;
}
/* { dg-final { scan-assembler-times "ngc\tw\[0-9\]+, w\[0-9\]+" 2 } } */
/* { dg-final { scan-assembler-times "ngc\tx\[0-9\]+, x\[0-9\]+" 1 } } */
/* { dg-final { cleanup-saved-temps } } */
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