1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mattr=+vsx -ppc-vsr-nums-as-vr \ 3; RUN: -ppc-asm-full-reg-names -mtriple=powerpc64le-unknown-linux-gnu < %s \ 4; RUN: | FileCheck %s 5 6; RUN: llc -verify-machineinstrs -mcpu=pwr9 -mattr=-power9-vector -ppc-vsr-nums-as-vr \ 7; RUN: -ppc-asm-full-reg-names -mtriple=powerpc64le-unknown-linux-gnu < %s \ 8; RUN: | FileCheck --check-prefix=CHECK-P9-VECTOR %s 9 10; RUN: llc -verify-machineinstrs -mcpu=pwr9 -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names \ 11; RUN: -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s \ 12; RUN: --check-prefix=CHECK-P9 --implicit-check-not xxswapd 13 14define <2 x double> @testi0(<2 x double>* %p1, double* %p2) { 15; CHECK-LABEL: testi0: 16; CHECK: # %bb.0: 17; CHECK-NEXT: lxvd2x vs0, 0, r3 18; CHECK-NEXT: lfdx f1, 0, r4 19; CHECK-NEXT: xxswapd vs0, vs0 20; CHECK-NEXT: xxspltd vs1, vs1, 0 21; CHECK-NEXT: xxpermdi v2, vs0, vs1, 1 22; CHECK-NEXT: blr 23; 24; CHECK-P9-VECTOR-LABEL: testi0: 25; CHECK-P9-VECTOR: # %bb.0: 26; CHECK-P9-VECTOR-NEXT: lxvd2x vs0, 0, r3 27; CHECK-P9-VECTOR-NEXT: lfdx f1, 0, r4 28; CHECK-P9-VECTOR-NEXT: xxspltd vs1, vs1, 0 29; CHECK-P9-VECTOR-NEXT: xxswapd vs0, vs0 30; CHECK-P9-VECTOR-NEXT: xxpermdi v2, vs0, vs1, 1 31; CHECK-P9-VECTOR-NEXT: blr 32; 33; CHECK-P9-LABEL: testi0: 34; CHECK-P9: # %bb.0: 35; CHECK-P9-NEXT: lfd f1, 0(r4) 36; CHECK-P9-NEXT: lxv vs0, 0(r3) 37; CHECK-P9-NEXT: xxswapd vs1, f1 38; CHECK-P9-NEXT: xxpermdi v2, vs0, vs1, 1 39; CHECK-P9-NEXT: blr 40 %v = load <2 x double>, <2 x double>* %p1 41 %s = load double, double* %p2 42 %r = insertelement <2 x double> %v, double %s, i32 0 43 ret <2 x double> %r 44 45 46} 47 48define <2 x double> @testi1(<2 x double>* %p1, double* %p2) { 49; CHECK-LABEL: testi1: 50; CHECK: # %bb.0: 51; CHECK-NEXT: lxvd2x vs0, 0, r3 52; CHECK-NEXT: lfdx f1, 0, r4 53; CHECK-NEXT: xxswapd vs0, vs0 54; CHECK-NEXT: xxspltd vs1, vs1, 0 55; CHECK-NEXT: xxmrgld v2, vs1, vs0 56; CHECK-NEXT: blr 57; 58; CHECK-P9-VECTOR-LABEL: testi1: 59; CHECK-P9-VECTOR: # %bb.0: 60; CHECK-P9-VECTOR-NEXT: lxvd2x vs0, 0, r3 61; CHECK-P9-VECTOR-NEXT: lfdx f1, 0, r4 62; CHECK-P9-VECTOR-NEXT: xxspltd vs1, vs1, 0 63; CHECK-P9-VECTOR-NEXT: xxswapd vs0, vs0 64; CHECK-P9-VECTOR-NEXT: xxmrgld v2, vs1, vs0 65; CHECK-P9-VECTOR-NEXT: blr 66; 67; CHECK-P9-LABEL: testi1: 68; CHECK-P9: # %bb.0: 69; CHECK-P9-NEXT: lfd f1, 0(r4) 70; CHECK-P9-NEXT: lxv vs0, 0(r3) 71; CHECK-P9-NEXT: xxswapd vs1, f1 72; CHECK-P9-NEXT: xxmrgld v2, vs1, vs0 73; CHECK-P9-NEXT: blr 74 %v = load <2 x double>, <2 x double>* %p1 75 %s = load double, double* %p2 76 %r = insertelement <2 x double> %v, double %s, i32 1 77 ret <2 x double> %r 78 79 80} 81 82define double @teste0(<2 x double>* %p1) { 83; CHECK-LABEL: teste0: 84; CHECK: # %bb.0: 85; CHECK-NEXT: lxvd2x vs1, 0, r3 86; CHECK-NEXT: # kill: def $f1 killed $f1 killed $vsl1 87; CHECK-NEXT: blr 88; 89; CHECK-P9-VECTOR-LABEL: teste0: 90; CHECK-P9-VECTOR: # %bb.0: 91; CHECK-P9-VECTOR-NEXT: lxvd2x vs1, 0, r3 92; CHECK-P9-VECTOR-NEXT: # kill: def $f1 killed $f1 killed $vsl1 93; CHECK-P9-VECTOR-NEXT: blr 94; 95; CHECK-P9-LABEL: teste0: 96; CHECK-P9: # %bb.0: 97; CHECK-P9-NEXT: lfd f1, 0(r3) 98; CHECK-P9-NEXT: blr 99 %v = load <2 x double>, <2 x double>* %p1 100 %r = extractelement <2 x double> %v, i32 0 101 ret double %r 102 103 104} 105 106define double @teste1(<2 x double>* %p1) { 107; CHECK-LABEL: teste1: 108; CHECK: # %bb.0: 109; CHECK-NEXT: lxvd2x vs0, 0, r3 110; CHECK-NEXT: xxswapd vs1, vs0 111; CHECK-NEXT: # kill: def $f1 killed $f1 killed $vsl1 112; CHECK-NEXT: blr 113; 114; CHECK-P9-VECTOR-LABEL: teste1: 115; CHECK-P9-VECTOR: # %bb.0: 116; CHECK-P9-VECTOR-NEXT: lxvd2x vs0, 0, r3 117; CHECK-P9-VECTOR-NEXT: xxswapd vs1, vs0 118; CHECK-P9-VECTOR-NEXT: # kill: def $f1 killed $f1 killed $vsl1 119; CHECK-P9-VECTOR-NEXT: blr 120; 121; CHECK-P9-LABEL: teste1: 122; CHECK-P9: # %bb.0: 123; CHECK-P9-NEXT: lfd f1, 8(r3) 124; CHECK-P9-NEXT: blr 125 %v = load <2 x double>, <2 x double>* %p1 126 %r = extractelement <2 x double> %v, i32 1 127 ret double %r 128 129 130} 131