; 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)