<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Hi,<br><br>Attached patch is to fix a pattern match failure for neon movi with scalar 1D result.<br><br>diff --git a/lib/Target/AArch64/AArch64InstrNEON.td b/lib/Target/AArch64/AArch64InstrNEON.td<br>
old mode 100644<br>new mode 100755<br>index eb62c13..7a63935<br>--- a/lib/Target/AArch64/AArch64InstrNEON.td<br>+++ b/lib/Target/AArch64/AArch64InstrNEON.td<br>@@ -1423,9 +1423,8 @@ let isReMaterializable = 1 in {<br> def MOVIdi : NeonI_1VModImm<0b0, 0b1,<br>
                            (outs FPR64:$Rd), (ins neon_uimm64_mask:$Imm),<br>                            "movi\t $Rd, $Imm",<br>-                           [(set (f64 FPR64:$Rd),<br>-                              (f64 (bitconvert<br>
-                                (v1i64 (Neon_movi (timm:$Imm), (i32 imm))))))],<br>+                           [(set (v1i64 FPR64:$Rd),<br>+                              (v1i64 (Neon_movi (timm:$Imm), (i32 imm))))],<br>                            NoItinerary> {<br>
   let cmode = 0b1110;<br> }<br>diff --git a/test/CodeGen/AArch64/neon-movi.ll b/test/CodeGen/AArch64/neon-movi.ll<br>new file mode 100644<br>index 0000000..680ec47<br>--- /dev/null<br>+++ b/test/CodeGen/AArch64/neon-movi.ll<br>
@@ -0,0 +1,8 @@<br>+; RUN: llc < %s -O2 -verify-machineinstrs -mtriple=aarch64-none-linux-gnu -mattr=+neon | FileCheck %s<br>+<br>+declare <2 x i32> @llvm.arm.neon.vabds.v2i32(<2 x i32>, <2 x i32>)<br>
+define <2 x i32> @test_movi_1d() {<br>+; CHECK: movi     d1, #0xffffffff0000<br>+  %1 = tail call <2 x i32> @llvm.arm.neon.vabds.v2i32(<2 x i32> <i32 -2147483648, i32 2147450880>, <2 x i32> <i32 -65536, i32 65535>)<br>
+  ret <2 x i32> %1<br>+}<br clear="all"></div><br>-- <br><div dir="ltr"><font face="courier new, monospace">Thanks,</font><div><font face="courier new, monospace">-Jiangning</font></div></div>
</div>