blob: 6fc3e07cb21f513bfac7b9a3b900d5857330153d [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
; RUN: llc -mtriple=ppc64le-unknown-linux-gnu < %s | FileCheck %s
; Make sure the loads happen after each call, not after both calls.
define i1 @test() nounwind {
; CHECK-LABEL: test:
; CHECK: # %bb.0:
; CHECK-NEXT: mflr 0
; CHECK-NEXT: stdu 1, -96(1)
; CHECK-NEXT: std 0, 112(1)
; CHECK-NEXT: std 30, 80(1) # 8-byte Folded Spill
; CHECK-NEXT: li 3, 64
; CHECK-NEXT: addi 30, 1, 48
; CHECK-NEXT: stxvd2x 63, 1, 3 # 16-byte Folded Spill
; CHECK-NEXT: mr 3, 30
; CHECK-NEXT: bl call
; CHECK-NEXT: nop
; CHECK-NEXT: lxvd2x 63, 0, 30
; CHECK-NEXT: mr 3, 30
; CHECK-NEXT: bl call
; CHECK-NEXT: nop
; CHECK-NEXT: lxvd2x 34, 0, 30
; CHECK-NEXT: li 4, 64
; CHECK-NEXT: ld 30, 80(1) # 8-byte Folded Reload
; CHECK-NEXT: vcmpequb. 2, 31, 2
; CHECK-NEXT: lxvd2x 63, 1, 4 # 16-byte Folded Reload
; CHECK-NEXT: mfocrf 3, 2
; CHECK-NEXT: rlwinm 3, 3, 25, 31, 31
; CHECK-NEXT: addi 1, 1, 96
; CHECK-NEXT: ld 0, 16(1)
; CHECK-NEXT: mtlr 0
; CHECK-NEXT: blr
%a1 = alloca [16 x i8], align 16
%a2 = alloca [16 x i8], align 16
call void @llvm.lifetime.start.p0(i64 16, ptr %a2)
call void @call(ptr %a2)
%l1 = load i128, ptr %a2, align 16
call void @llvm.lifetime.end.p0(i64 16, ptr %a2)
call void @llvm.lifetime.start.p0(i64 16, ptr %a1)
call void @call(ptr %a1)
%l2 = load i128, ptr %a1, align 16
call void @llvm.lifetime.end.p0(i64 16, ptr %a1)
%res = icmp eq i128 %l1, %l2
ret i1 %res
}
declare void @call(ptr)