315 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \3; RUN: -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s4; RUN: llc -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \5; RUN: -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s \6; RUN: -check-prefix=CHECK-P97 8define void @julia__typed_vcat_20() #0 {9; CHECK-LABEL: julia__typed_vcat_20:10; CHECK: # %bb.0: # %bb11; CHECK-NEXT: mflr r012; CHECK-NEXT: std r30, -16(r1) # 8-byte Folded Spill13; CHECK-NEXT: stdu r1, -48(r1)14; CHECK-NEXT: li r30, 015; CHECK-NEXT: li r3, 116; CHECK-NEXT: std r0, 64(r1)17; CHECK-NEXT: .p2align 418; CHECK-NEXT: .LBB0_1: # %bb319; CHECK-NEXT: #20; CHECK-NEXT: addi r3, r3, -121; CHECK-NEXT: mtfprd f0, r322; CHECK-NEXT: xscvsxdsp f1, f023; CHECK-NEXT: bl __truncsfhf224; CHECK-NEXT: nop25; CHECK-NEXT: clrldi r3, r3, 4826; CHECK-NEXT: bl __extendhfsf227; CHECK-NEXT: nop28; CHECK-NEXT: addi r30, r30, -129; CHECK-NEXT: li r3, 030; CHECK-NEXT: cmpldi r30, 031; CHECK-NEXT: bc 12, gt, .LBB0_132; CHECK-NEXT: # %bb.2: # %bb1133; CHECK-NEXT: bl __truncsfhf234; CHECK-NEXT: nop35; CHECK-NEXT: sth r3, 128(0)36;37; CHECK-P9-LABEL: julia__typed_vcat_20:38; CHECK-P9: # %bb.0: # %bb39; CHECK-P9-NEXT: li r3, 040; CHECK-P9-NEXT: mtctr r341; CHECK-P9-NEXT: li r3, 142; CHECK-P9-NEXT: .p2align 443; CHECK-P9-NEXT: .LBB0_1: # %bb344; CHECK-P9-NEXT: #45; CHECK-P9-NEXT: addi r3, r3, -146; CHECK-P9-NEXT: mtfprd f0, r347; CHECK-P9-NEXT: xscvsxdsp f0, f048; CHECK-P9-NEXT: xscvdphp f0, f049; CHECK-P9-NEXT: mffprwz r3, f050; CHECK-P9-NEXT: clrlwi r3, r3, 1651; CHECK-P9-NEXT: mtfprwz f0, r352; CHECK-P9-NEXT: li r3, 053; CHECK-P9-NEXT: xscvhpdp f0, f054; CHECK-P9-NEXT: bdnz .LBB0_155; CHECK-P9-NEXT: # %bb.2: # %bb1156; CHECK-P9-NEXT: xscvdphp f0, f057; CHECK-P9-NEXT: li r3, 12858; CHECK-P9-NEXT: stxsihx f0, 0, r359bb:60 %i = load i64, ptr addrspace(11) null, align 861 %i1 = call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 %i, i64 0)62 %i2 = extractvalue { i64, i1 } %i1, 063 br label %bb364 65bb3: ; preds = %bb3, %bb66 %i4 = phi i64 [ %i10, %bb3 ], [ 1, %bb ]67 %i5 = phi i64 [ 0, %bb3 ], [ 1, %bb ]68 %i6 = add nsw i64 %i5, -169 %i7 = add i64 %i6, 070 %i8 = sitofp i64 %i7 to half71 store half %i8, ptr addrspace(13) inttoptr (i64 128 to ptr addrspace(13)), align 272 %i9 = icmp eq i64 %i4, 073 %i10 = add i64 %i4, 174 br i1 %i9, label %bb11, label %bb375 76bb11: ; preds = %bb377 unreachable78}79 80declare { i64, i1 } @llvm.ssub.with.overflow.i64(i64, i64) #081 82define void @julia__hypot_17() #0 {83; CHECK-LABEL: julia__hypot_17:84; CHECK: # %bb.0: # %bb85; CHECK-NEXT: mflr r086; CHECK-NEXT: std r30, -16(r1) # 8-byte Folded Spill87; CHECK-NEXT: stdu r1, -48(r1)88; CHECK-NEXT: li r30, 389; CHECK-NEXT: std r0, 64(r1)90; CHECK-NEXT: .p2align 591; CHECK-NEXT: .LBB1_1: # %bb192; CHECK-NEXT: #93; CHECK-NEXT: addi r30, r30, -194; CHECK-NEXT: cmpldi r30, 095; CHECK-NEXT: bc 4, gt, .LBB1_396; CHECK-NEXT: # %bb.2: # %bb397; CHECK-NEXT: #98; CHECK-NEXT: lhz r3, 0(0)99; CHECK-NEXT: bl __extendhfsf2100; CHECK-NEXT: nop101; CHECK-NEXT: fcmpu cr0, f1, f1102; CHECK-NEXT: bun cr0, .LBB1_1103; CHECK-NEXT: .LBB1_3: # %bb9104; CHECK-NEXT: addi r1, r1, 48105; CHECK-NEXT: ld r0, 16(r1)106; CHECK-NEXT: ld r30, -16(r1) # 8-byte Folded Reload107; CHECK-NEXT: mtlr r0108; CHECK-NEXT: blr109;110; CHECK-P9-LABEL: julia__hypot_17:111; CHECK-P9: # %bb.0: # %bb112; CHECK-P9-NEXT: li r3, 3113; CHECK-P9-NEXT: mtctr r3114; CHECK-P9-NEXT: li r3, 0115; CHECK-P9-NEXT: .p2align 5116; CHECK-P9-NEXT: .LBB1_1: # %bb1117; CHECK-P9-NEXT: #118; CHECK-P9-NEXT: bdzlr119; CHECK-P9-NEXT: # %bb.2: # %bb3120; CHECK-P9-NEXT: #121; CHECK-P9-NEXT: lxsihzx f0, 0, r3122; CHECK-P9-NEXT: xscvhpdp f0, f0123; CHECK-P9-NEXT: fcmpu cr0, f0, f0124; CHECK-P9-NEXT: bun cr0, .LBB1_1125; CHECK-P9-NEXT: # %bb.3: # %bb9126; CHECK-P9-NEXT: blr127bb:128 br label %bb1129 130bb1: ; preds = %bb3, %bb131 %i = phi i64 [ %i4, %bb3 ], [ 2, %bb ]132 %i2 = icmp eq i64 %i, 4133 br i1 %i2, label %bb9, label %bb3134 135bb3: ; preds = %bb1136 %i4 = add nuw nsw i64 %i, 1137 %i5 = load half, ptr null, align 2138 %i6 = fpext half %i5 to float139 %i7 = fcmp uno float %i6, 0.000000e+00140 %i8 = or i1 %i7, false141 br i1 %i8, label %bb1, label %bb9142 143bb9: ; preds = %bb3, %bb1144 ret void145}146 147define void @func_48786() #0 {148; CHECK-LABEL: func_48786:149; CHECK: # %bb.0: # %bb150; CHECK-NEXT: mfocrf r12, 32151; CHECK-NEXT: stw r12, 8(r1)152; CHECK-NEXT: mflr r0153; CHECK-NEXT: stdu r1, -48(r1)154; CHECK-NEXT: std r0, 64(r1)155; CHECK-NEXT: std r30, 32(r1) # 8-byte Folded Spill156; CHECK-NEXT: # implicit-def: $x30157; CHECK-NEXT: ld r3, 0(r3)158; CHECK-NEXT: cmpdi r3, 0159; CHECK-NEXT: crnot 4*cr2+lt, eq160; CHECK-NEXT: b .LBB2_2161; CHECK-NEXT: .p2align 4162; CHECK-NEXT: .LBB2_1: # %bb10163; CHECK-NEXT: #164; CHECK-NEXT: addi r30, r30, -1165; CHECK-NEXT: cmpldi r30, 0166; CHECK-NEXT: bc 4, gt, .LBB2_5167; CHECK-NEXT: .LBB2_2: # %bb2168; CHECK-NEXT: #169; CHECK-NEXT: bc 12, 4*cr5+lt, .LBB2_1170; CHECK-NEXT: # %bb.3: # %bb4171; CHECK-NEXT: #172; CHECK-NEXT: lhz r3, 0(r3)173; CHECK-NEXT: bl __extendhfsf2174; CHECK-NEXT: nop175; CHECK-NEXT: bc 4, 4*cr2+lt, .LBB2_6176; CHECK-NEXT: # %bb.4: # %bb8177; CHECK-NEXT: #178; CHECK-NEXT: bl __truncsfhf2179; CHECK-NEXT: nop180; CHECK-NEXT: sth r3, 0(0)181; CHECK-NEXT: b .LBB2_1182; CHECK-NEXT: .LBB2_5: # %bb14183; CHECK-NEXT: ld r30, 32(r1) # 8-byte Folded Reload184; CHECK-NEXT: addi r1, r1, 48185; CHECK-NEXT: ld r0, 16(r1)186; CHECK-NEXT: lwz r12, 8(r1)187; CHECK-NEXT: mtlr r0188; CHECK-NEXT: mtocrf 32, r12189; CHECK-NEXT: blr190; CHECK-NEXT: .LBB2_6: # %bb15191;192; CHECK-P9-LABEL: func_48786:193; CHECK-P9: # %bb.0: # %bb194; CHECK-P9-NEXT: ld r3, 0(r3)195; CHECK-P9-NEXT: cmpdi r3, 0196; CHECK-P9-NEXT: mtctr r3197; CHECK-P9-NEXT: li r3, 0198; CHECK-P9-NEXT: crnot 4*cr5+lt, eq199; CHECK-P9-NEXT: b .LBB2_2200; CHECK-P9-NEXT: .p2align 5201; CHECK-P9-NEXT: .LBB2_1: # %bb10202; CHECK-P9-NEXT: #203; CHECK-P9-NEXT: bdzlr204; CHECK-P9-NEXT: .LBB2_2: # %bb2205; CHECK-P9-NEXT: #206; CHECK-P9-NEXT: bc 12, 4*cr5+lt, .LBB2_1207; CHECK-P9-NEXT: # %bb.3: # %bb4208; CHECK-P9-NEXT: #209; CHECK-P9-NEXT: lxsihzx f0, 0, r3210; CHECK-P9-NEXT: xscvhpdp f0, f0211; CHECK-P9-NEXT: bc 4, 4*cr5+lt, .LBB2_5212; CHECK-P9-NEXT: # %bb.4: # %bb8213; CHECK-P9-NEXT: #214; CHECK-P9-NEXT: xscvdphp f0, f0215; CHECK-P9-NEXT: stxsihx f0, 0, r3216; CHECK-P9-NEXT: b .LBB2_1217; CHECK-P9-NEXT: .LBB2_5: # %bb15218bb:219 %i = load i64, ptr addrspace(11) undef, align 8220 %i1 = load i64, ptr addrspace(11) undef, align 8221 br label %bb2222 223bb2: ; preds = %bb12, %bb224 %i3 = phi i64 [ undef, %bb ], [ %i13, %bb12 ]225 br i1 undef, label %bb10, label %bb4226 227bb4: ; preds = %bb2228 switch i32 undef, label %bb9 [229 i32 1426063360, label %bb5230 i32 1275068416, label %bb5231 ]232 233bb5: ; preds = %bb4, %bb4234 %i6 = load half, ptr addrspace(13) undef, align 2235 %i7 = icmp ult i64 0, %i1236 br i1 %i7, label %bb8, label %bb15237 238bb8: ; preds = %bb5239 store half %i6, ptr addrspace(13) null, align 2240 br label %bb10241 242bb9: ; preds = %bb4243 unreachable244 245bb10: ; preds = %bb8, %bb2246 %i11 = icmp eq i64 %i3, 0247 br i1 %i11, label %bb14, label %bb12248 249bb12: ; preds = %bb10250 %i13 = add i64 %i3, 1251 br label %bb2252 253bb14: ; preds = %bb10254 ret void255 256bb15: ; preds = %bb5257 unreachable258}259 260define void @func_48785(half %arg) #0 {261; CHECK-LABEL: func_48785:262; CHECK: # %bb.0: # %bb263; CHECK-NEXT: mflr r0264; CHECK-NEXT: std r29, -32(r1) # 8-byte Folded Spill265; CHECK-NEXT: std r30, -24(r1) # 8-byte Folded Spill266; CHECK-NEXT: stfd f31, -8(r1) # 8-byte Folded Spill267; CHECK-NEXT: stdu r1, -64(r1)268; CHECK-NEXT: fmr f31, f1269; CHECK-NEXT: li r3, 1270; CHECK-NEXT: li r29, 0271; CHECK-NEXT: std r0, 80(r1)272; CHECK-NEXT: rldic r30, r3, 62, 1273; CHECK-NEXT: .p2align 5274; CHECK-NEXT: .LBB3_1: # %bb1275; CHECK-NEXT: #276; CHECK-NEXT: fmr f1, f31277; CHECK-NEXT: bl __truncsfhf2278; CHECK-NEXT: nop279; CHECK-NEXT: addi r30, r30, -1280; CHECK-NEXT: sth r3, 0(r29)281; CHECK-NEXT: addi r29, r29, 24282; CHECK-NEXT: cmpldi r30, 0283; CHECK-NEXT: bc 12, gt, .LBB3_1284; CHECK-NEXT: # %bb.2: # %bb5285;286; CHECK-P9-LABEL: func_48785:287; CHECK-P9: # %bb.0: # %bb288; CHECK-P9-NEXT: li r3, 1289; CHECK-P9-NEXT: rldic r3, r3, 62, 1290; CHECK-P9-NEXT: mtctr r3291; CHECK-P9-NEXT: li r3, 0292; CHECK-P9-NEXT: .p2align 4293; CHECK-P9-NEXT: .LBB3_1: # %bb1294; CHECK-P9-NEXT: #295; CHECK-P9-NEXT: xscvdphp f0, f1296; CHECK-P9-NEXT: stxsihx f0, 0, r3297; CHECK-P9-NEXT: addi r3, r3, 24298; CHECK-P9-NEXT: bdnz .LBB3_1299; CHECK-P9-NEXT: # %bb.2: # %bb5300bb:301 br label %bb1302 303bb1: ; preds = %bb1, %bb304 %i = phi i64 [ 0, %bb ], [ %i3, %bb1 ]305 %i2 = getelementptr inbounds half, ptr addrspace(13) null, i64 %i306 store half %arg, ptr addrspace(13) %i2, align 2307 %i3 = add i64 %i, 12308 %i4 = icmp eq i64 %i3, 0309 br i1 %i4, label %bb5, label %bb1310 311bb5: ; preds = %bb1312 unreachable313}314attributes #0 = { nounwind }315