]> granicus.if.org Git - llvm/commitdiff
[X86] Synchronize a pattern between SSE1 and AVX/AVX512.
authorCraig Topper <craig.topper@intel.com>
Sun, 17 Sep 2017 18:59:32 +0000 (18:59 +0000)
committerCraig Topper <craig.topper@intel.com>
Sun, 17 Sep 2017 18:59:32 +0000 (18:59 +0000)
For some reason the SSE1 pattern expected a X86Movlhps pattern to have a v4f32 type, but AVX and AVX512 expected it to have a v4i32 type.

I'm not even sure this pattern is even reachable post SSE1, but I'm starting with fixing this obvious bug.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313495 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86InstrAVX512.td
lib/Target/X86/X86InstrSSE.td

index 0342c74da4706b5f1e46de8f43470030b477521d..4c16e140c2b314fc08b110ff39f14f26f00f970b 100644 (file)
@@ -6088,7 +6088,7 @@ let Predicates = [HasAVX512] in {
                (bc_v4f32 (v2i64 (scalar_to_vector (loadi64 addr:$src2))))),
           (VMOVHPSZ128rm VR128X:$src1, addr:$src2)>;
   def : Pat<(X86Movlhps VR128X:$src1,
-               (bc_v4i32 (v2i64 (X86vzload addr:$src2)))),
+               (bc_v4f32 (v2i64 (X86vzload addr:$src2)))),
           (VMOVHPSZ128rm VR128X:$src1, addr:$src2)>;
   // VMOVHPD patterns
   def : Pat<(v2f64 (X86Unpckl VR128X:$src1,
index b8d1240b4e2c3200a6172713ee6e5a51be781dec..22a605c4bef599e6a363a623262e8e08818095fa 100644 (file)
@@ -1034,7 +1034,7 @@ let Predicates = [UseAVX] in {
                  (bc_v4f32 (v2i64 (scalar_to_vector (loadi64 addr:$src2))))),
             (VMOVHPSrm VR128:$src1, addr:$src2)>;
   def : Pat<(X86Movlhps VR128:$src1,
-                 (bc_v4i32 (v2i64 (X86vzload addr:$src2)))),
+                 (bc_v4f32 (v2i64 (X86vzload addr:$src2)))),
             (VMOVHPSrm VR128:$src1, addr:$src2)>;
 
   // FIXME: Instead of X86Unpckl, there should be a X86Movlhpd here, the problem