| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
| ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-- -mcpu=pwr8 < %s | \ |
| ; RUN: FileCheck %s |
| |
| %0 = type <{ %1, ptr, i32, [4 x i8] }> |
| %1 = type { %2 } |
| %2 = type { %3 } |
| %3 = type { ptr, ptr, ptr } |
| |
| $testfunc = comdat any |
| |
| declare void @_ZdlPv() local_unnamed_addr #0 |
| |
| define void @testfunc(i64 %arg) local_unnamed_addr #0 comdat { |
| ; CHECK-LABEL: testfunc: |
| ; CHECK: # %bb.0: # %bb |
| ; CHECK-NEXT: mflr 0 |
| ; CHECK-NEXT: stdu 1, -80(1) |
| ; CHECK-NEXT: std 0, 96(1) |
| ; CHECK-NEXT: .cfi_def_cfa_offset 80 |
| ; CHECK-NEXT: .cfi_offset lr, 16 |
| ; CHECK-NEXT: .cfi_offset v30, -32 |
| ; CHECK-NEXT: .cfi_offset v31, -16 |
| ; CHECK-NEXT: li 4, 48 |
| ; CHECK-NEXT: addi 3, 3, 24 |
| ; CHECK-NEXT: stvx 30, 1, 4 # 16-byte Folded Spill |
| ; CHECK-NEXT: li 4, 64 |
| ; CHECK-NEXT: stvx 31, 1, 4 # 16-byte Folded Spill |
| ; CHECK-NEXT: lxvd2x 63, 0, 3 |
| ; CHECK-NEXT: xxswapd 62, 63 |
| ; CHECK-NEXT: bc 12, 20, .LBB0_2 |
| ; CHECK-NEXT: # %bb.1: # %bb37 |
| ; CHECK-NEXT: bl _ZdlPv |
| ; CHECK-NEXT: nop |
| ; CHECK-NEXT: .LBB0_2: # %bb38 |
| ; CHECK-NEXT: stxsiwx 62, 0, 3 |
| ; CHECK-NEXT: stxsdx 63, 0, 3 |
| ; CHECK-NEXT: li 3, 64 |
| ; CHECK-NEXT: lvx 31, 1, 3 # 16-byte Folded Reload |
| ; CHECK-NEXT: li 3, 48 |
| ; CHECK-NEXT: lvx 30, 1, 3 # 16-byte Folded Reload |
| ; CHECK-NEXT: addi 1, 1, 80 |
| ; CHECK-NEXT: ld 0, 16(1) |
| ; CHECK-NEXT: mtlr 0 |
| ; CHECK-NEXT: blr |
| bb: |
| %i = inttoptr i64 %arg to ptr |
| %i6 = getelementptr inbounds %0, ptr %i, i64 0, i32 1 |
| %i7 = load <12 x i8>, ptr %i6, align 8 |
| br i1 poison, label %bb38, label %bb37 |
| |
| bb37: ; preds = %bb |
| tail call void @_ZdlPv() #1 |
| br label %bb38 |
| |
| bb38: ; preds = %bb37, %bb |
| store <12 x i8> %i7, ptr poison, align 8 |
| ret void |
| } |