1 ; RUN: llc -mcpu=pwr8 -mtriple=powerpc64le-unknown-linux-gnu -O3 < %s | FileCheck %s 2 3 ; This test verifies that VSX swap optimization works when an implicit 4 ; subregister is present (in this case, in the XXPERMDI associated with 5 ; the store). 6 7 define void @bar() { 8 entry: 9 %x = alloca <2 x i64>, align 16 10 %0 = bitcast <2 x i64>* %x to i8* 11 call void @llvm.lifetime.start(i64 16, i8* %0) 12 %arrayidx = getelementptr inbounds <2 x i64>, <2 x i64>* %x, i64 0, i64 0 13 store <2 x i64> <i64 0, i64 1>, <2 x i64>* %x, align 16 14 call void @foo(i64* %arrayidx) 15 call void @llvm.lifetime.end(i64 16, i8* %0) 16 ret void 17 } 18 19 ; CHECK-LABEL: @bar 20 ; CHECK: lxvd2x 21 ; CHECK: stxvd2x 22 ; CHECK-NOT: xxswapd 23 24 declare void @llvm.lifetime.start(i64, i8* nocapture) 25 declare void @foo(i64*) 26 declare void @llvm.lifetime.end(i64, i8* nocapture) 27 28