File: pr123333.ll

package info (click to toggle)
llvm-toolchain-20 1%3A20.1.6-1~exp1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 2,111,304 kB
  • sloc: cpp: 7,438,677; ansic: 1,393,822; asm: 1,012,926; python: 241,650; f90: 86,635; objc: 75,479; lisp: 42,144; pascal: 17,286; sh: 10,027; ml: 5,082; perl: 4,730; awk: 3,523; makefile: 3,349; javascript: 2,251; xml: 892; fortran: 672
file content (34 lines) | stat: -rw-r--r-- 1,557 bytes parent folder | download | duplicates (6)
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
26
27
28
29
30
31
32
33
34
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
; RUN: llc < %s -mtriple=x86_64-- -mcpu=x86-64-v4 | FileCheck %s

define void @PR123333(ptr %in0, ptr %in1, ptr %in2, ptr %out0, ptr %out1) {
; CHECK-LABEL: PR123333:
; CHECK:       # %bb.0:
; CHECK-NEXT:    kmovq (%rsi), %k0
; CHECK-NEXT:    kmovq (%rdi), %k1
; CHECK-NEXT:    korq %k1, %k0, %k2
; CHECK-NEXT:    vmovdqu8 (%rdx), %zmm0 {%k2} {z}
; CHECK-NEXT:    vmovdqu64 %zmm0, (%rcx)
; CHECK-NEXT:    kandnq %k0, %k1, %k0
; CHECK-NEXT:    knotq %k0, %k1
; CHECK-NEXT:    vmovdqu8 {{.*#+}} zmm0 {%k1} {z} = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
; CHECK-NEXT:    vmovdqu64 %zmm0, (%r8)
; CHECK-NEXT:    vzeroupper
; CHECK-NEXT:    retq
  %i0 = load i64, ptr %in0, align 8
  %i1 = load i64, ptr %in1, align 8
  %i2 = load <64 x i8>, ptr %in2, align 1
  %i7 = bitcast i64 %i1 to <64 x i1>
  %i9 = bitcast i64 %i0 to <64 x i1>
  %i12 = or i64 %i1, %i0
  %i13 = bitcast i64 %i12 to <64 x i1>
  %i15 = or <64 x i1> %i13, %i9
  %i17 = select <64 x i1> %i15, <64 x i8> %i2, <64 x i8> zeroinitializer
  store <64 x i8> %i17, ptr %out0, align 16
  %i21 = icmp eq <64 x i8> %i2, splat (i8 4)
  %i22 = xor <64 x i1> %i9, splat (i1 true)
  %i23 = and <64 x i1> %i22, %i7
  %i25 = select <64 x i1> %i23, <64 x i8> zeroinitializer, <64 x i8> splat (i8 15)
  store <64 x i8> %i25, ptr %out1, align 16
  ret void
}