If the copyables are parts of the deleted nodes, need to check the actual tree to correctly handling the scheduling of copyables
264 lines
24 KiB
LLVM
264 lines
24 KiB
LLVM
; 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 -mcpu=neoverse-v2 -slp-threshold=-10 < %s | FileCheck %s
|
|
|
|
define void @test(i64 %0, i64 %1, i64 %2, i64 %3, i64 %.sroa.3341.0.copyload, i64 %.sroa.3308.0.copyload, i64 %.neg1, i64 %indvar3788, i64 %4, i64 %5, i64 %6, i64 %7, i64 %8) {
|
|
; CHECK-LABEL: define void @test(
|
|
; CHECK-SAME: i64 [[TMP0:%.*]], i64 [[TMP1:%.*]], i64 [[TMP2:%.*]], i64 [[TMP3:%.*]], i64 [[DOTSROA_3341_0_COPYLOAD:%.*]], i64 [[DOTSROA_3308_0_COPYLOAD:%.*]], i64 [[DOTNEG1:%.*]], i64 [[INDVAR3788:%.*]], i64 [[TMP4:%.*]], i64 [[TMP5:%.*]], i64 [[TMP6:%.*]], i64 [[TMP7:%.*]], i64 [[TMP8:%.*]]) #[[ATTR0:[0-9]+]] {
|
|
; CHECK-NEXT: [[_LR_PH_PREHEADER:.*:]]
|
|
; CHECK-NEXT: [[TMP9:%.*]] = insertelement <4 x i64> poison, i64 [[TMP0]], i32 0
|
|
; CHECK-NEXT: [[TMP10:%.*]] = shufflevector <4 x i64> [[TMP9]], <4 x i64> poison, <4 x i32> zeroinitializer
|
|
; CHECK-NEXT: [[TMP11:%.*]] = shufflevector <4 x i64> [[TMP10]], <4 x i64> <i64 48, i64 40, i64 24, i64 poison>, <4 x i32> <i32 4, i32 5, i32 6, i32 0>
|
|
; CHECK-NEXT: [[TMP12:%.*]] = mul <4 x i64> [[TMP10]], [[TMP11]]
|
|
; CHECK-NEXT: [[TMP14:%.*]] = shl i64 [[TMP0]], 11
|
|
; CHECK-NEXT: [[TMP21:%.*]] = shufflevector <4 x i64> [[TMP10]], <4 x i64> <i64 poison, i64 1, i64 poison, i64 1>, <4 x i32> <i32 0, i32 5, i32 poison, i32 7>
|
|
; CHECK-NEXT: [[TMP15:%.*]] = insertelement <4 x i64> poison, i64 [[TMP14]], i32 0
|
|
; CHECK-NEXT: [[TMP16:%.*]] = shufflevector <4 x i64> [[TMP15]], <4 x i64> poison, <4 x i32> <i32 poison, i32 poison, i32 0, i32 poison>
|
|
; CHECK-NEXT: [[TMP22:%.*]] = shufflevector <4 x i64> [[TMP21]], <4 x i64> [[TMP16]], <4 x i32> <i32 0, i32 1, i32 6, i32 3>
|
|
; CHECK-NEXT: [[TMP32:%.*]] = shufflevector <4 x i64> [[TMP10]], <4 x i64> [[TMP22]], <4 x i32> <i32 poison, i32 0, i32 poison, i32 6>
|
|
; CHECK-NEXT: [[TMP33:%.*]] = shufflevector <4 x i64> [[TMP32]], <4 x i64> <i64 -1, i64 poison, i64 -8, i64 poison>, <4 x i32> <i32 4, i32 1, i32 6, i32 3>
|
|
; CHECK-NEXT: [[TMP20:%.*]] = sub <4 x i64> [[TMP22]], [[TMP33]]
|
|
; CHECK-NEXT: [[TMP18:%.*]] = shl i64 [[TMP0]], 1
|
|
; CHECK-NEXT: [[TMP19:%.*]] = or i64 [[TMP18]], [[TMP0]]
|
|
; CHECK-NEXT: [[TMP23:%.*]] = shufflevector <4 x i64> [[TMP22]], <4 x i64> <i64 poison, i64 poison, i64 poison, i64 1>, <4 x i32> <i32 2, i32 0, i32 poison, i32 7>
|
|
; CHECK-NEXT: [[TMP81:%.*]] = insertelement <4 x i64> poison, i64 [[TMP19]], i32 0
|
|
; CHECK-NEXT: [[TMP82:%.*]] = shufflevector <4 x i64> [[TMP81]], <4 x i64> poison, <4 x i32> <i32 poison, i32 poison, i32 0, i32 poison>
|
|
; CHECK-NEXT: [[TMP17:%.*]] = shufflevector <4 x i64> [[TMP23]], <4 x i64> [[TMP82]], <4 x i32> <i32 0, i32 1, i32 6, i32 3>
|
|
; CHECK-NEXT: [[TMP37:%.*]] = shufflevector <4 x i64> [[TMP17]], <4 x i64> <i64 -8, i64 1, i64 1, i64 poison>, <4 x i32> <i32 4, i32 5, i32 6, i32 0>
|
|
; CHECK-NEXT: [[TMP38:%.*]] = sub <4 x i64> [[TMP17]], [[TMP37]]
|
|
; CHECK-NEXT: [[TMP29:%.*]] = or <4 x i64> [[TMP17]], [[TMP37]]
|
|
; CHECK-NEXT: [[TMP83:%.*]] = shufflevector <4 x i64> [[TMP38]], <4 x i64> [[TMP29]], <4 x i32> <i32 0, i32 5, i32 6, i32 3>
|
|
; CHECK-NEXT: [[TMP31:%.*]] = shufflevector <4 x i64> [[TMP17]], <4 x i64> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
|
|
; CHECK-NEXT: [[TMP24:%.*]] = shufflevector <4 x i64> [[TMP17]], <4 x i64> poison, <8 x i32> <i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
|
|
; CHECK-NEXT: [[TMP25:%.*]] = shufflevector <8 x i64> [[TMP24]], <8 x i64> <i64 poison, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>, <8 x i32> <i32 0, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
|
|
; CHECK-NEXT: [[TMP42:%.*]] = shufflevector <4 x i64> [[TMP17]], <4 x i64> poison, <2 x i32> <i32 1, i32 1>
|
|
; CHECK-NEXT: [[TMP80:%.*]] = insertelement <64 x i64> <i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 1, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison, i64 poison>, i64 [[TMP1]], i32 11
|
|
; CHECK-NEXT: [[TMP28:%.*]] = shufflevector <4 x i64> [[TMP12]], <4 x i64> poison, <28 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
|
|
; CHECK-NEXT: [[TMP84:%.*]] = shufflevector <4 x i64> [[TMP17]], <4 x i64> poison, <14 x i32> <i32 poison, i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
|
|
; CHECK-NEXT: br label %[[DOTLR_PH1977_US:.*]]
|
|
; CHECK: [[_LR_PH1977_US:.*:]]
|
|
; CHECK-NEXT: [[INDVAR37888:%.*]] = phi i64 [ 0, [[DOTLR_PH_PREHEADER:%.*]] ], [ 1, %[[DOTLR_PH1977_US]] ]
|
|
; CHECK-NEXT: [[TMP34:%.*]] = mul <4 x i64> [[TMP83]], [[TMP31]]
|
|
; CHECK-NEXT: [[TMP35:%.*]] = shufflevector <4 x i64> [[TMP34]], <4 x i64> poison, <8 x i32> <i32 0, i32 1, i32 1, i32 1, i32 1, i32 2, i32 3, i32 3>
|
|
; CHECK-NEXT: [[TMP36:%.*]] = mul <4 x i64> [[TMP20]], [[TMP31]]
|
|
; CHECK-NEXT: [[TMP26:%.*]] = call i64 @llvm.vscale.i64()
|
|
; CHECK-NEXT: [[TMP27:%.*]] = mul i64 [[TMP0]], [[TMP0]]
|
|
; CHECK-NEXT: [[TMP30:%.*]] = or i64 [[TMP0]], 1
|
|
; CHECK-NEXT: [[TMP40:%.*]] = or <2 x i64> [[TMP42]], splat (i64 1)
|
|
; CHECK-NEXT: [[TMP41:%.*]] = shl <2 x i64> [[TMP42]], splat (i64 1)
|
|
; CHECK-NEXT: [[TMP39:%.*]] = mul i64 [[TMP0]], [[TMP0]]
|
|
; CHECK-NEXT: [[TMP43:%.*]] = add <8 x i64> [[TMP35]], [[TMP25]]
|
|
; CHECK-NEXT: [[TMP44:%.*]] = insertelement <64 x i64> [[TMP80]], i64 [[INDVAR37888]], i32 1
|
|
; CHECK-NEXT: [[TMP45:%.*]] = insertelement <64 x i64> [[TMP44]], i64 [[TMP27]], i32 2
|
|
; CHECK-NEXT: [[TMP46:%.*]] = insertelement <64 x i64> [[TMP45]], i64 [[TMP30]], i32 3
|
|
; CHECK-NEXT: [[TMP47:%.*]] = shufflevector <8 x i64> [[TMP35]], <8 x i64> poison, <64 x i32> <i32 poison, i32 1, i32 poison, i32 poison, i32 poison, i32 5, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
|
|
; CHECK-NEXT: [[TMP48:%.*]] = shufflevector <4 x i64> [[TMP34]], <4 x i64> poison, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
|
|
; CHECK-NEXT: [[TMP49:%.*]] = shufflevector <64 x i64> [[TMP46]], <64 x i64> [[TMP48]], <64 x i32> <i32 poison, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 11, i32 poison, i32 65, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 66, i32 27, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
|
|
; CHECK-NEXT: [[TMP50:%.*]] = insertelement <64 x i64> [[TMP49]], i64 [[TMP39]], i32 17
|
|
; CHECK-NEXT: [[TMP51:%.*]] = shufflevector <64 x i64> [[TMP50]], <64 x i64> poison, <28 x i32> <i32 poison, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 11, i32 poison, i32 13, i32 poison, i32 poison, i32 poison, i32 17, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 26, i32 27>
|
|
; CHECK-NEXT: [[TMP52:%.*]] = shufflevector <8 x i64> [[TMP43]], <8 x i64> poison, <28 x i32> <i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison>
|
|
; CHECK-NEXT: [[TMP53:%.*]] = shufflevector <28 x i64> [[TMP52]], <28 x i64> [[TMP28]], <28 x i32> <i32 28, i32 29, i32 30, i32 31, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 poison, i32 poison, i32 poison, i32 poison>
|
|
; CHECK-NEXT: [[TMP54:%.*]] = shufflevector <4 x i64> [[TMP36]], <4 x i64> poison, <28 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
|
|
; CHECK-NEXT: [[TMP55:%.*]] = shufflevector <28 x i64> [[TMP53]], <28 x i64> [[TMP54]], <28 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 28, i32 29, i32 30, i32 31, i32 poison, i32 poison, i32 poison, i32 poison, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 poison, i32 poison, i32 poison, i32 poison>
|
|
; CHECK-NEXT: [[TMP56:%.*]] = shufflevector <2 x i64> [[TMP40]], <2 x i64> poison, <28 x i32> <i32 0, i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
|
|
; CHECK-NEXT: [[TMP57:%.*]] = shufflevector <28 x i64> [[TMP55]], <28 x i64> [[TMP56]], <28 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 8, i32 9, i32 10, i32 11, i32 poison, i32 poison, i32 28, i32 29, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 poison, i32 poison, i32 poison, i32 poison>
|
|
; CHECK-NEXT: [[TMP58:%.*]] = shufflevector <2 x i64> [[TMP41]], <2 x i64> poison, <28 x i32> <i32 0, i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
|
|
; CHECK-NEXT: [[TMP59:%.*]] = shufflevector <28 x i64> [[TMP57]], <28 x i64> [[TMP58]], <28 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison, i32 8, i32 9, i32 10, i32 11, i32 poison, i32 poison, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 poison, i32 poison, i32 28, i32 29>
|
|
; CHECK-NEXT: [[TMP60:%.*]] = shufflevector <28 x i64> [[TMP59]], <28 x i64> poison, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
|
|
; CHECK-NEXT: [[TMP61:%.*]] = shufflevector <64 x i64> [[TMP60]], <64 x i64> [[TMP50]], <28 x i32> <i32 0, i32 65, i32 66, i32 67, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 75, i32 21, i32 77, i32 26, i32 27, i32 1, i32 81, i32 8, i32 9, i32 22, i32 10, i32 2, i32 3, i32 11, i32 23, i32 90, i32 91>
|
|
; CHECK-NEXT: [[TMP62:%.*]] = shufflevector <28 x i64> [[TMP61]], <28 x i64> poison, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 11, i32 16, i32 1, i32 17, i32 18, i32 19, i32 20, i32 11, i32 21, i32 13, i32 11, i32 11, i32 13, i32 11, i32 14, i32 15, i32 22, i32 11, i32 1, i32 17, i32 23, i32 24, i32 11, i32 11, i32 21, i32 13, i32 11, i32 11, i32 13, i32 11, i32 15, i32 22, i32 1, i32 17, i32 25, i32 21, i32 21, i32 21, i32 11, i32 11, i32 26, i32 13, i32 14, i32 11, i32 1, i32 17, i32 11, i32 27>
|
|
; CHECK-NEXT: [[TMP63:%.*]] = shufflevector <28 x i64> [[TMP61]], <28 x i64> poison, <14 x i32> <i32 poison, i32 poison, i32 11, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
|
|
; CHECK-NEXT: [[TMP64:%.*]] = shufflevector <14 x i64> [[TMP84]], <14 x i64> [[TMP63]], <14 x i32> <i32 poison, i32 1, i32 16, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
|
|
; CHECK-NEXT: [[TMP65:%.*]] = insertelement <14 x i64> [[TMP64]], i64 [[DOTNEG1]], i32 3
|
|
; CHECK-NEXT: [[TMP66:%.*]] = insertelement <14 x i64> [[TMP65]], i64 [[TMP2]], i32 4
|
|
; CHECK-NEXT: [[TMP67:%.*]] = insertelement <14 x i64> [[TMP66]], i64 [[TMP3]], i32 5
|
|
; CHECK-NEXT: [[TMP68:%.*]] = insertelement <14 x i64> [[TMP67]], i64 [[TMP4]], i32 6
|
|
; CHECK-NEXT: [[TMP69:%.*]] = insertelement <14 x i64> [[TMP68]], i64 [[INDVAR3788]], i32 7
|
|
; CHECK-NEXT: [[TMP70:%.*]] = insertelement <14 x i64> [[TMP69]], i64 [[TMP5]], i32 8
|
|
; CHECK-NEXT: [[TMP71:%.*]] = insertelement <14 x i64> [[TMP70]], i64 [[TMP6]], i32 9
|
|
; CHECK-NEXT: [[TMP72:%.*]] = insertelement <14 x i64> [[TMP71]], i64 [[TMP7]], i32 10
|
|
; CHECK-NEXT: [[TMP73:%.*]] = insertelement <14 x i64> [[TMP72]], i64 [[DOTSROA_3341_0_COPYLOAD]], i32 11
|
|
; CHECK-NEXT: [[TMP74:%.*]] = insertelement <14 x i64> [[TMP73]], i64 [[TMP8]], i32 12
|
|
; CHECK-NEXT: [[TMP75:%.*]] = insertelement <14 x i64> [[TMP74]], i64 [[DOTSROA_3308_0_COPYLOAD]], i32 13
|
|
; CHECK-NEXT: [[TMP76:%.*]] = insertelement <14 x i64> [[TMP75]], i64 [[TMP26]], i32 0
|
|
; CHECK-NEXT: [[TMP77:%.*]] = shufflevector <14 x i64> [[TMP76]], <14 x i64> poison, <64 x i32> <i32 0, i32 1, i32 1, i32 2, i32 2, i32 2, i32 3, i32 1, i32 1, i32 1, i32 1, i32 4, i32 1, i32 1, i32 2, i32 2, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 5, i32 1, i32 2, i32 6, i32 7, i32 1, i32 1, i32 2, i32 2, i32 1, i32 4, i32 1, i32 1, i32 1, i32 1, i32 8, i32 9, i32 1, i32 2, i32 10, i32 11, i32 1, i32 1, i32 2, i32 1, i32 1, i32 1, i32 1, i32 1, i32 2, i32 4, i32 12, i32 13, i32 1, i32 1, i32 2, i32 1, i32 1, i32 1, i32 4, i32 0>
|
|
; CHECK-NEXT: [[TMP78:%.*]] = icmp ult <64 x i64> [[TMP62]], [[TMP77]]
|
|
; CHECK-NEXT: [[TMP79:%.*]] = call i1 @llvm.vector.reduce.or.v64i1(<64 x i1> [[TMP78]])
|
|
; CHECK-NEXT: br i1 [[TMP79]], label %[[SCALAR_PH4023:.*]], label %[[DOTLR_PH1977_US]]
|
|
; CHECK: [[SCALAR_PH4023]]:
|
|
; CHECK-NEXT: ret void
|
|
;
|
|
.lr.ph.preheader:
|
|
%9 = mul i64 %0, 24
|
|
%10 = mul i64 %0, 40
|
|
%11 = mul i64 %0, 48
|
|
%12 = add i64 %0, 1
|
|
%13 = sub i64 1, %0
|
|
%14 = shl i64 %0, 11
|
|
%15 = sub i64 1, %14
|
|
%16 = add i64 %14, 8
|
|
%17 = or i64 %0, 1
|
|
%18 = shl i64 %0, 1
|
|
%19 = or i64 %18, %0
|
|
%20 = or i64 %19, 1
|
|
%21 = mul i64 %0, %0
|
|
br label %.lr.ph1977.us
|
|
|
|
.lr.ph1977.us:
|
|
%indvar37888 = phi i64 [ 0, %.lr.ph.preheader ], [ 1, %.lr.ph1977.us ]
|
|
%22 = mul i64 %16, %0
|
|
%23 = mul i64 %20, %0
|
|
%24 = mul i64 %15, %0
|
|
%25 = mul i64 %17, %0
|
|
%26 = call i64 @llvm.vscale.i64()
|
|
%diff.check3783 = icmp ult i64 %11, %26
|
|
%diff.check3790 = icmp ult i64 %indvar37888, %0
|
|
%conflict.rdx3791 = or i1 %diff.check3783, %diff.check3790
|
|
%27 = mul i64 %0, %0
|
|
%diff.check3793 = icmp ult i64 %27, %0
|
|
%conflict.rdx3794 = or i1 %conflict.rdx3791, %diff.check3793
|
|
%28 = or i64 %0, 1
|
|
%diff.check3796 = icmp ult i64 %28, %1
|
|
%conflict.rdx3797 = or i1 %conflict.rdx3794, %diff.check3796
|
|
%29 = or i64 %0, 1
|
|
%diff.check3799 = icmp ult i64 %29, %1
|
|
%conflict.rdx3800 = or i1 %conflict.rdx3797, %diff.check3799
|
|
%30 = or i64 %0, 1
|
|
%diff.check3802 = icmp ult i64 %30, %1
|
|
%conflict.rdx3803 = or i1 %conflict.rdx3800, %diff.check3802
|
|
%diff.check3805 = icmp ugt i64 %26, 1
|
|
%conflict.rdx3806 = or i1 %conflict.rdx3803, %diff.check3805
|
|
%31 = add i64 %22, %0
|
|
%diff.check3807 = icmp ult i64 %31, %.neg1
|
|
%conflict.rdx3808 = or i1 %conflict.rdx3806, %diff.check3807
|
|
%32 = add i64 %25, 1
|
|
%diff.check3809 = icmp ult i64 %32, %0
|
|
%conflict.rdx3810 = or i1 %conflict.rdx3808, %diff.check3809
|
|
%33 = add i64 %25, 1
|
|
%diff.check3811 = icmp ult i64 %33, %0
|
|
%conflict.rdx3812 = or i1 %conflict.rdx3810, %diff.check3811
|
|
%34 = add i64 %25, 1
|
|
%diff.check3813 = icmp ult i64 %34, %0
|
|
%conflict.rdx3814 = or i1 %conflict.rdx3812, %diff.check3813
|
|
%35 = add i64 %25, 1
|
|
%diff.check3815 = icmp ult i64 %35, %0
|
|
%conflict.rdx3816 = or i1 %conflict.rdx3814, %diff.check3815
|
|
%diff.check3817 = icmp ult i64 %1, %2
|
|
%conflict.rdx3818 = or i1 %conflict.rdx3816, %diff.check3817
|
|
%36 = add i64 %23, 1
|
|
%diff.check3820 = icmp ult i64 %36, %0
|
|
%conflict.rdx3821 = or i1 %conflict.rdx3818, %diff.check3820
|
|
%diff.check3822 = icmp ult i64 %25, %0
|
|
%conflict.rdx3823 = or i1 %conflict.rdx3821, %diff.check3822
|
|
%37 = shl i64 %0, 1
|
|
%diff.check3824 = icmp ult i64 %37, %1
|
|
%conflict.rdx3825 = or i1 %conflict.rdx3823, %diff.check3824
|
|
%38 = shl i64 %0, 1
|
|
%diff.check3826 = icmp ult i64 %38, %1
|
|
%conflict.rdx3827 = or i1 %conflict.rdx3825, %diff.check3826
|
|
%diff.check3830 = icmp ult i64 %1, %0
|
|
%conflict.rdx3831 = or i1 %conflict.rdx3827, %diff.check3830
|
|
%diff.check3832 = icmp ult i64 %10, %0
|
|
%conflict.rdx3833 = or i1 %conflict.rdx3831, %diff.check3832
|
|
%diff.check3834 = icmp ult i64 %indvar37888, %0
|
|
%conflict.rdx3835 = or i1 %conflict.rdx3833, %diff.check3834
|
|
%39 = mul i64 %0, %0
|
|
%diff.check3836 = icmp ult i64 %39, %0
|
|
%conflict.rdx3837 = or i1 %conflict.rdx3835, %diff.check3836
|
|
%40 = mul i64 %12, %0
|
|
%diff.check3838 = icmp ult i64 %40, %0
|
|
%conflict.rdx3839 = or i1 %conflict.rdx3837, %diff.check3838
|
|
%41 = mul i64 %13, %0
|
|
%diff.check3840 = icmp ult i64 %41, %0
|
|
%conflict.rdx3841 = or i1 %conflict.rdx3839, %diff.check3840
|
|
%42 = add i64 %24, 1
|
|
%diff.check3842 = icmp ult i64 %42, %0
|
|
%conflict.rdx3843 = or i1 %conflict.rdx3841, %diff.check3842
|
|
%diff.check3846 = icmp ult i64 %1, %3
|
|
%conflict.rdx3847 = or i1 %conflict.rdx3843, %diff.check3846
|
|
%diff.check3848 = icmp ult i64 %22, %0
|
|
%conflict.rdx3849 = or i1 %conflict.rdx3847, %diff.check3848
|
|
%diff.check3850 = icmp ult i64 %25, %1
|
|
%conflict.rdx3851 = or i1 %conflict.rdx3849, %diff.check3850
|
|
%diff.check3852 = icmp ult i64 %1, %4
|
|
%conflict.rdx3853 = or i1 %conflict.rdx3851, %diff.check3852
|
|
%diff.check3854 = icmp ult i64 %1, %indvar3788
|
|
%conflict.rdx3855 = or i1 %conflict.rdx3853, %diff.check3854
|
|
%diff.check3856 = icmp ult i64 %25, %0
|
|
%conflict.rdx3857 = or i1 %conflict.rdx3855, %diff.check3856
|
|
%diff.check3860 = icmp ult i64 %1, %0
|
|
%conflict.rdx3861 = or i1 %conflict.rdx3857, %diff.check3860
|
|
%diff.check3862 = icmp ult i64 %37, %1
|
|
%conflict.rdx3863 = or i1 %conflict.rdx3861, %diff.check3862
|
|
%diff.check3864 = icmp ult i64 %38, %1
|
|
%conflict.rdx3865 = or i1 %conflict.rdx3863, %diff.check3864
|
|
%diff.check3866 = icmp ult i64 %9, %0
|
|
%conflict.rdx3867 = or i1 %conflict.rdx3865, %diff.check3866
|
|
%diff.check3868 = icmp ult i64 %1, %2
|
|
%conflict.rdx3869 = or i1 %conflict.rdx3867, %diff.check3868
|
|
%diff.check3870 = icmp ult i64 %indvar37888, %0
|
|
%conflict.rdx3871 = or i1 %conflict.rdx3869, %diff.check3870
|
|
%diff.check3872 = icmp ult i64 %39, %0
|
|
%conflict.rdx3873 = or i1 %conflict.rdx3871, %diff.check3872
|
|
%diff.check3876 = icmp ult i64 %21, %0
|
|
%diff.check3878 = icmp ult i64 %24, %0
|
|
%conflict.rdx3877 = or i1 %conflict.rdx3873, %diff.check3876
|
|
%conflict.rdx3879 = or i1 %conflict.rdx3877, %diff.check3878
|
|
%diff.check3882 = icmp ult i64 %1, %5
|
|
%conflict.rdx3883 = or i1 %conflict.rdx3879, %diff.check3882
|
|
%diff.check3884 = icmp ult i64 %1, %6
|
|
%conflict.rdx3885 = or i1 %conflict.rdx3883, %diff.check3884
|
|
%diff.check3886 = icmp ult i64 %22, %0
|
|
%conflict.rdx3887 = or i1 %conflict.rdx3885, %diff.check3886
|
|
%diff.check3890 = icmp ult i64 %25, %1
|
|
%conflict.rdx3891 = or i1 %conflict.rdx3887, %diff.check3890
|
|
%diff.check3892 = icmp ult i64 %1, %7
|
|
%conflict.rdx3893 = or i1 %conflict.rdx3891, %diff.check3892
|
|
%diff.check3894 = icmp ult i64 %1, %.sroa.3341.0.copyload
|
|
%conflict.rdx3895 = or i1 %conflict.rdx3893, %diff.check3894
|
|
%diff.check3896 = icmp ult i64 %25, %0
|
|
%conflict.rdx3897 = or i1 %conflict.rdx3895, %diff.check3896
|
|
%diff.check3898 = icmp ult i64 %1, %0
|
|
%conflict.rdx3899 = or i1 %conflict.rdx3897, %diff.check3898
|
|
%diff.check3900 = icmp ult i64 %38, %1
|
|
%conflict.rdx3901 = or i1 %conflict.rdx3899, %diff.check3900
|
|
%diff.check3902 = icmp ult i64 %9, %0
|
|
%conflict.rdx3903 = or i1 %conflict.rdx3901, %diff.check3902
|
|
%diff.check3904 = icmp ult i64 %indvar37888, %0
|
|
%conflict.rdx3905 = or i1 %conflict.rdx3903, %diff.check3904
|
|
%diff.check3906 = icmp ult i64 %39, %0
|
|
%conflict.rdx3907 = or i1 %conflict.rdx3905, %diff.check3906
|
|
%43 = add i64 %24, 1
|
|
%diff.check3912 = icmp ult i64 %43, %0
|
|
%conflict.rdx3913 = or i1 %conflict.rdx3907, %diff.check3912
|
|
%diff.check3916 = icmp ult i64 %22, %0
|
|
%conflict.rdx3917 = or i1 %conflict.rdx3913, %diff.check3916
|
|
%diff.check3920 = icmp ult i64 %22, %1
|
|
%conflict.rdx3921 = or i1 %conflict.rdx3917, %diff.check3920
|
|
%diff.check3922 = icmp ult i64 %22, %2
|
|
%conflict.rdx3923 = or i1 %conflict.rdx3921, %diff.check3922
|
|
%diff.check3924 = icmp ult i64 %1, %8
|
|
%conflict.rdx3925 = or i1 %conflict.rdx3923, %diff.check3924
|
|
%diff.check3926 = icmp ult i64 %1, %.sroa.3308.0.copyload
|
|
%conflict.rdx3927 = or i1 %conflict.rdx3925, %diff.check3926
|
|
%diff.check3928 = icmp ult i64 %23, %0
|
|
%conflict.rdx3929 = or i1 %conflict.rdx3927, %diff.check3928
|
|
%diff.check3930 = icmp ult i64 %25, %0
|
|
%conflict.rdx3931 = or i1 %conflict.rdx3929, %diff.check3930
|
|
%diff.check3932 = icmp ult i64 %37, %1
|
|
%conflict.rdx3933 = or i1 %conflict.rdx3931, %diff.check3932
|
|
%diff.check3934 = icmp ult i64 %1, %0
|
|
%conflict.rdx3935 = or i1 %conflict.rdx3933, %diff.check3934
|
|
%diff.check3936 = icmp ult i64 %indvar37888, %0
|
|
%conflict.rdx3937 = or i1 %conflict.rdx3935, %diff.check3936
|
|
%diff.check3938 = icmp ult i64 %39, %0
|
|
%conflict.rdx3939 = or i1 %conflict.rdx3937, %diff.check3938
|
|
%diff.check3950 = icmp ult i64 %1, %2
|
|
%conflict.rdx3951 = or i1 %conflict.rdx3939, %diff.check3950
|
|
br i1 %conflict.rdx3951, label %scalar.ph4023, label %.lr.ph1977.us
|
|
|
|
scalar.ph4023:
|
|
ret void
|
|
}
|
|
|
|
declare i64 @llvm.vscale.i64()
|