C-SKY: Add instruction "ld.bs".
authorGeng Qi <gengqi@linux.alibaba.com>
Tue, 25 May 2021 10:45:25 +0000 (18:45 +0800)
committerXianmiao Qu <xianmiao_qu@c-sky.com>
Wed, 26 May 2021 02:05:18 +0000 (10:05 +0800)
gcc/
* config/csky/csky.md (cskyv2_sextend_ldbs): New.

gcc/testsuite/
* gcc.target/csky/ldbs.c: New.

gcc/config/csky/csky.md
gcc/testsuite/gcc.target/csky/ldbs.c [new file with mode: 0644]

index c27d627..b980d4c 100644 (file)
   }"
 )
 
+;; hi -> si
 (define_insn "extendhisi2"
   [(set (match_operand:SI                0 "register_operand" "=r")
        (sign_extend:SI (match_operand:HI 1 "register_operand" "r")))]
   "sextb  %0, %1"
 )
 
+(define_insn "*cskyv2_sextend_ldbs"
+  [(set (match_operand:SI                0 "register_operand" "=r")
+        (sign_extend:SI (match_operand:QI 1 "csky_simple_mem_operand" "m")))]
+  "CSKY_ISA_FEATURE (E2)"
+  "ld.bs\t%0, %1"
+  [(set_attr "length" "4")
+   (set_attr "type" "load")]
+)
+
 ;; qi -> hi
 (define_insn "extendqihi2"
   [(set (match_operand:HI                0 "register_operand" "=r")
diff --git a/gcc/testsuite/gcc.target/csky/ldbs.c b/gcc/testsuite/gcc.target/csky/ldbs.c
new file mode 100644 (file)
index 0000000..27a0254
--- /dev/null
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-skip-if "" { *-*-* } { "-mcpu=ck801" "-march=ck801" } { "*" } } */
+/* { dg-csky-options "-O1" } */
+
+int foo (signed char *pb)
+{
+  return *pb;
+}
+
+/* { dg-final { scan-assembler "ld.bs" } } */
+