| ; 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 |
| } |
| |