218 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs < %s | FileCheck %s3target datalayout = "E-m:e-p:32:32-i128:64-n32"4target triple = "powerpc-ellcc-linux"5 6; Function Attrs: nounwind7define void @foo1(ptr %a, ptr readonly %b, ptr readonly %c) #0 {8; CHECK-LABEL: foo1:9; CHECK: # %bb.0: # %entry10; CHECK-NEXT: stwu 1, -64(1)11; CHECK-NEXT: stw 29, 52(1) # 4-byte Folded Spill12; CHECK-NEXT: li 7, 204813; CHECK-NEXT: stw 30, 56(1) # 4-byte Folded Spill14; CHECK-NEXT: li 6, 015; CHECK-NEXT: mtctr 716; CHECK-NEXT: addi 7, 1, 1617; CHECK-NEXT: .LBB0_1: # %for.body18; CHECK-NEXT: #19; CHECK-NEXT: lwz 8, 0(4)20; CHECK-NEXT: lwz 9, 4(4)21; CHECK-NEXT: lwz 10, 8(4)22; CHECK-NEXT: lwz 11, 12(4)23; CHECK-NEXT: lwz 12, 12(5)24; CHECK-NEXT: stw 6, 44(1)25; CHECK-NEXT: stw 6, 40(1)26; CHECK-NEXT: stw 6, 36(1)27; CHECK-NEXT: stw 6, 32(1)28; CHECK-NEXT: stw 11, 28(1)29; CHECK-NEXT: stw 10, 24(1)30; CHECK-NEXT: clrlwi 10, 12, 2731; CHECK-NEXT: stw 9, 20(1)32; CHECK-NEXT: stw 8, 16(1)33; CHECK-NEXT: rlwinm 8, 12, 29, 28, 2934; CHECK-NEXT: lwzux 9, 8, 735; CHECK-NEXT: subfic 12, 10, 3236; CHECK-NEXT: lwz 11, 8(8)37; CHECK-NEXT: slw 9, 9, 1038; CHECK-NEXT: lwz 0, 4(8)39; CHECK-NEXT: lwz 8, 12(8)40; CHECK-NEXT: srw 30, 11, 1241; CHECK-NEXT: slw 29, 0, 1042; CHECK-NEXT: srw 0, 0, 1243; CHECK-NEXT: srw 12, 8, 1244; CHECK-NEXT: slw 11, 11, 1045; CHECK-NEXT: slw 8, 8, 1046; CHECK-NEXT: stw 8, 12(3)47; CHECK-NEXT: or 8, 11, 1248; CHECK-NEXT: stw 8, 8(3)49; CHECK-NEXT: or 8, 9, 050; CHECK-NEXT: stw 8, 0(3)51; CHECK-NEXT: or 8, 29, 3052; CHECK-NEXT: stw 8, 4(3)53; CHECK-NEXT: bdnz .LBB0_154; CHECK-NEXT: # %bb.2: # %for.end55; CHECK-NEXT: lwz 30, 56(1) # 4-byte Folded Reload56; CHECK-NEXT: lwz 29, 52(1) # 4-byte Folded Reload57; CHECK-NEXT: addi 1, 1, 6458; CHECK-NEXT: blr59entry:60 br label %for.body61 62for.body: ; preds = %for.body, %entry63 %i.02 = phi i32 [ 0, %entry ], [ %inc, %for.body ]64 %0 = load i128, ptr %b, align 1665 %1 = load i128, ptr %c, align 1666 %shl = shl i128 %0, %167 store i128 %shl, ptr %a, align 1668 %inc = add nsw i32 %i.02, 169 %exitcond = icmp eq i32 %inc, 204870 br i1 %exitcond, label %for.end, label %for.body71 72for.end: ; preds = %for.body73 ret void74}75 76; Function Attrs: nounwind77define void @foo2(ptr %a, ptr readonly %b, ptr readonly %c) #0 {78; CHECK-LABEL: foo2:79; CHECK: # %bb.0: # %entry80; CHECK-NEXT: stwu 1, -48(1)81; CHECK-NEXT: stw 30, 40(1) # 4-byte Folded Spill82; CHECK-NEXT: li 6, 204883; CHECK-NEXT: mtctr 684; CHECK-NEXT: addi 6, 1, 2485; CHECK-NEXT: .LBB1_1: # %for.body86; CHECK-NEXT: #87; CHECK-NEXT: lwz 7, 0(4)88; CHECK-NEXT: lwz 8, 4(4)89; CHECK-NEXT: lwz 11, 12(5)90; CHECK-NEXT: lwz 9, 8(4)91; CHECK-NEXT: lwz 10, 12(4)92; CHECK-NEXT: stw 8, 28(1)93; CHECK-NEXT: rlwinm 8, 11, 29, 28, 2994; CHECK-NEXT: stw 7, 24(1)95; CHECK-NEXT: srawi 7, 7, 3196; CHECK-NEXT: stw 10, 36(1)97; CHECK-NEXT: clrlwi 10, 11, 2798; CHECK-NEXT: stw 9, 32(1)99; CHECK-NEXT: subfic 12, 10, 32100; CHECK-NEXT: stw 7, 20(1)101; CHECK-NEXT: stw 7, 16(1)102; CHECK-NEXT: stw 7, 12(1)103; CHECK-NEXT: stw 7, 8(1)104; CHECK-NEXT: sub 7, 6, 8105; CHECK-NEXT: lwz 8, 4(7)106; CHECK-NEXT: lwz 9, 0(7)107; CHECK-NEXT: lwz 11, 12(7)108; CHECK-NEXT: srw 0, 8, 10109; CHECK-NEXT: lwz 7, 8(7)110; CHECK-NEXT: slw 30, 9, 12111; CHECK-NEXT: slw 8, 8, 12112; CHECK-NEXT: srw 11, 11, 10113; CHECK-NEXT: slw 12, 7, 12114; CHECK-NEXT: srw 7, 7, 10115; CHECK-NEXT: or 7, 8, 7116; CHECK-NEXT: stw 7, 8(3)117; CHECK-NEXT: or 7, 12, 11118; CHECK-NEXT: sraw 9, 9, 10119; CHECK-NEXT: stw 7, 12(3)120; CHECK-NEXT: or 7, 30, 0121; CHECK-NEXT: stw 9, 0(3)122; CHECK-NEXT: stw 7, 4(3)123; CHECK-NEXT: bdnz .LBB1_1124; CHECK-NEXT: # %bb.2: # %for.end125; CHECK-NEXT: lwz 30, 40(1) # 4-byte Folded Reload126; CHECK-NEXT: addi 1, 1, 48127; CHECK-NEXT: blr128entry:129 br label %for.body130 131for.body: ; preds = %for.body, %entry132 %i.02 = phi i32 [ 0, %entry ], [ %inc, %for.body ]133 %0 = load i128, ptr %b, align 16134 %1 = load i128, ptr %c, align 16135 %shl = ashr i128 %0, %1136 store i128 %shl, ptr %a, align 16137 %inc = add nsw i32 %i.02, 1138 %exitcond = icmp eq i32 %inc, 2048139 br i1 %exitcond, label %for.end, label %for.body140 141for.end: ; preds = %for.body142 ret void143}144 145; Function Attrs: nounwind146define void @foo3(ptr %a, ptr readonly %b, ptr readonly %c) #0 {147; CHECK-LABEL: foo3:148; CHECK: # %bb.0: # %entry149; CHECK-NEXT: stwu 1, -64(1)150; CHECK-NEXT: stw 29, 52(1) # 4-byte Folded Spill151; CHECK-NEXT: li 7, 2048152; CHECK-NEXT: stw 30, 56(1) # 4-byte Folded Spill153; CHECK-NEXT: li 6, 0154; CHECK-NEXT: mtctr 7155; CHECK-NEXT: addi 7, 1, 32156; CHECK-NEXT: .LBB2_1: # %for.body157; CHECK-NEXT: #158; CHECK-NEXT: lwz 8, 0(4)159; CHECK-NEXT: lwz 12, 12(5)160; CHECK-NEXT: lwz 9, 4(4)161; CHECK-NEXT: lwz 10, 8(4)162; CHECK-NEXT: lwz 11, 12(4)163; CHECK-NEXT: stw 8, 32(1)164; CHECK-NEXT: rlwinm 8, 12, 29, 28, 29165; CHECK-NEXT: stw 6, 28(1)166; CHECK-NEXT: sub 8, 7, 8167; CHECK-NEXT: stw 6, 24(1)168; CHECK-NEXT: stw 6, 20(1)169; CHECK-NEXT: stw 6, 16(1)170; CHECK-NEXT: stw 11, 44(1)171; CHECK-NEXT: clrlwi 11, 12, 27172; CHECK-NEXT: stw 10, 40(1)173; CHECK-NEXT: subfic 0, 11, 32174; CHECK-NEXT: stw 9, 36(1)175; CHECK-NEXT: lwz 9, 4(8)176; CHECK-NEXT: lwz 10, 0(8)177; CHECK-NEXT: lwz 12, 12(8)178; CHECK-NEXT: srw 30, 9, 11179; CHECK-NEXT: lwz 8, 8(8)180; CHECK-NEXT: slw 29, 10, 0181; CHECK-NEXT: slw 9, 9, 0182; CHECK-NEXT: srw 12, 12, 11183; CHECK-NEXT: slw 0, 8, 0184; CHECK-NEXT: srw 8, 8, 11185; CHECK-NEXT: or 8, 9, 8186; CHECK-NEXT: stw 8, 8(3)187; CHECK-NEXT: or 8, 0, 12188; CHECK-NEXT: srw 10, 10, 11189; CHECK-NEXT: stw 8, 12(3)190; CHECK-NEXT: or 8, 29, 30191; CHECK-NEXT: stw 10, 0(3)192; CHECK-NEXT: stw 8, 4(3)193; CHECK-NEXT: bdnz .LBB2_1194; CHECK-NEXT: # %bb.2: # %for.end195; CHECK-NEXT: lwz 30, 56(1) # 4-byte Folded Reload196; CHECK-NEXT: lwz 29, 52(1) # 4-byte Folded Reload197; CHECK-NEXT: addi 1, 1, 64198; CHECK-NEXT: blr199entry:200 br label %for.body201 202for.body: ; preds = %for.body, %entry203 %i.02 = phi i32 [ 0, %entry ], [ %inc, %for.body ]204 %0 = load i128, ptr %b, align 16205 %1 = load i128, ptr %c, align 16206 %shl = lshr i128 %0, %1207 store i128 %shl, ptr %a, align 16208 %inc = add nsw i32 %i.02, 1209 %exitcond = icmp eq i32 %inc, 2048210 br i1 %exitcond, label %for.end, label %for.body211 212for.end: ; preds = %for.body213 ret void214}215 216attributes #0 = { nounwind }217 218