1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mcpu=pwr8 -verify-machineinstrs -ppc-vsr-nums-as-vr \ 3; RUN: -ppc-asm-full-reg-names -mtriple=powerpc64-ibm-aix-xcoff < %s | \ 4; RUN: FileCheck %s --check-prefix=AIX-P8-64 5; RUN: llc -mcpu=pwr8 -verify-machineinstrs -ppc-vsr-nums-as-vr \ 6; RUN: -ppc-asm-full-reg-names -mtriple=powerpc-ibm-aix-xcoff < %s | \ 7; RUN: FileCheck %s --check-prefix=AIX-P8-32 8; RUN: llc -mcpu=pwr9 -verify-machineinstrs -ppc-vsr-nums-as-vr \ 9; RUN: -ppc-asm-full-reg-names -mtriple=powerpc64-ibm-aix-xcoff < %s | \ 10; RUN: FileCheck %s --check-prefix=AIX-P9-64 11; RUN: llc -mcpu=pwr9 -verify-machineinstrs -ppc-vsr-nums-as-vr \ 12; RUN: -ppc-asm-full-reg-names -mtriple=powerpc-ibm-aix-xcoff < %s | \ 13; RUN: FileCheck %s --check-prefix=AIX-P9-32 14 15%d8 = type <8 x double> 16%f1 = type <1 x float> 17%f2 = type <2 x float> 18%f4 = type <4 x float> 19%f8 = type <8 x float> 20%i4 = type <4 x i32> 21 22define void @test_f2(%f2* %P, %f2* %Q, %f2* %S) { 23; AIX-P8-64-LABEL: test_f2: 24; AIX-P8-64: # %bb.0: 25; AIX-P8-64-NEXT: lfdx f0, 0, r3 26; AIX-P8-64-NEXT: lfdx f1, 0, r4 27; AIX-P8-64-NEXT: xvaddsp vs0, vs0, vs1 28; AIX-P8-64-NEXT: stfdx f0, 0, r5 29; AIX-P8-64-NEXT: blr 30; 31; AIX-P8-32-LABEL: test_f2: 32; AIX-P8-32: # %bb.0: 33; AIX-P8-32-NEXT: lwz r6, L..C0(r2) # %const.0 34; AIX-P8-32-NEXT: li r7, 4 35; AIX-P8-32-NEXT: lxsiwzx v3, 0, r3 36; AIX-P8-32-NEXT: lxsiwzx v0, 0, r4 37; AIX-P8-32-NEXT: lxsiwzx v2, r3, r7 38; AIX-P8-32-NEXT: lxsiwzx v5, r4, r7 39; AIX-P8-32-NEXT: lxvw4x v4, 0, r6 40; AIX-P8-32-NEXT: vperm v2, v3, v2, v4 41; AIX-P8-32-NEXT: vperm v3, v0, v5, v4 42; AIX-P8-32-NEXT: xvaddsp vs0, v2, v3 43; AIX-P8-32-NEXT: xxsldwi vs1, vs0, vs0, 1 44; AIX-P8-32-NEXT: xscvspdpn f0, vs0 45; AIX-P8-32-NEXT: xscvspdpn f1, vs1 46; AIX-P8-32-NEXT: stfs f0, 0(r5) 47; AIX-P8-32-NEXT: stfs f1, 4(r5) 48; AIX-P8-32-NEXT: blr 49; 50; AIX-P9-64-LABEL: test_f2: 51; AIX-P9-64: # %bb.0: 52; AIX-P9-64-NEXT: lfd f0, 0(r3) 53; AIX-P9-64-NEXT: lfd f1, 0(r4) 54; AIX-P9-64-NEXT: xvaddsp vs0, vs0, vs1 55; AIX-P9-64-NEXT: stfd f0, 0(r5) 56; AIX-P9-64-NEXT: blr 57; 58; AIX-P9-32-LABEL: test_f2: 59; AIX-P9-32: # %bb.0: 60; AIX-P9-32-NEXT: lfiwzx f0, 0, r3 61; AIX-P9-32-NEXT: lwz r3, 4(r3) 62; AIX-P9-32-NEXT: xxsldwi vs0, f0, f0, 1 63; AIX-P9-32-NEXT: mtfprwz f1, r3 64; AIX-P9-32-NEXT: lwz r3, 4(r4) 65; AIX-P9-32-NEXT: xxinsertw vs0, vs1, 4 66; AIX-P9-32-NEXT: lfiwzx f1, 0, r4 67; AIX-P9-32-NEXT: mtfprwz f2, r3 68; AIX-P9-32-NEXT: xxsldwi vs1, f1, f1, 1 69; AIX-P9-32-NEXT: xxinsertw vs1, vs2, 4 70; AIX-P9-32-NEXT: xvaddsp vs0, vs0, vs1 71; AIX-P9-32-NEXT: xscvspdpn f1, vs0 72; AIX-P9-32-NEXT: xxsldwi vs0, vs0, vs0, 1 73; AIX-P9-32-NEXT: xscvspdpn f0, vs0 74; AIX-P9-32-NEXT: stfs f1, 0(r5) 75; AIX-P9-32-NEXT: stfs f0, 4(r5) 76; AIX-P9-32-NEXT: blr 77 %p = load %f2, %f2* %P 78 %q = load %f2, %f2* %Q 79 %R = fadd %f2 %p, %q 80 store %f2 %R, %f2* %S 81 ret void 82} 83 84