aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKito Cheng <kito.cheng@gmail.com>2018-04-04 09:32:31 +0000
committerChung-Ju Wu <jasonwucj@gcc.gnu.org>2018-04-04 09:32:31 +0000
commit2cf09a996629e3996235ab3c16e2bab8a98b276f (patch)
tree905a4ea7bc36872fe2e821a692d78ec05593bfd1 /gcc
parentbb347ee22758f2fa8d657ff42519e878915b64cc (diff)
downloadgcc-2cf09a996629e3996235ab3c16e2bab8a98b276f.zip
gcc-2cf09a996629e3996235ab3c16e2bab8a98b276f.tar.gz
gcc-2cf09a996629e3996235ab3c16e2bab8a98b276f.tar.bz2
[NDS32] Implement movmisalignsi and movmisaligndi pattern.
gcc/ * config/nds32/nds32.md (movmisalign<mode>): New pattern. Co-Authored-By: Monk Chiang <sh.chiang04@gmail.com> From-SVN: r259073
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/nds32/nds32.md21
2 files changed, 26 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3555f35..8f97ac2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2018-04-04 Kito Cheng <kito.cheng@gmail.com>
+ Monk Chiang <sh.chiang04@gmail.com>
+
+ * config/nds32/nds32.md (movmisalign<mode>): New pattern.
+
2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
* config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
diff --git a/gcc/config/nds32/nds32.md b/gcc/config/nds32/nds32.md
index 9a12598..68fe1b3 100644
--- a/gcc/config/nds32/nds32.md
+++ b/gcc/config/nds32/nds32.md
@@ -101,6 +101,27 @@
}
})
+(define_expand "movmisalign<mode>"
+ [(set (match_operand:SIDI 0 "general_operand" "")
+ (match_operand:SIDI 1 "general_operand" ""))]
+ ""
+{
+ rtx addr;
+ if (MEM_P (operands[0]) && !REG_P (operands[1]))
+ operands[1] = force_reg (<MODE>mode, operands[1]);
+
+ if (MEM_P (operands[0]))
+ {
+ addr = force_reg (Pmode, XEXP (operands[0], 0));
+ emit_insn (gen_unaligned_store<mode> (addr, operands[1]));
+ }
+ else
+ {
+ addr = force_reg (Pmode, XEXP (operands[1], 0));
+ emit_insn (gen_unaligned_load<mode> (operands[0], addr));
+ }
+ DONE;
+})
(define_expand "movsi"
[(set (match_operand:SI 0 "general_operand" "")