1*cb3f415cSNemanja Ivanovic; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*cb3f415cSNemanja Ivanovic; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-- -mcpu=pwr8 < %s | \ 3*cb3f415cSNemanja Ivanovic; RUN: FileCheck %s 4*cb3f415cSNemanja Ivanovic 5*cb3f415cSNemanja Ivanovic%0 = type <{ %1, ptr, i32, [4 x i8] }> 6*cb3f415cSNemanja Ivanovic%1 = type { %2 } 7*cb3f415cSNemanja Ivanovic%2 = type { %3 } 8*cb3f415cSNemanja Ivanovic%3 = type { ptr, ptr, ptr } 9*cb3f415cSNemanja Ivanovic 10*cb3f415cSNemanja Ivanovic$testfunc = comdat any 11*cb3f415cSNemanja Ivanovic 12*cb3f415cSNemanja Ivanovicdeclare void @_ZdlPv() local_unnamed_addr #0 13*cb3f415cSNemanja Ivanovic 14*cb3f415cSNemanja Ivanovicdefine void @testfunc(i64 %arg) local_unnamed_addr #0 comdat { 15*cb3f415cSNemanja Ivanovic; CHECK-LABEL: testfunc: 16*cb3f415cSNemanja Ivanovic; CHECK: # %bb.0: # %bb 17*cb3f415cSNemanja Ivanovic; CHECK-NEXT: mflr 0 18*cb3f415cSNemanja Ivanovic; CHECK-NEXT: stdu 1, -80(1) 19*cb3f415cSNemanja Ivanovic; CHECK-NEXT: std 0, 96(1) 20*cb3f415cSNemanja Ivanovic; CHECK-NEXT: .cfi_def_cfa_offset 80 21*cb3f415cSNemanja Ivanovic; CHECK-NEXT: .cfi_offset lr, 16 22*cb3f415cSNemanja Ivanovic; CHECK-NEXT: .cfi_offset v30, -32 23*cb3f415cSNemanja Ivanovic; CHECK-NEXT: .cfi_offset v31, -16 24*cb3f415cSNemanja Ivanovic; CHECK-NEXT: li 4, 48 25*cb3f415cSNemanja Ivanovic; CHECK-NEXT: addi 3, 3, 24 26*cb3f415cSNemanja Ivanovic; CHECK-NEXT: stvx 30, 1, 4 # 16-byte Folded Spill 27*cb3f415cSNemanja Ivanovic; CHECK-NEXT: li 4, 64 28*cb3f415cSNemanja Ivanovic; CHECK-NEXT: stvx 31, 1, 4 # 16-byte Folded Spill 29*cb3f415cSNemanja Ivanovic; CHECK-NEXT: lxvd2x 63, 0, 3 30*cb3f415cSNemanja Ivanovic; CHECK-NEXT: xxswapd 62, 63 31*cb3f415cSNemanja Ivanovic; CHECK-NEXT: bc 12, 20, .LBB0_2 32*cb3f415cSNemanja Ivanovic; CHECK-NEXT: # %bb.1: # %bb37 33*cb3f415cSNemanja Ivanovic; CHECK-NEXT: bl _ZdlPv 34*cb3f415cSNemanja Ivanovic; CHECK-NEXT: nop 35*cb3f415cSNemanja Ivanovic; CHECK-NEXT: .LBB0_2: # %bb38 36*cb3f415cSNemanja Ivanovic; CHECK-NEXT: stxsiwx 62, 0, 3 37*cb3f415cSNemanja Ivanovic; CHECK-NEXT: stxsdx 63, 0, 3 38*cb3f415cSNemanja Ivanovic; CHECK-NEXT: li 3, 64 39*cb3f415cSNemanja Ivanovic; CHECK-NEXT: lvx 31, 1, 3 # 16-byte Folded Reload 40*cb3f415cSNemanja Ivanovic; CHECK-NEXT: li 3, 48 41*cb3f415cSNemanja Ivanovic; CHECK-NEXT: lvx 30, 1, 3 # 16-byte Folded Reload 42*cb3f415cSNemanja Ivanovic; CHECK-NEXT: addi 1, 1, 80 43*cb3f415cSNemanja Ivanovic; CHECK-NEXT: ld 0, 16(1) 44*cb3f415cSNemanja Ivanovic; CHECK-NEXT: mtlr 0 45*cb3f415cSNemanja Ivanovic; CHECK-NEXT: blr 46*cb3f415cSNemanja Ivanovicbb: 47*cb3f415cSNemanja Ivanovic %i = inttoptr i64 %arg to ptr 48*cb3f415cSNemanja Ivanovic %i6 = getelementptr inbounds %0, ptr %i, i64 0, i32 1 49*cb3f415cSNemanja Ivanovic %i7 = load <12 x i8>, ptr %i6, align 8 50*cb3f415cSNemanja Ivanovic br i1 poison, label %bb38, label %bb37 51*cb3f415cSNemanja Ivanovic 52*cb3f415cSNemanja Ivanovicbb37: ; preds = %bb 53*cb3f415cSNemanja Ivanovic tail call void @_ZdlPv() #1 54*cb3f415cSNemanja Ivanovic br label %bb38 55*cb3f415cSNemanja Ivanovic 56*cb3f415cSNemanja Ivanovicbb38: ; preds = %bb37, %bb 57*cb3f415cSNemanja Ivanovic store <12 x i8> %i7, ptr poison, align 8 58*cb3f415cSNemanja Ivanovic ret void 59*cb3f415cSNemanja Ivanovic} 60