155 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \3; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \4; RUN: FileCheck %s5; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \6; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \7; RUN: FileCheck %s --check-prefix=CHECK-BE8 9%96 = type <{ i32 }>10%97 = type <{ i32 }>11%98 = type <{ i32 }>12%100 = type <{ i8, i8, i8, i8, i32, i64, i64, [1 x i64], [1 x i64], [1 x i64] }>13%101 = type <{ i8, i8, i8, i8, i32, i64, i64, [1 x i64], [1 x i64], [1 x i64], [24 x i8] }>14%102 = type <{ i8, i8, i8, i8, i32, i64, i64, [1 x i64], [1 x i64], [1 x i64] }>15%103 = type <{ ptr, i8, i8, i8, i8, [4 x i8], i32, [12 x i8], i32, [4 x i8] }>16%104 = type <{ i32 }>17%105 = type <{ i32 }>18%106 = type <{ i32 }>19 20; Function Attrs: nobuiltin norecurse21define dso_local signext i32 @test_FI_elim(ptr noalias nocapture dereferenceable(40) %arg, ptr noalias nocapture nonnull readonly %arg2, ptr noalias nocapture nonnull readonly %arg3, ptr noalias nocapture nonnull readonly %arg4, ptr noalias nocapture dereferenceable(48) %arg6, ptr noalias nocapture dereferenceable(72) %arg7) local_unnamed_addr #2 {22; CHECK-LABEL: test_FI_elim:23; CHECK: # %bb.0: # %bb24; CHECK-NEXT: mflr r025; CHECK-NEXT: std r0, 16(r1)26; CHECK-NEXT: stdu r1, -80(r1)27; CHECK-NEXT: .cfi_def_cfa_offset 8028; CHECK-NEXT: .cfi_offset lr, 1629; CHECK-NEXT: lxv v2, 0(r3)30; CHECK-NEXT: mr r9, r631; CHECK-NEXT: mr r6, r532; CHECK-NEXT: li r12, -12733; CHECK-NEXT: li r0, 434; CHECK-NEXT: stb r12, 0(r3)35; CHECK-NEXT: li r2, 136; CHECK-NEXT: std r0, 0(r3)37; CHECK-NEXT: stw r2, 0(r3)38; CHECK-NEXT: li r11, 339; CHECK-NEXT: stb r11, 0(0)40; CHECK-NEXT: mfvsrd r5, v241; CHECK-NEXT: vaddudm v3, v2, v242; CHECK-NEXT: pstxv v2, 64(r1), 043; CHECK-NEXT: neg r5, r544; CHECK-NEXT: mfvsrd r10, v345; CHECK-NEXT: std r5, 0(r3)46; CHECK-NEXT: lbz r5, 2(r7)47; CHECK-NEXT: stb r11, 0(r3)48; CHECK-NEXT: stb r12, 0(r3)49; CHECK-NEXT: std r2, 0(r3)50; CHECK-NEXT: mr r7, r951; CHECK-NEXT: neg r10, r1052; CHECK-NEXT: rlwinm r5, r5, 0, 27, 2753; CHECK-NEXT: stb r5, 0(0)54; CHECK-NEXT: lbz r5, 2(r8)55; CHECK-NEXT: rlwinm r5, r5, 0, 27, 2756; CHECK-NEXT: stb r5, 0(r3)57; CHECK-NEXT: li r5, 258; CHECK-NEXT: std r0, 0(r3)59; CHECK-NEXT: stw r5, 0(r3)60; CHECK-NEXT: mr r5, r461; CHECK-NEXT: std r10, 0(r3)62; CHECK-NEXT: bl foo@notoc63; CHECK-NEXT: extsw r3, r364; CHECK-NEXT: addi r1, r1, 8065; CHECK-NEXT: ld r0, 16(r1)66; CHECK-NEXT: mtlr r067; CHECK-NEXT: blr68;69; CHECK-BE-LABEL: test_FI_elim:70; CHECK-BE: # %bb.0: # %bb71; CHECK-BE-NEXT: mflr r072; CHECK-BE-NEXT: std r0, 16(r1)73; CHECK-BE-NEXT: stdu r1, -176(r1)74; CHECK-BE-NEXT: .cfi_def_cfa_offset 17675; CHECK-BE-NEXT: .cfi_offset lr, 1676; CHECK-BE-NEXT: .cfi_offset r30, -1677; CHECK-BE-NEXT: lxv v2, 0(r3)78; CHECK-BE-NEXT: mr r9, r679; CHECK-BE-NEXT: mr r6, r580; CHECK-BE-NEXT: std r30, 160(r1) # 8-byte Folded Spill81; CHECK-BE-NEXT: li r12, -12782; CHECK-BE-NEXT: li r0, 483; CHECK-BE-NEXT: stb r12, 0(r3)84; CHECK-BE-NEXT: li r30, 185; CHECK-BE-NEXT: std r0, 0(r3)86; CHECK-BE-NEXT: stw r30, 0(r3)87; CHECK-BE-NEXT: li r11, 388; CHECK-BE-NEXT: stb r11, 0(0)89; CHECK-BE-NEXT: mfvsrld r5, v290; CHECK-BE-NEXT: vaddudm v3, v2, v291; CHECK-BE-NEXT: pstxv v2, 144(r1), 092; CHECK-BE-NEXT: mfvsrld r10, v393; CHECK-BE-NEXT: neg r5, r594; CHECK-BE-NEXT: std r5, 0(r3)95; CHECK-BE-NEXT: lbz r5, 2(r7)96; CHECK-BE-NEXT: stb r11, 0(r3)97; CHECK-BE-NEXT: stb r12, 0(r3)98; CHECK-BE-NEXT: std r30, 0(r3)99; CHECK-BE-NEXT: mr r7, r9100; CHECK-BE-NEXT: neg r10, r10101; CHECK-BE-NEXT: rlwinm r5, r5, 0, 27, 27102; CHECK-BE-NEXT: stb r5, 0(0)103; CHECK-BE-NEXT: lbz r5, 2(r8)104; CHECK-BE-NEXT: rlwinm r5, r5, 0, 27, 27105; CHECK-BE-NEXT: stb r5, 0(r3)106; CHECK-BE-NEXT: li r5, 2107; CHECK-BE-NEXT: std r0, 0(r3)108; CHECK-BE-NEXT: stw r5, 0(r3)109; CHECK-BE-NEXT: mr r5, r4110; CHECK-BE-NEXT: std r10, 0(r3)111; CHECK-BE-NEXT: bl foo112; CHECK-BE-NEXT: nop113; CHECK-BE-NEXT: ld r30, 160(r1) # 8-byte Folded Reload114; CHECK-BE-NEXT: extsw r3, r3115; CHECK-BE-NEXT: addi r1, r1, 176116; CHECK-BE-NEXT: ld r0, 16(r1)117; CHECK-BE-NEXT: mtlr r0118; CHECK-BE-NEXT: blr119bb:120 %i = alloca %102, align 8121 %i8 = load <2 x i64>, ptr undef, align 8122 %i9 = extractelement <2 x i64> %i8, i32 1123 %i10 = sub i64 0, %i9124 %i11 = load <2 x i64>, ptr undef, align 8125 %i12 = load <2 x i64>, ptr undef, align 8126 %i13 = add nsw <2 x i64> %i11, %i12127 %i14 = extractelement <2 x i64> %i13, i32 1128 %i15 = sub i64 0, %i14129 store i8 3, ptr null, align 8130 store i8 -127, ptr undef, align 1131 store i64 4, ptr undef, align 8132 store i32 1, ptr undef, align 4133 %i16 = getelementptr inbounds %102, ptr %i, i64 0, i32 8, i64 0134 store <2 x i64> %i8, ptr %i16, align 8135 store i64 %i10, ptr undef, align 8136 store i8 3, ptr undef, align 8137 %i18 = getelementptr inbounds %100, ptr %arg6, i64 0, i32 2138 %i19 = load i8, ptr %i18, align 1139 %i20 = and i8 %i19, 16140 store i8 %i20, ptr null, align 2141 store i8 -127, ptr undef, align 1142 store i64 1, ptr undef, align 8143 %i21 = getelementptr inbounds %101, ptr %arg7, i64 0, i32 2144 %i22 = load i8, ptr %i21, align 1145 %i23 = and i8 %i22, 16146 store i8 %i23, ptr undef, align 2147 store i64 4, ptr undef, align 8148 store i32 2, ptr undef, align 4149 store i64 %i15, ptr undef, align 8150 %i28 = call i32 @foo(ptr nonnull %arg, ptr nonnull undef, ptr %arg2, ptr %arg3, ptr %arg4)151 ret i32 %i28152}153 154declare dso_local i32 @foo(ptr, ptr, ptr, ptr, ptr) local_unnamed_addr #1155