Commit cdf53e33 authored by Guy Blank's avatar Guy Blank
Browse files

merge r276347

[X86] Do not use AND8ri8 in AVX512 pattern

This variant is (as documented in the TD) for disassembler use only, and should
not be used in patterns - it is longer, and is broken on 64-bit.

llvm-svn: 287855
parent 7591dd95
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2124,7 +2124,7 @@ let Predicates = [HasAVX512] in {
            (COPY_TO_REGCLASS (i16 (EXTRACT_SUBREG $src, sub_16bit)), VK1)>;

  def : Pat<(i1 (trunc (i8 GR8:$src))),
            (COPY_TO_REGCLASS (i16 (SUBREG_TO_REG (i64 0), (AND8ri8 $src, (i8 1)),
            (COPY_TO_REGCLASS (i16 (SUBREG_TO_REG (i64 0), (AND8ri $src, (i8 1)),
                                    sub_8bit)), VK1)>;

  def : Pat<(i1 (trunc (i8 (assertzext_i1 GR8:$src)))),
+18 −0
Original line number Diff line number Diff line
; RUN: llc -mtriple=x86_64-pc-linux -mattr=+avx512f --show-mc-encoding < %s | FileCheck %s

declare i1 @bar() 

; CHECK-LABEL: @foo
; CHECK-NOT: andb {{.*}} # encoding: [0x82,
define i1 @foo(i1 %i) nounwind {
entry:
  br i1 %i, label %if, label %else

if:
  %r = call i1 @bar()
  br label %else

else:
  %ret = phi i1 [%r, %if], [true, %entry]
  ret i1 %ret
}