diff options
-rw-r--r-- | gcc/config/nvptx/nvptx.md | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/nvptx/cnot-1.c | 94 |
2 files changed, 101 insertions, 0 deletions
diff --git a/gcc/config/nvptx/nvptx.md b/gcc/config/nvptx/nvptx.md index a4c14a3..ce74672 100644 --- a/gcc/config/nvptx/nvptx.md +++ b/gcc/config/nvptx/nvptx.md @@ -592,6 +592,13 @@ "" "%.\\tnot.b%T0\\t%0, %1;") +(define_insn "*cnot<mode>2" + [(set (match_operand:HSDIM 0 "nvptx_register_operand" "=R") + (eq:HSDIM (match_operand:HSDIM 1 "nvptx_register_operand" "R") + (const_int 0)))] + "" + "%.\\tcnot.b%T0\\t%0, %1;") + (define_insn "bitrev<mode>2" [(set (match_operand:SDIM 0 "nvptx_register_operand" "=R") (unspec:SDIM [(match_operand:SDIM 1 "nvptx_register_operand" "R")] diff --git a/gcc/testsuite/gcc.target/nvptx/cnot-1.c b/gcc/testsuite/gcc.target/nvptx/cnot-1.c new file mode 100644 index 0000000..d0bdccd --- /dev/null +++ b/gcc/testsuite/gcc.target/nvptx/cnot-1.c @@ -0,0 +1,94 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +int test1(int x) +{ + return !x; +} + +int test2(int x) +{ + return x ? 0 : 1; +} + +int test3(int x) +{ + return (x == 0) ? 1 : 0; +} + +unsigned int test4(unsigned int x) +{ + return !x; +} + +unsigned int test5(unsigned int x) +{ + return x ? 0 : 1; +} + +unsigned int test6(unsigned int x) +{ + return (x == 0) ? 1 : 0; +} + +short test7(short x) +{ + return !x; +} + +short test8(short x) +{ + return x ? 0 : 1; +} + +short test9(short x) +{ + return (x == 0) ? 1 : 0; +} + +unsigned short test10(unsigned short x) +{ + return !x; +} + +unsigned short test11(unsigned short x) +{ + return x ? 0 : 1; +} + +unsigned short test12(unsigned short x) +{ + return (x == 0) ? 1 : 0; +} + +long test13(long x) +{ + return !x; +} + +long test14(long x) +{ + return x ? 0 : 1; +} + +long test15(long x) +{ + return (x == 0) ? 1: 0; +} + +unsigned long test16(unsigned long x) +{ + return !x; +} + +unsigned long test17(unsigned long x) +{ + return x ? 0 : 1; +} + +unsigned long test18(unsigned long x) +{ + return (x == 0) ? 1 : 0; +} + +/* { dg-final { scan-assembler-times "cnot.b" 18 } } */ |