1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=pwr8 -mtriple=powerpc64le-unknown-linux-gnu -O3 < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; 3*9880d681SAndroid Build Coastguard Worker; This is a regression test based on https://llvm.org/bugs/show_bug.cgi?id=27735 4*9880d681SAndroid Build Coastguard Worker; 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker@G1 = global <2 x double> <double 2.0, double -10.0> 7*9880d681SAndroid Build Coastguard Worker@G2 = global <2 x double> <double 3.0, double 4.0> 8*9880d681SAndroid Build Coastguard Worker@G3 = global <2 x double> <double 5.0, double 6.0> 9*9880d681SAndroid Build Coastguard Worker@G4 = global <2 x double> <double 7.0, double 8.0> 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @zg 12*9880d681SAndroid Build Coastguard Worker; CHECK: xxspltd 13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xxspltd 14*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xxswapd 15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xvmuldp 16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xvmuldp 17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xvsubdp 18*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xvadddp 19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xxpermdi 20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xvsubdp 21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xxswapd 22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: stxvd2x 23*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: blr 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline 26*9880d681SAndroid Build Coastguard Workerdefine void @zg(i8* %.G0011_640.0, i8* %.G0012_642.0, <2 x double>* %JJ, <2 x double>* %.ka0000_391, double %.unpack, double %.unpack66) #0 { 27*9880d681SAndroid Build Coastguard WorkerL.JA291: 28*9880d681SAndroid Build Coastguard Worker %Z.L.JA291.2 = load <2 x double>, <2 x double>* %.ka0000_391, align 16 29*9880d681SAndroid Build Coastguard Worker store <2 x double> %Z.L.JA291.2, <2 x double>* %JJ, align 8 30*9880d681SAndroid Build Coastguard Worker %Z.L.JA291.3 = bitcast i8* %.G0012_642.0 to <2 x double>* 31*9880d681SAndroid Build Coastguard Worker %Z.L.JA291.4 = load <2 x double>, <2 x double>* %Z.L.JA291.3, align 1 32*9880d681SAndroid Build Coastguard Worker %.elt136 = bitcast i8* %.G0011_640.0 to double* 33*9880d681SAndroid Build Coastguard Worker %.unpack137 = load double, double* %.elt136, align 1 34*9880d681SAndroid Build Coastguard Worker %.elt138 = getelementptr inbounds i8, i8* %.G0011_640.0, i64 8 35*9880d681SAndroid Build Coastguard Worker %Z.L.JA291.5 = bitcast i8* %.elt138 to double* 36*9880d681SAndroid Build Coastguard Worker %.unpack139 = load double, double* %Z.L.JA291.5, align 1 37*9880d681SAndroid Build Coastguard Worker %Z.L.JA291.6 = insertelement <2 x double> undef, double %.unpack137, i32 0 38*9880d681SAndroid Build Coastguard Worker %Z.L.JA291.7 = insertelement <2 x double> %Z.L.JA291.6, double %.unpack137, i32 1 39*9880d681SAndroid Build Coastguard Worker %Z.L.JA291.8 = fmul <2 x double> %Z.L.JA291.2, %Z.L.JA291.7 40*9880d681SAndroid Build Coastguard Worker %Z.L.JA291.9 = shufflevector <2 x double> %Z.L.JA291.2, <2 x double> undef, <2 x i32> <i32 1, i32 0> 41*9880d681SAndroid Build Coastguard Worker %Z.L.JA291.10 = insertelement <2 x double> undef, double %.unpack139, i32 0 42*9880d681SAndroid Build Coastguard Worker %Z.L.JA291.11 = insertelement <2 x double> %Z.L.JA291.10, double %.unpack139, i32 1 43*9880d681SAndroid Build Coastguard Worker %Z.L.JA291.12 = fmul <2 x double> %Z.L.JA291.9, %Z.L.JA291.11 44*9880d681SAndroid Build Coastguard Worker %Z.L.JA291.13 = fsub <2 x double> %Z.L.JA291.8, %Z.L.JA291.12 45*9880d681SAndroid Build Coastguard Worker %Z.L.JA291.14 = fadd <2 x double> %Z.L.JA291.8, %Z.L.JA291.12 46*9880d681SAndroid Build Coastguard Worker %Z.L.JA291.15 = shufflevector <2 x double> %Z.L.JA291.13, <2 x double> %Z.L.JA291.14, <2 x i32> <i32 0, i32 3> 47*9880d681SAndroid Build Coastguard Worker %Z.L.JA291.16 = fsub <2 x double> %Z.L.JA291.4, %Z.L.JA291.15 48*9880d681SAndroid Build Coastguard Worker %Z.L.JA291.17 = bitcast i8* %.G0012_642.0 to <2 x double>* 49*9880d681SAndroid Build Coastguard Worker store <2 x double> %Z.L.JA291.16, <2 x double>* %Z.L.JA291.17, align 8 50*9880d681SAndroid Build Coastguard Worker %.. = bitcast <2 x double>* %JJ to i32* 51*9880d681SAndroid Build Coastguard Worker %.pre = load i32, i32* %.., align 32 52*9880d681SAndroid Build Coastguard Worker ret void 53*9880d681SAndroid Build Coastguard Worker} 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Workerattributes #0 = { noinline }