blob: bd3a602ebbd9ca12c397830dca8cabf0d0430465 [file]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -S --passes=slp-vectorizer -mtriple=riscv32-unknown-linux-gnu -mattr=+v < %s | FileCheck %s
define i1 @test(i32 %0, i32 %add21.i, i32 %1) #0 {
; CHECK-LABEL: define i1 @test(
; CHECK-SAME: i32 [[TMP0:%.*]], i32 [[ADD21_I:%.*]], i32 [[TMP1:%.*]]) #[[ATTR0:[0-9]+]] {
; CHECK-NEXT: [[ENTRY:.*:]]
; CHECK-NEXT: [[TMP2:%.*]] = sub i32 0, [[TMP0]]
; CHECK-NEXT: [[DIFF_CHECK132:%.*]] = icmp ugt i32 [[ADD21_I]], [[TMP2]]
; CHECK-NEXT: [[TMP3:%.*]] = shl i32 [[TMP0]], 1
; CHECK-NEXT: [[DIFF_CHECK134:%.*]] = icmp eq i32 [[TMP3]], 0
; CHECK-NEXT: [[CONFLICT_RDX135:%.*]] = or i1 [[DIFF_CHECK132]], [[DIFF_CHECK134]]
; CHECK-NEXT: [[TMP4:%.*]] = sub i32 0, [[TMP0]]
; CHECK-NEXT: [[DIFF_CHECK136:%.*]] = icmp ugt i32 [[TMP0]], [[TMP4]]
; CHECK-NEXT: [[CONFLICT_RDX137:%.*]] = or i1 [[CONFLICT_RDX135]], [[DIFF_CHECK136]]
; CHECK-NEXT: [[DIFF_CHECK138:%.*]] = icmp ult i32 [[TMP3]], [[TMP1]]
; CHECK-NEXT: [[CONFLICT_RDX139:%.*]] = or i1 [[CONFLICT_RDX137]], [[DIFF_CHECK138]]
; CHECK-NEXT: [[DIFF_CHECK140:%.*]] = icmp ugt i32 [[TMP0]], [[TMP2]]
; CHECK-NEXT: [[CONFLICT_RDX141:%.*]] = or i1 [[CONFLICT_RDX139]], [[DIFF_CHECK140]]
; CHECK-NEXT: [[TMP5:%.*]] = mul i32 [[TMP0]], [[TMP0]]
; CHECK-NEXT: [[DIFF_CHECK142:%.*]] = icmp eq i32 [[TMP5]], 0
; CHECK-NEXT: [[CONFLICT_RDX143:%.*]] = or i1 [[CONFLICT_RDX141]], [[DIFF_CHECK142]]
; CHECK-NEXT: [[TMP6:%.*]] = sub i32 0, [[TMP0]]
; CHECK-NEXT: [[DIFF_CHECK146:%.*]] = icmp ugt i32 [[TMP0]], [[TMP6]]
; CHECK-NEXT: [[CONFLICT_RDX147:%.*]] = or i1 [[CONFLICT_RDX143]], [[DIFF_CHECK146]]
; CHECK-NEXT: [[DIFF_CHECK148:%.*]] = icmp ult i32 [[TMP3]], [[ADD21_I]]
; CHECK-NEXT: [[CONFLICT_RDX149:%.*]] = or i1 [[CONFLICT_RDX147]], [[DIFF_CHECK148]]
; CHECK-NEXT: ret i1 [[CONFLICT_RDX149]]
;
entry:
%2 = sub i32 0, %0
%diff.check132 = icmp ugt i32 %add21.i, %2
%3 = shl i32 %0, 1
%diff.check134 = icmp eq i32 %3, 0
%conflict.rdx135 = or i1 %diff.check132, %diff.check134
%4 = sub i32 0, %0
%diff.check136 = icmp ugt i32 %0, %4
%conflict.rdx137 = or i1 %conflict.rdx135, %diff.check136
%diff.check138 = icmp ult i32 %3, %1
%conflict.rdx139 = or i1 %conflict.rdx137, %diff.check138
%diff.check140 = icmp ugt i32 %0, %2
%conflict.rdx141 = or i1 %conflict.rdx139, %diff.check140
%5 = mul i32 %0, %0
%diff.check142 = icmp eq i32 %5, 0
%conflict.rdx143 = or i1 %conflict.rdx141, %diff.check142
%6 = sub i32 0, %0
%diff.check146 = icmp ugt i32 %0, %6
%conflict.rdx147 = or i1 %conflict.rdx143, %diff.check146
%diff.check148 = icmp ult i32 %3, %add21.i
%conflict.rdx149 = or i1 %conflict.rdx147, %diff.check148
ret i1 %conflict.rdx149
}