On 18/10/2019 14:18, Christophe Lyon wrote:
+thumb1_gen_const_int (rtx op0, HOST_WIDE_INT op1)
+{
+  bool mov_done_p = false;
+  int i;
+
+  /* Emit upper 3 bytes if needed.  */
+  for (i = 0; i < 3; i++)
+    {
+      int byte = (op1 >> (8 * (3 - i))) & 0xff;
+
+      if (byte)
+       {
+         emit_set_insn (op0, mov_done_p
+                        ? gen_rtx_PLUS (SImode,op0, GEN_INT (byte))
+                        : GEN_INT (byte));
+         mov_done_p = true;
+       }
+
+      if (mov_done_p)
+       emit_set_insn (op0, gen_rtx_ASHIFT (SImode, op0, GEN_INT (8)));
+    }
+
+  /* Emit lower byte if needed.  */
+  if (!mov_done_p)
+    emit_set_insn (op0, GEN_INT (op1 & 0xff));
+  else if (op1 & 0xff)
+    emit_set_insn (op0, gen_rtx_PLUS (SImode, op0, GEN_INT (op1 & 0xff)));
+}
+

What about Armv8-m.baseline, which has movw/movt?

R.

Reply via email to