xref: /llvm-project/llvm/test/CodeGen/PowerPC/build-vector-to-ld-chain.ll (revision cb3f415cd2019df7d14683842198bc4b7a492bc5)
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