brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.1 KiB · 66c1b6f Raw
321 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mattr=+vsx \3; RUN:   -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s4 5; RUN: llc -verify-machineinstrs -mcpu=pwr9 -mattr=-power9-vector \6; RUN:   -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s7 8; RUN: llc -verify-machineinstrs -mcpu=pwr9 -mattr=+vsx \9; RUN:   -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s \10; RUN:   --check-prefix=CHECK-P9 --implicit-check-not xxswapd11 12define <2 x double> @test00(ptr %p1, ptr %p2) {13; CHECK-LABEL: test00:14; CHECK:       # %bb.0:15; CHECK-NEXT:    lxvdsx 34, 0, 316; CHECK-NEXT:    blr17;18; CHECK-P9-LABEL: test00:19; CHECK-P9:       # %bb.0:20; CHECK-P9-NEXT:    lxvdsx 34, 0, 321; CHECK-P9-NEXT:    blr22  %v1 = load <2 x double>, ptr %p123  %v2 = load <2 x double>, ptr %p224  %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 0, i32 0>25  ret <2 x double> %v326}27 28define <2 x double> @test01(ptr %p1, ptr %p2) {29; CHECK-LABEL: test01:30; CHECK:       # %bb.0:31; CHECK-NEXT:    lxvd2x 0, 0, 332; CHECK-NEXT:    xxswapd 34, 033; CHECK-NEXT:    blr34;35; CHECK-P9-LABEL: test01:36; CHECK-P9:       # %bb.0:37; CHECK-P9-NEXT:    lxv 34, 0(3)38; CHECK-P9-NEXT:    blr39  %v1 = load <2 x double>, ptr %p140  %v2 = load <2 x double>, ptr %p241  %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 0, i32 1>42  ret <2 x double> %v343}44 45define <2 x double> @test02(ptr %p1, ptr %p2) {46; CHECK-LABEL: test02:47; CHECK:       # %bb.0:48; CHECK-NEXT:    lxvd2x 0, 0, 349; CHECK-NEXT:    lxvd2x 1, 0, 450; CHECK-NEXT:    xxswapd 0, 051; CHECK-NEXT:    xxswapd 1, 152; CHECK-NEXT:    xxmrgld 34, 1, 053; CHECK-NEXT:    blr54;55; CHECK-P9-LABEL: test02:56; CHECK-P9:       # %bb.0:57; CHECK-P9-NEXT:    lxv 0, 0(3)58; CHECK-P9-NEXT:    lxv 1, 0(4)59; CHECK-P9-NEXT:    xxmrgld 34, 1, 060; CHECK-P9-NEXT:    blr61  %v1 = load <2 x double>, ptr %p162  %v2 = load <2 x double>, ptr %p263  %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 0, i32 2>64  ret <2 x double> %v365}66 67define <2 x double> @test03(ptr %p1, ptr %p2) {68; CHECK-LABEL: test03:69; CHECK:       # %bb.0:70; CHECK-NEXT:    lxvd2x 0, 0, 371; CHECK-NEXT:    lxvd2x 1, 0, 472; CHECK-NEXT:    xxswapd 0, 073; CHECK-NEXT:    xxswapd 1, 174; CHECK-NEXT:    xxpermdi 34, 1, 0, 175; CHECK-NEXT:    blr76;77; CHECK-P9-LABEL: test03:78; CHECK-P9:       # %bb.0:79; CHECK-P9-NEXT:    lxv 0, 0(3)80; CHECK-P9-NEXT:    lxv 1, 0(4)81; CHECK-P9-NEXT:    xxpermdi 34, 1, 0, 182; CHECK-P9-NEXT:    blr83  %v1 = load <2 x double>, ptr %p184  %v2 = load <2 x double>, ptr %p285  %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 0, i32 3>86  ret <2 x double> %v387}88 89define <2 x double> @test10(ptr %p1, ptr %p2) {90; CHECK-LABEL: test10:91; CHECK:       # %bb.0:92; CHECK-NEXT:    lxvd2x 34, 0, 393; CHECK-NEXT:    blr94;95; CHECK-P9-LABEL: test10:96; CHECK-P9:       # %bb.0:97; CHECK-P9-NEXT:    lxvd2x 34, 0, 398; CHECK-P9-NEXT:    blr99  %v1 = load <2 x double>, ptr %p1100  %v2 = load <2 x double>, ptr %p2101  %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 1, i32 0>102  ret <2 x double> %v3103}104 105define <2 x double> @test11(ptr %p1, ptr %p2) {106; CHECK-LABEL: test11:107; CHECK:       # %bb.0:108; CHECK-NEXT:    addi 3, 3, 8109; CHECK-NEXT:    lxvdsx 34, 0, 3110; CHECK-NEXT:    blr111;112; CHECK-P9-LABEL: test11:113; CHECK-P9:       # %bb.0:114; CHECK-P9-NEXT:    addi 3, 3, 8115; CHECK-P9-NEXT:    lxvdsx 34, 0, 3116; CHECK-P9-NEXT:    blr117  %v1 = load <2 x double>, ptr %p1118  %v2 = load <2 x double>, ptr %p2119  %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 1, i32 1>120  ret <2 x double> %v3121}122 123define <2 x double> @test12(ptr %p1, ptr %p2) {124; CHECK-LABEL: test12:125; CHECK:       # %bb.0:126; CHECK-NEXT:    lxvd2x 0, 0, 3127; CHECK-NEXT:    lxvd2x 1, 0, 4128; CHECK-NEXT:    xxswapd 0, 0129; CHECK-NEXT:    xxswapd 1, 1130; CHECK-NEXT:    xxpermdi 34, 1, 0, 2131; CHECK-NEXT:    blr132;133; CHECK-P9-LABEL: test12:134; CHECK-P9:       # %bb.0:135; CHECK-P9-NEXT:    lxv 0, 0(3)136; CHECK-P9-NEXT:    lxv 1, 0(4)137; CHECK-P9-NEXT:    xxpermdi 34, 1, 0, 2138; CHECK-P9-NEXT:    blr139  %v1 = load <2 x double>, ptr %p1140  %v2 = load <2 x double>, ptr %p2141  %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 1, i32 2>142  ret <2 x double> %v3143}144 145define <2 x double> @test13(ptr %p1, ptr %p2) {146; CHECK-LABEL: test13:147; CHECK:       # %bb.0:148; CHECK-NEXT:    lxvd2x 0, 0, 3149; CHECK-NEXT:    lxvd2x 1, 0, 4150; CHECK-NEXT:    xxswapd 0, 0151; CHECK-NEXT:    xxswapd 1, 1152; CHECK-NEXT:    xxmrghd 34, 1, 0153; CHECK-NEXT:    blr154;155; CHECK-P9-LABEL: test13:156; CHECK-P9:       # %bb.0:157; CHECK-P9-NEXT:    lxv 0, 0(3)158; CHECK-P9-NEXT:    lxv 1, 0(4)159; CHECK-P9-NEXT:    xxmrghd 34, 1, 0160; CHECK-P9-NEXT:    blr161  %v1 = load <2 x double>, ptr %p1162  %v2 = load <2 x double>, ptr %p2163  %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 1, i32 3>164  ret <2 x double> %v3165}166 167define <2 x double> @test20(ptr %p1, ptr %p2) {168; CHECK-LABEL: test20:169; CHECK:       # %bb.0:170; CHECK-NEXT:    lxvd2x 0, 0, 3171; CHECK-NEXT:    lxvd2x 1, 0, 4172; CHECK-NEXT:    xxswapd 0, 0173; CHECK-NEXT:    xxswapd 1, 1174; CHECK-NEXT:    xxmrgld 34, 0, 1175; CHECK-NEXT:    blr176;177; CHECK-P9-LABEL: test20:178; CHECK-P9:       # %bb.0:179; CHECK-P9-NEXT:    lxv 0, 0(3)180; CHECK-P9-NEXT:    lxv 1, 0(4)181; CHECK-P9-NEXT:    xxmrgld 34, 0, 1182; CHECK-P9-NEXT:    blr183  %v1 = load <2 x double>, ptr %p1184  %v2 = load <2 x double>, ptr %p2185  %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 2, i32 0>186  ret <2 x double> %v3187}188 189define <2 x double> @test21(ptr %p1, ptr %p2) {190; CHECK-LABEL: test21:191; CHECK:       # %bb.0:192; CHECK-NEXT:    lxvd2x 0, 0, 3193; CHECK-NEXT:    lxvd2x 1, 0, 4194; CHECK-NEXT:    xxswapd 0, 0195; CHECK-NEXT:    xxswapd 1, 1196; CHECK-NEXT:    xxpermdi 34, 0, 1, 1197; CHECK-NEXT:    blr198;199; CHECK-P9-LABEL: test21:200; CHECK-P9:       # %bb.0:201; CHECK-P9-NEXT:    lxv 0, 0(3)202; CHECK-P9-NEXT:    lxv 1, 0(4)203; CHECK-P9-NEXT:    xxpermdi 34, 0, 1, 1204; CHECK-P9-NEXT:    blr205  %v1 = load <2 x double>, ptr %p1206  %v2 = load <2 x double>, ptr %p2207  %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 2, i32 1>208  ret <2 x double> %v3209}210 211define <2 x double> @test22(ptr %p1, ptr %p2) {212; CHECK-LABEL: test22:213; CHECK:       # %bb.0:214; CHECK-NEXT:    lxvdsx 34, 0, 4215; CHECK-NEXT:    blr216;217; CHECK-P9-LABEL: test22:218; CHECK-P9:       # %bb.0:219; CHECK-P9-NEXT:    lxvdsx 34, 0, 4220; CHECK-P9-NEXT:    blr221  %v1 = load <2 x double>, ptr %p1222  %v2 = load <2 x double>, ptr %p2223  %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 2, i32 2>224  ret <2 x double> %v3225}226 227define <2 x double> @test23(ptr %p1, ptr %p2) {228; CHECK-LABEL: test23:229; CHECK:       # %bb.0:230; CHECK-NEXT:    lxvd2x 0, 0, 4231; CHECK-NEXT:    xxswapd 34, 0232; CHECK-NEXT:    blr233;234; CHECK-P9-LABEL: test23:235; CHECK-P9:       # %bb.0:236; CHECK-P9-NEXT:    lxv 34, 0(4)237; CHECK-P9-NEXT:    blr238  %v1 = load <2 x double>, ptr %p1239  %v2 = load <2 x double>, ptr %p2240  %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 2, i32 3>241  ret <2 x double> %v3242}243 244define <2 x double> @test30(ptr %p1, ptr %p2) {245; CHECK-LABEL: test30:246; CHECK:       # %bb.0:247; CHECK-NEXT:    lxvd2x 0, 0, 3248; CHECK-NEXT:    lxvd2x 1, 0, 4249; CHECK-NEXT:    xxswapd 0, 0250; CHECK-NEXT:    xxswapd 1, 1251; CHECK-NEXT:    xxpermdi 34, 0, 1, 2252; CHECK-NEXT:    blr253;254; CHECK-P9-LABEL: test30:255; CHECK-P9:       # %bb.0:256; CHECK-P9-NEXT:    lxv 0, 0(3)257; CHECK-P9-NEXT:    lxv 1, 0(4)258; CHECK-P9-NEXT:    xxpermdi 34, 0, 1, 2259; CHECK-P9-NEXT:    blr260  %v1 = load <2 x double>, ptr %p1261  %v2 = load <2 x double>, ptr %p2262  %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 3, i32 0>263  ret <2 x double> %v3264}265 266define <2 x double> @test31(ptr %p1, ptr %p2) {267; CHECK-LABEL: test31:268; CHECK:       # %bb.0:269; CHECK-NEXT:    lxvd2x 0, 0, 3270; CHECK-NEXT:    lxvd2x 1, 0, 4271; CHECK-NEXT:    xxswapd 0, 0272; CHECK-NEXT:    xxswapd 1, 1273; CHECK-NEXT:    xxmrghd 34, 0, 1274; CHECK-NEXT:    blr275;276; CHECK-P9-LABEL: test31:277; CHECK-P9:       # %bb.0:278; CHECK-P9-NEXT:    lxv 0, 0(3)279; CHECK-P9-NEXT:    lxv 1, 0(4)280; CHECK-P9-NEXT:    xxmrghd 34, 0, 1281; CHECK-P9-NEXT:    blr282  %v1 = load <2 x double>, ptr %p1283  %v2 = load <2 x double>, ptr %p2284  %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 3, i32 1>285  ret <2 x double> %v3286}287 288define <2 x double> @test32(ptr %p1, ptr %p2) {289; CHECK-LABEL: test32:290; CHECK:       # %bb.0:291; CHECK-NEXT:    lxvd2x 34, 0, 4292; CHECK-NEXT:    blr293;294; CHECK-P9-LABEL: test32:295; CHECK-P9:       # %bb.0:296; CHECK-P9-NEXT:    lxvd2x 34, 0, 4297; CHECK-P9-NEXT:    blr298  %v1 = load <2 x double>, ptr %p1299  %v2 = load <2 x double>, ptr %p2300  %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 3, i32 2>301  ret <2 x double> %v3302}303 304define <2 x double> @test33(ptr %p1, ptr %p2) {305; CHECK-LABEL: test33:306; CHECK:       # %bb.0:307; CHECK-NEXT:    addi 3, 4, 8308; CHECK-NEXT:    lxvdsx 34, 0, 3309; CHECK-NEXT:    blr310;311; CHECK-P9-LABEL: test33:312; CHECK-P9:       # %bb.0:313; CHECK-P9-NEXT:    addi 3, 4, 8314; CHECK-P9-NEXT:    lxvdsx 34, 0, 3315; CHECK-P9-NEXT:    blr316  %v1 = load <2 x double>, ptr %p1317  %v2 = load <2 x double>, ptr %p2318  %v3 = shufflevector <2 x double> %v1, <2 x double> %v2, <2 x i32> < i32 3, i32 3>319  ret <2 x double> %v3320}321