xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/pr28173.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1; RUN: llc -mattr=+avx512f < %s | FileCheck %s
2target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
3target triple = "x86_64-unknown-linux-gnu"
4
5; Note that the kmovs should really *not* appear in the output, this is an
6; artifact of the current poor lowering. This is tracked by PR28175.
7
8define i64 @foo64(i1 zeroext %i, i32 %j) #0 {
9; CHECK-LABEL: foo64:
10; CHECK:       # BB#0:
11; CHECK-NEXT:    # kill
12; CHECK-NEXT:    orq $-2, %rdi
13; CHECK-NEXT:    movq %rdi, %rax
14; CHECK-NEXT:    retq
15  br label %bb
16
17bb:
18  %z = zext i1 %i to i64
19  %v = or i64 %z, -2
20  br label %end
21
22end:
23  ret i64 %v
24}
25
26define i16 @foo16(i1 zeroext %i, i32 %j) #0 {
27; CHECK-LABEL: foo16:
28; CHECK:       # BB#0:
29; CHECK-NEXT:    orl $65534, %edi # imm = 0xFFFE
30; CHECK-NEXT:    movl %edi, %eax
31; CHECK-NEXT:    retq
32  br label %bb
33
34bb:
35  %z = zext i1 %i to i16
36  %v = or i16 %z, -2
37  br label %end
38
39end:
40  ret i16 %v
41}
42