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: lfs f0, 4(r3) 34; AIX-P8-32-NEXT: lfs f1, 0(r3) 35; AIX-P8-32-NEXT: lwz r6, L..C0(r2) # %const.0 36; AIX-P8-32-NEXT: lfs f2, 4(r4) 37; AIX-P8-32-NEXT: xscvdpspn v2, f0 38; AIX-P8-32-NEXT: lfs f0, 0(r4) 39; AIX-P8-32-NEXT: lxvw4x v0, 0, r6 40; AIX-P8-32-NEXT: xscvdpspn v3, f1 41; AIX-P8-32-NEXT: xscvdpspn v4, f2 42; AIX-P8-32-NEXT: xscvdpspn v5, f0 43; AIX-P8-32-NEXT: vperm v2, v3, v2, v0 44; AIX-P8-32-NEXT: vperm v3, v5, v4, v0 45; AIX-P8-32-NEXT: xvaddsp vs0, v2, v3 46; AIX-P8-32-NEXT: xxsldwi vs1, vs0, vs0, 1 47; AIX-P8-32-NEXT: xscvspdpn f0, vs0 48; AIX-P8-32-NEXT: xscvspdpn f1, vs1 49; AIX-P8-32-NEXT: stfs f0, 0(r5) 50; AIX-P8-32-NEXT: stfs f1, 4(r5) 51; AIX-P8-32-NEXT: blr 52; 53; AIX-P9-64-LABEL: test_f2: 54; AIX-P9-64: # %bb.0: 55; AIX-P9-64-NEXT: lfd f0, 0(r3) 56; AIX-P9-64-NEXT: lfd f1, 0(r4) 57; AIX-P9-64-NEXT: xvaddsp vs0, vs0, vs1 58; AIX-P9-64-NEXT: stfd f0, 0(r5) 59; AIX-P9-64-NEXT: blr 60; 61; AIX-P9-32-LABEL: test_f2: 62; AIX-P9-32: # %bb.0: 63; AIX-P9-32-NEXT: lfs f0, 0(r3) 64; AIX-P9-32-NEXT: lwz r3, 4(r3) 65; AIX-P9-32-NEXT: mtfprwz f1, r3 66; AIX-P9-32-NEXT: lwz r3, 4(r4) 67; AIX-P9-32-NEXT: xscvdpspn vs0, f0 68; AIX-P9-32-NEXT: mtfprwz f2, r3 69; AIX-P9-32-NEXT: xxinsertw vs0, vs1, 4 70; AIX-P9-32-NEXT: lfs f1, 0(r4) 71; AIX-P9-32-NEXT: xscvdpspn vs1, f1 72; AIX-P9-32-NEXT: xxinsertw vs1, vs2, 4 73; AIX-P9-32-NEXT: xvaddsp vs0, vs0, vs1 74; AIX-P9-32-NEXT: xscvspdpn f1, vs0 75; AIX-P9-32-NEXT: xxsldwi vs0, vs0, vs0, 1 76; AIX-P9-32-NEXT: xscvspdpn f0, vs0 77; AIX-P9-32-NEXT: stfs f1, 0(r5) 78; AIX-P9-32-NEXT: stfs f0, 4(r5) 79; AIX-P9-32-NEXT: blr 80 %p = load %f2, %f2* %P 81 %q = load %f2, %f2* %Q 82 %R = fadd %f2 %p, %q 83 store %f2 %R, %f2* %S 84 ret void 85} 86 87