aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/X86/vpternlog.ll
blob: bd7478d3a82d558f0a80a377efccdb7a5911cb0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512f,+avx512vl | FileCheck %s --check-prefixes=CHECK

define <8 x i64> @foo(<8 x i64> %a, <8 x i64> %b, <8 x i64> %c) {
; CHECK-LABEL: foo:
; CHECK:       # %bb.0:
; CHECK-NEXT:    vpternlogq {{.*#+}} zmm0 = ~(zmm0 | zmm2 | zmm1)
; CHECK-NEXT:    retq
  %and.demorgan = or <8 x i64> %b, %a
  %and3.demorgan = or <8 x i64> %and.demorgan, %c
  %and3 = xor <8 x i64> %and3.demorgan, splat (i64 -1)
  ret <8 x i64> %and3
}

define <8 x i64> @xorbitcast(<64 x i8> %a, <64 x i8> %b, <64 x i8> %c) {
; CHECK-LABEL: xorbitcast:
; CHECK:       # %bb.0:
; CHECK-NEXT:    vpternlogq {{.*#+}} zmm0 = ~(zmm0 | zmm2 | zmm1)
; CHECK-NEXT:    retq
  %or1 = or <64 x i8> %a, %b
  %or2 = or <64 x i8> %or1, %c
  %cast = bitcast <64 x i8> %or2 to <8 x i64>
  %xor = xor <8 x i64> %cast, splat (i64 -1)
  ret <8 x i64> %xor
}