blob: e7bb4b3811698f473a30dfb734ee97e3335d9155 [file]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -S --passes=slp-vectorizer -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s
define i1 @test(i64 %0, i64 %1) {
; CHECK-LABEL: define i1 @test(
; CHECK-SAME: i64 [[TMP0:%.*]], i64 [[TMP1:%.*]]) {
; CHECK-NEXT: [[BB:.*:]]
; CHECK-NEXT: [[TMP2:%.*]] = mul i64 [[TMP0]], -12
; CHECK-NEXT: [[DIFF_CHECK640:%.*]] = icmp ult i64 [[TMP2]], 16
; CHECK-NEXT: [[TMP3:%.*]] = or i64 [[TMP2]], [[TMP0]]
; CHECK-NEXT: [[DIFF_CHECK642:%.*]] = icmp ult i64 [[TMP3]], 16
; CHECK-NEXT: [[CONFLICT_RDX643:%.*]] = or i1 [[DIFF_CHECK640]], [[DIFF_CHECK642]]
; CHECK-NEXT: [[TMP4:%.*]] = mul i64 [[TMP0]], -4
; CHECK-NEXT: [[DIFF_CHECK644:%.*]] = icmp ult i64 [[TMP4]], 16
; CHECK-NEXT: [[TMP5:%.*]] = mul i64 [[TMP0]], -8
; CHECK-NEXT: [[TMP6:%.*]] = mul i64 [[TMP0]], -16
; CHECK-NEXT: [[CONFLICT_RDX645:%.*]] = or i1 [[CONFLICT_RDX643]], [[DIFF_CHECK644]]
; CHECK-NEXT: [[DIFF_CHECK646:%.*]] = icmp ult i64 [[TMP5]], 16
; CHECK-NEXT: [[CONFLICT_RDX647:%.*]] = or i1 [[CONFLICT_RDX645]], [[DIFF_CHECK646]]
; CHECK-NEXT: [[TMP7:%.*]] = mul i64 [[TMP0]], -4
; CHECK-NEXT: [[DIFF_CHECK648:%.*]] = icmp ult i64 [[TMP7]], 16
; CHECK-NEXT: [[CONFLICT_RDX649:%.*]] = or i1 [[CONFLICT_RDX647]], [[DIFF_CHECK648]]
; CHECK-NEXT: [[TMP8:%.*]] = or i64 [[TMP6]], [[TMP0]]
; CHECK-NEXT: [[DIFF_CHECK654:%.*]] = icmp ult i64 [[TMP8]], 16
; CHECK-NEXT: [[CONFLICT_RDX655:%.*]] = or i1 [[CONFLICT_RDX649]], [[DIFF_CHECK654]]
; CHECK-NEXT: [[DIFF_CHECK666:%.*]] = icmp ult i64 [[TMP0]], 16
; CHECK-NEXT: [[CONFLICT_RDX667:%.*]] = or i1 [[CONFLICT_RDX655]], [[DIFF_CHECK666]]
; CHECK-NEXT: [[DIFF_CHECK672:%.*]] = icmp eq i64 [[TMP1]], 0
; CHECK-NEXT: [[CONFLICT_RDX673:%.*]] = or i1 [[CONFLICT_RDX667]], [[DIFF_CHECK672]]
; CHECK-NEXT: ret i1 [[CONFLICT_RDX673]]
;
bb:
%2 = mul i64 %0, -12
%diff.check640 = icmp ult i64 %2, 16
%3 = or i64 %2, %0
%diff.check642 = icmp ult i64 %3, 16
%conflict.rdx643 = or i1 %diff.check640, %diff.check642
%4 = mul i64 %0, -4
%diff.check644 = icmp ult i64 %4, 16
%5 = mul i64 %0, -8
%6 = mul i64 %0, -16
%conflict.rdx645 = or i1 %conflict.rdx643, %diff.check644
%diff.check646 = icmp ult i64 %5, 16
%conflict.rdx647 = or i1 %conflict.rdx645, %diff.check646
%7 = mul i64 %0, -4
%diff.check648 = icmp ult i64 %7, 16
%conflict.rdx649 = or i1 %conflict.rdx647, %diff.check648
%8 = or i64 %6, %0
%diff.check654 = icmp ult i64 %8, 16
%conflict.rdx655 = or i1 %conflict.rdx649, %diff.check654
%diff.check666 = icmp ult i64 %0, 16
%conflict.rdx667 = or i1 %conflict.rdx655, %diff.check666
%diff.check672 = icmp eq i64 %1, 0
%conflict.rdx673 = or i1 %conflict.rdx667, %diff.check672
ret i1 %conflict.rdx673
}