100f99466SKai Luo; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4 2afd9582bSKai Luo; RUN: llc -verify-machineinstrs -mtriple=powerpc64-- -mcpu=pwr7 < %s | FileCheck --check-prefix=PWR7-BE %s 3afd9582bSKai Luo; RUN: llc -verify-machineinstrs -mtriple=powerpc64-- -mcpu=pwr8 < %s | FileCheck --check-prefix=PWR8-BE %s 4afd9582bSKai Luo; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-- -mcpu=pwr7 < %s | FileCheck --check-prefix=PWR7-LE %s 5afd9582bSKai Luo; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-- -mcpu=pwr8 < %s | FileCheck --check-prefix=PWR8-LE %s 600f99466SKai Luo 7afd9582bSKai Luodefine <2 x i64> @build_v2i64_extload_0(ptr nocapture noundef readonly %p) { 8afd9582bSKai Luo; PWR7-BE-LABEL: build_v2i64_extload_0: 9afd9582bSKai Luo; PWR7-BE: # %bb.0: # %entry 10afd9582bSKai Luo; PWR7-BE-NEXT: lwz 3, 0(3) 11afd9582bSKai Luo; PWR7-BE-NEXT: li 4, 0 12afd9582bSKai Luo; PWR7-BE-NEXT: std 4, -8(1) 13afd9582bSKai Luo; PWR7-BE-NEXT: std 3, -16(1) 14afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 1, -16 15afd9582bSKai Luo; PWR7-BE-NEXT: lxvd2x 34, 0, 3 16afd9582bSKai Luo; PWR7-BE-NEXT: blr 1700f99466SKai Luo; 18afd9582bSKai Luo; PWR8-BE-LABEL: build_v2i64_extload_0: 19afd9582bSKai Luo; PWR8-BE: # %bb.0: # %entry 20afd9582bSKai Luo; PWR8-BE-NEXT: lwz 3, 0(3) 21afd9582bSKai Luo; PWR8-BE-NEXT: li 4, 0 22afd9582bSKai Luo; PWR8-BE-NEXT: mtfprd 0, 4 23afd9582bSKai Luo; PWR8-BE-NEXT: mtfprd 1, 3 24afd9582bSKai Luo; PWR8-BE-NEXT: xxmrghd 34, 1, 0 25afd9582bSKai Luo; PWR8-BE-NEXT: blr 26afd9582bSKai Luo; 27afd9582bSKai Luo; PWR7-LE-LABEL: build_v2i64_extload_0: 28afd9582bSKai Luo; PWR7-LE: # %bb.0: # %entry 2926ba186bSRolandF77; PWR7-LE-NEXT: lfiwzx 0, 0, 3 30*fc59f2ccSRolandF77; PWR7-LE-NEXT: addis 3, 2, .LCPI0_0@toc@ha 31*fc59f2ccSRolandF77; PWR7-LE-NEXT: xxlxor 36, 36, 36 32*fc59f2ccSRolandF77; PWR7-LE-NEXT: addi 3, 3, .LCPI0_0@toc@l 33*fc59f2ccSRolandF77; PWR7-LE-NEXT: xxspltw 34, 0, 1 34afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 0, 0, 3 35*fc59f2ccSRolandF77; PWR7-LE-NEXT: xxswapd 35, 0 36*fc59f2ccSRolandF77; PWR7-LE-NEXT: vperm 2, 4, 2, 3 37afd9582bSKai Luo; PWR7-LE-NEXT: blr 38afd9582bSKai Luo; 39afd9582bSKai Luo; PWR8-LE-LABEL: build_v2i64_extload_0: 40afd9582bSKai Luo; PWR8-LE: # %bb.0: # %entry 41afd9582bSKai Luo; PWR8-LE-NEXT: lwz 3, 0(3) 42afd9582bSKai Luo; PWR8-LE-NEXT: li 4, 0 43afd9582bSKai Luo; PWR8-LE-NEXT: rldimi 3, 4, 32, 0 44afd9582bSKai Luo; PWR8-LE-NEXT: rldimi 4, 4, 32, 0 45afd9582bSKai Luo; PWR8-LE-NEXT: mtfprd 0, 3 46afd9582bSKai Luo; PWR8-LE-NEXT: mtfprd 1, 4 47afd9582bSKai Luo; PWR8-LE-NEXT: xxmrghd 34, 1, 0 48afd9582bSKai Luo; PWR8-LE-NEXT: blr 4900f99466SKai Luoentry: 5000f99466SKai Luo %0 = load i32, ptr %p, align 4 5100f99466SKai Luo %conv = zext i32 %0 to i64 52afd9582bSKai Luo %vecinit1 = insertelement <2 x i64> <i64 0, i64 0>, i64 %conv, i64 0 5300f99466SKai Luo ret <2 x i64> %vecinit1 5400f99466SKai Luo} 5500f99466SKai Luo 56afd9582bSKai Luodefine <2 x i64> @build_v2i64_extload_1(ptr nocapture noundef readonly %p) { 57afd9582bSKai Luo; PWR7-BE-LABEL: build_v2i64_extload_1: 58afd9582bSKai Luo; PWR7-BE: # %bb.0: # %entry 59afd9582bSKai Luo; PWR7-BE-NEXT: lwz 3, 0(3) 60afd9582bSKai Luo; PWR7-BE-NEXT: li 4, 0 61afd9582bSKai Luo; PWR7-BE-NEXT: std 4, -16(1) 62afd9582bSKai Luo; PWR7-BE-NEXT: std 3, -8(1) 63afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 1, -16 64afd9582bSKai Luo; PWR7-BE-NEXT: lxvd2x 34, 0, 3 65afd9582bSKai Luo; PWR7-BE-NEXT: blr 6600f99466SKai Luo; 67afd9582bSKai Luo; PWR8-BE-LABEL: build_v2i64_extload_1: 68afd9582bSKai Luo; PWR8-BE: # %bb.0: # %entry 69afd9582bSKai Luo; PWR8-BE-NEXT: lwz 3, 0(3) 70afd9582bSKai Luo; PWR8-BE-NEXT: li 4, 0 71afd9582bSKai Luo; PWR8-BE-NEXT: mtfprd 0, 4 72afd9582bSKai Luo; PWR8-BE-NEXT: mtfprd 1, 3 73afd9582bSKai Luo; PWR8-BE-NEXT: xxmrghd 34, 0, 1 74afd9582bSKai Luo; PWR8-BE-NEXT: blr 75afd9582bSKai Luo; 76afd9582bSKai Luo; PWR7-LE-LABEL: build_v2i64_extload_1: 77afd9582bSKai Luo; PWR7-LE: # %bb.0: # %entry 78afd9582bSKai Luo; PWR7-LE-NEXT: lwz 3, 0(3) 79afd9582bSKai Luo; PWR7-LE-NEXT: li 4, 0 80afd9582bSKai Luo; PWR7-LE-NEXT: std 4, -16(1) 81afd9582bSKai Luo; PWR7-LE-NEXT: std 3, -8(1) 82afd9582bSKai Luo; PWR7-LE-NEXT: addi 3, 1, -16 83afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 0, 0, 3 84afd9582bSKai Luo; PWR7-LE-NEXT: xxswapd 34, 0 85afd9582bSKai Luo; PWR7-LE-NEXT: blr 86afd9582bSKai Luo; 87afd9582bSKai Luo; PWR8-LE-LABEL: build_v2i64_extload_1: 88afd9582bSKai Luo; PWR8-LE: # %bb.0: # %entry 89afd9582bSKai Luo; PWR8-LE-NEXT: lwz 3, 0(3) 90afd9582bSKai Luo; PWR8-LE-NEXT: li 4, 0 91afd9582bSKai Luo; PWR8-LE-NEXT: mtfprd 0, 4 92afd9582bSKai Luo; PWR8-LE-NEXT: mtfprd 1, 3 93afd9582bSKai Luo; PWR8-LE-NEXT: xxmrghd 34, 1, 0 94afd9582bSKai Luo; PWR8-LE-NEXT: blr 95afd9582bSKai Luoentry: 96afd9582bSKai Luo %0 = load i32, ptr %p, align 4 97afd9582bSKai Luo %conv = zext i32 %0 to i64 98afd9582bSKai Luo %vecinit1 = insertelement <2 x i64> <i64 0, i64 0>, i64 %conv, i64 1 99afd9582bSKai Luo ret <2 x i64> %vecinit1 100afd9582bSKai Luo} 101afd9582bSKai Luo 102afd9582bSKai Luodefine <2 x double> @build_v2f64_extload_0(ptr nocapture noundef readonly %p) { 103afd9582bSKai Luo; PWR7-BE-LABEL: build_v2f64_extload_0: 104afd9582bSKai Luo; PWR7-BE: # %bb.0: # %entry 105afd9582bSKai Luo; PWR7-BE-NEXT: lfs 0, 0(3) 106afd9582bSKai Luo; PWR7-BE-NEXT: xxlxor 1, 1, 1 107afd9582bSKai Luo; PWR7-BE-NEXT: xxmrghd 34, 0, 1 108afd9582bSKai Luo; PWR7-BE-NEXT: blr 109afd9582bSKai Luo; 110afd9582bSKai Luo; PWR8-BE-LABEL: build_v2f64_extload_0: 111afd9582bSKai Luo; PWR8-BE: # %bb.0: # %entry 112afd9582bSKai Luo; PWR8-BE-NEXT: lfs 0, 0(3) 113afd9582bSKai Luo; PWR8-BE-NEXT: xxlxor 1, 1, 1 114afd9582bSKai Luo; PWR8-BE-NEXT: xxmrghd 34, 0, 1 115afd9582bSKai Luo; PWR8-BE-NEXT: blr 116afd9582bSKai Luo; 117afd9582bSKai Luo; PWR7-LE-LABEL: build_v2f64_extload_0: 118afd9582bSKai Luo; PWR7-LE: # %bb.0: # %entry 119afd9582bSKai Luo; PWR7-LE-NEXT: lfs 0, 0(3) 120afd9582bSKai Luo; PWR7-LE-NEXT: xxlxor 1, 1, 1 121afd9582bSKai Luo; PWR7-LE-NEXT: xxmrghd 34, 1, 0 122afd9582bSKai Luo; PWR7-LE-NEXT: blr 123afd9582bSKai Luo; 124afd9582bSKai Luo; PWR8-LE-LABEL: build_v2f64_extload_0: 125afd9582bSKai Luo; PWR8-LE: # %bb.0: # %entry 126afd9582bSKai Luo; PWR8-LE-NEXT: lfs 0, 0(3) 127afd9582bSKai Luo; PWR8-LE-NEXT: xxlxor 1, 1, 1 128afd9582bSKai Luo; PWR8-LE-NEXT: xxmrghd 34, 1, 0 129afd9582bSKai Luo; PWR8-LE-NEXT: blr 13000f99466SKai Luoentry: 13100f99466SKai Luo %0 = load float, ptr %p, align 4 13200f99466SKai Luo %conv = fpext float %0 to double 133afd9582bSKai Luo %vecinit1 = insertelement <2 x double> <double 0.000000e+00, double 0.000000e+00>, double %conv, i64 0 13400f99466SKai Luo ret <2 x double> %vecinit1 13500f99466SKai Luo} 136afd9582bSKai Luo 137afd9582bSKai Luodefine <2 x double> @build_v2f64_extload_1(ptr nocapture noundef readonly %p) { 138afd9582bSKai Luo; PWR7-BE-LABEL: build_v2f64_extload_1: 139afd9582bSKai Luo; PWR7-BE: # %bb.0: # %entry 140afd9582bSKai Luo; PWR7-BE-NEXT: lfs 0, 0(3) 141afd9582bSKai Luo; PWR7-BE-NEXT: xxlxor 1, 1, 1 142afd9582bSKai Luo; PWR7-BE-NEXT: xxmrghd 34, 1, 0 143afd9582bSKai Luo; PWR7-BE-NEXT: blr 144afd9582bSKai Luo; 145afd9582bSKai Luo; PWR8-BE-LABEL: build_v2f64_extload_1: 146afd9582bSKai Luo; PWR8-BE: # %bb.0: # %entry 147afd9582bSKai Luo; PWR8-BE-NEXT: lfs 0, 0(3) 148afd9582bSKai Luo; PWR8-BE-NEXT: xxlxor 1, 1, 1 149afd9582bSKai Luo; PWR8-BE-NEXT: xxmrghd 34, 1, 0 150afd9582bSKai Luo; PWR8-BE-NEXT: blr 151afd9582bSKai Luo; 152afd9582bSKai Luo; PWR7-LE-LABEL: build_v2f64_extload_1: 153afd9582bSKai Luo; PWR7-LE: # %bb.0: # %entry 154afd9582bSKai Luo; PWR7-LE-NEXT: lfs 0, 0(3) 155afd9582bSKai Luo; PWR7-LE-NEXT: xxlxor 1, 1, 1 156afd9582bSKai Luo; PWR7-LE-NEXT: xxmrghd 34, 0, 1 157afd9582bSKai Luo; PWR7-LE-NEXT: blr 158afd9582bSKai Luo; 159afd9582bSKai Luo; PWR8-LE-LABEL: build_v2f64_extload_1: 160afd9582bSKai Luo; PWR8-LE: # %bb.0: # %entry 161afd9582bSKai Luo; PWR8-LE-NEXT: lfs 0, 0(3) 162afd9582bSKai Luo; PWR8-LE-NEXT: xxlxor 1, 1, 1 163afd9582bSKai Luo; PWR8-LE-NEXT: xxmrghd 34, 0, 1 164afd9582bSKai Luo; PWR8-LE-NEXT: blr 165afd9582bSKai Luoentry: 166afd9582bSKai Luo %0 = load float, ptr %p, align 4 167afd9582bSKai Luo %conv = fpext float %0 to double 168afd9582bSKai Luo %vecinit1 = insertelement <2 x double> <double 0.000000e+00, double 0.000000e+00>, double %conv, i64 1 169afd9582bSKai Luo ret <2 x double> %vecinit1 170afd9582bSKai Luo} 171afd9582bSKai Luo 172afd9582bSKai Luodefine <2 x double> @build_v2f64_load_0(ptr nocapture noundef readonly %p) { 173afd9582bSKai Luo; PWR7-BE-LABEL: build_v2f64_load_0: 174afd9582bSKai Luo; PWR7-BE: # %bb.0: # %entry 175afd9582bSKai Luo; PWR7-BE-NEXT: lfd 0, 0(3) 176afd9582bSKai Luo; PWR7-BE-NEXT: xxlxor 1, 1, 1 177afd9582bSKai Luo; PWR7-BE-NEXT: xxmrghd 34, 0, 1 178afd9582bSKai Luo; PWR7-BE-NEXT: blr 179afd9582bSKai Luo; 180afd9582bSKai Luo; PWR8-BE-LABEL: build_v2f64_load_0: 181afd9582bSKai Luo; PWR8-BE: # %bb.0: # %entry 182afd9582bSKai Luo; PWR8-BE-NEXT: lfd 0, 0(3) 183afd9582bSKai Luo; PWR8-BE-NEXT: xxlxor 1, 1, 1 184afd9582bSKai Luo; PWR8-BE-NEXT: xxmrghd 34, 0, 1 185afd9582bSKai Luo; PWR8-BE-NEXT: blr 186afd9582bSKai Luo; 187afd9582bSKai Luo; PWR7-LE-LABEL: build_v2f64_load_0: 188afd9582bSKai Luo; PWR7-LE: # %bb.0: # %entry 189afd9582bSKai Luo; PWR7-LE-NEXT: lfd 0, 0(3) 190afd9582bSKai Luo; PWR7-LE-NEXT: xxlxor 1, 1, 1 191afd9582bSKai Luo; PWR7-LE-NEXT: xxmrghd 34, 1, 0 192afd9582bSKai Luo; PWR7-LE-NEXT: blr 193afd9582bSKai Luo; 194afd9582bSKai Luo; PWR8-LE-LABEL: build_v2f64_load_0: 195afd9582bSKai Luo; PWR8-LE: # %bb.0: # %entry 196afd9582bSKai Luo; PWR8-LE-NEXT: lfd 0, 0(3) 197afd9582bSKai Luo; PWR8-LE-NEXT: xxlxor 1, 1, 1 198afd9582bSKai Luo; PWR8-LE-NEXT: xxmrghd 34, 1, 0 199afd9582bSKai Luo; PWR8-LE-NEXT: blr 200afd9582bSKai Luoentry: 201afd9582bSKai Luo %0 = load double, ptr %p, align 8 202afd9582bSKai Luo %vecinit1 = insertelement <2 x double> <double 0.000000e+00, double 0.000000e+00>, double %0, i64 0 203afd9582bSKai Luo ret <2 x double> %vecinit1 204afd9582bSKai Luo} 205afd9582bSKai Luo 206afd9582bSKai Luodefine <2 x double> @build_v2f64_load_1(ptr nocapture noundef readonly %p) { 207afd9582bSKai Luo; PWR7-BE-LABEL: build_v2f64_load_1: 208afd9582bSKai Luo; PWR7-BE: # %bb.0: # %entry 209afd9582bSKai Luo; PWR7-BE-NEXT: lfd 0, 0(3) 210afd9582bSKai Luo; PWR7-BE-NEXT: xxlxor 1, 1, 1 211afd9582bSKai Luo; PWR7-BE-NEXT: xxmrghd 34, 1, 0 212afd9582bSKai Luo; PWR7-BE-NEXT: blr 213afd9582bSKai Luo; 214afd9582bSKai Luo; PWR8-BE-LABEL: build_v2f64_load_1: 215afd9582bSKai Luo; PWR8-BE: # %bb.0: # %entry 216afd9582bSKai Luo; PWR8-BE-NEXT: lfd 0, 0(3) 217afd9582bSKai Luo; PWR8-BE-NEXT: xxlxor 1, 1, 1 218afd9582bSKai Luo; PWR8-BE-NEXT: xxmrghd 34, 1, 0 219afd9582bSKai Luo; PWR8-BE-NEXT: blr 220afd9582bSKai Luo; 221afd9582bSKai Luo; PWR7-LE-LABEL: build_v2f64_load_1: 222afd9582bSKai Luo; PWR7-LE: # %bb.0: # %entry 223afd9582bSKai Luo; PWR7-LE-NEXT: lfd 0, 0(3) 224afd9582bSKai Luo; PWR7-LE-NEXT: xxlxor 1, 1, 1 225afd9582bSKai Luo; PWR7-LE-NEXT: xxmrghd 34, 0, 1 226afd9582bSKai Luo; PWR7-LE-NEXT: blr 227afd9582bSKai Luo; 228afd9582bSKai Luo; PWR8-LE-LABEL: build_v2f64_load_1: 229afd9582bSKai Luo; PWR8-LE: # %bb.0: # %entry 230afd9582bSKai Luo; PWR8-LE-NEXT: lfd 0, 0(3) 231afd9582bSKai Luo; PWR8-LE-NEXT: xxlxor 1, 1, 1 232afd9582bSKai Luo; PWR8-LE-NEXT: xxmrghd 34, 0, 1 233afd9582bSKai Luo; PWR8-LE-NEXT: blr 234afd9582bSKai Luoentry: 235afd9582bSKai Luo %0 = load double, ptr %p, align 8 236afd9582bSKai Luo %vecinit1 = insertelement <2 x double> <double 0.000000e+00, double 0.000000e+00>, double %0, i64 1 237afd9582bSKai Luo ret <2 x double> %vecinit1 238afd9582bSKai Luo} 239afd9582bSKai Luo 240afd9582bSKai Luodefine <2 x i64> @build_v2i64_load_0(ptr nocapture noundef readonly %p) { 241afd9582bSKai Luo; PWR7-BE-LABEL: build_v2i64_load_0: 242afd9582bSKai Luo; PWR7-BE: # %bb.0: # %entry 243afd9582bSKai Luo; PWR7-BE-NEXT: ld 3, 0(3) 244afd9582bSKai Luo; PWR7-BE-NEXT: li 4, 0 245afd9582bSKai Luo; PWR7-BE-NEXT: std 4, -8(1) 246afd9582bSKai Luo; PWR7-BE-NEXT: std 3, -16(1) 247afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 1, -16 248afd9582bSKai Luo; PWR7-BE-NEXT: lxvd2x 34, 0, 3 249afd9582bSKai Luo; PWR7-BE-NEXT: blr 250afd9582bSKai Luo; 251afd9582bSKai Luo; PWR8-BE-LABEL: build_v2i64_load_0: 252afd9582bSKai Luo; PWR8-BE: # %bb.0: # %entry 253afd9582bSKai Luo; PWR8-BE-NEXT: ld 3, 0(3) 254afd9582bSKai Luo; PWR8-BE-NEXT: li 4, 0 255afd9582bSKai Luo; PWR8-BE-NEXT: mtfprd 0, 4 256afd9582bSKai Luo; PWR8-BE-NEXT: mtfprd 1, 3 257afd9582bSKai Luo; PWR8-BE-NEXT: xxmrghd 34, 1, 0 258afd9582bSKai Luo; PWR8-BE-NEXT: blr 259afd9582bSKai Luo; 260afd9582bSKai Luo; PWR7-LE-LABEL: build_v2i64_load_0: 261afd9582bSKai Luo; PWR7-LE: # %bb.0: # %entry 262afd9582bSKai Luo; PWR7-LE-NEXT: ld 3, 0(3) 263afd9582bSKai Luo; PWR7-LE-NEXT: li 4, 0 264afd9582bSKai Luo; PWR7-LE-NEXT: std 4, -8(1) 265afd9582bSKai Luo; PWR7-LE-NEXT: std 3, -16(1) 266afd9582bSKai Luo; PWR7-LE-NEXT: addi 3, 1, -16 267afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 0, 0, 3 268afd9582bSKai Luo; PWR7-LE-NEXT: xxswapd 34, 0 269afd9582bSKai Luo; PWR7-LE-NEXT: blr 270afd9582bSKai Luo; 271afd9582bSKai Luo; PWR8-LE-LABEL: build_v2i64_load_0: 272afd9582bSKai Luo; PWR8-LE: # %bb.0: # %entry 273afd9582bSKai Luo; PWR8-LE-NEXT: ld 3, 0(3) 274afd9582bSKai Luo; PWR8-LE-NEXT: li 4, 0 275afd9582bSKai Luo; PWR8-LE-NEXT: mtfprd 0, 4 276afd9582bSKai Luo; PWR8-LE-NEXT: mtfprd 1, 3 277afd9582bSKai Luo; PWR8-LE-NEXT: xxmrghd 34, 0, 1 278afd9582bSKai Luo; PWR8-LE-NEXT: blr 279afd9582bSKai Luoentry: 280afd9582bSKai Luo %0 = load i64, ptr %p, align 8 281afd9582bSKai Luo %vecinit1 = insertelement <2 x i64> <i64 0, i64 0>, i64 %0, i64 0 282afd9582bSKai Luo ret <2 x i64> %vecinit1 283afd9582bSKai Luo} 284afd9582bSKai Luo 285afd9582bSKai Luodefine <2 x i64> @build_v2i64_load_1(ptr nocapture noundef readonly %p) { 286afd9582bSKai Luo; PWR7-BE-LABEL: build_v2i64_load_1: 287afd9582bSKai Luo; PWR7-BE: # %bb.0: # %entry 288afd9582bSKai Luo; PWR7-BE-NEXT: ld 3, 0(3) 289afd9582bSKai Luo; PWR7-BE-NEXT: li 4, 0 290afd9582bSKai Luo; PWR7-BE-NEXT: std 4, -16(1) 291afd9582bSKai Luo; PWR7-BE-NEXT: std 3, -8(1) 292afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 1, -16 293afd9582bSKai Luo; PWR7-BE-NEXT: lxvd2x 34, 0, 3 294afd9582bSKai Luo; PWR7-BE-NEXT: blr 295afd9582bSKai Luo; 296afd9582bSKai Luo; PWR8-BE-LABEL: build_v2i64_load_1: 297afd9582bSKai Luo; PWR8-BE: # %bb.0: # %entry 298afd9582bSKai Luo; PWR8-BE-NEXT: ld 3, 0(3) 299afd9582bSKai Luo; PWR8-BE-NEXT: li 4, 0 300afd9582bSKai Luo; PWR8-BE-NEXT: mtfprd 0, 4 301afd9582bSKai Luo; PWR8-BE-NEXT: mtfprd 1, 3 302afd9582bSKai Luo; PWR8-BE-NEXT: xxmrghd 34, 0, 1 303afd9582bSKai Luo; PWR8-BE-NEXT: blr 304afd9582bSKai Luo; 305afd9582bSKai Luo; PWR7-LE-LABEL: build_v2i64_load_1: 306afd9582bSKai Luo; PWR7-LE: # %bb.0: # %entry 307afd9582bSKai Luo; PWR7-LE-NEXT: ld 3, 0(3) 308afd9582bSKai Luo; PWR7-LE-NEXT: li 4, 0 309afd9582bSKai Luo; PWR7-LE-NEXT: std 4, -16(1) 310afd9582bSKai Luo; PWR7-LE-NEXT: std 3, -8(1) 311afd9582bSKai Luo; PWR7-LE-NEXT: addi 3, 1, -16 312afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 0, 0, 3 313afd9582bSKai Luo; PWR7-LE-NEXT: xxswapd 34, 0 314afd9582bSKai Luo; PWR7-LE-NEXT: blr 315afd9582bSKai Luo; 316afd9582bSKai Luo; PWR8-LE-LABEL: build_v2i64_load_1: 317afd9582bSKai Luo; PWR8-LE: # %bb.0: # %entry 318afd9582bSKai Luo; PWR8-LE-NEXT: ld 3, 0(3) 319afd9582bSKai Luo; PWR8-LE-NEXT: li 4, 0 320afd9582bSKai Luo; PWR8-LE-NEXT: mtfprd 0, 4 321afd9582bSKai Luo; PWR8-LE-NEXT: mtfprd 1, 3 322afd9582bSKai Luo; PWR8-LE-NEXT: xxmrghd 34, 1, 0 323afd9582bSKai Luo; PWR8-LE-NEXT: blr 324afd9582bSKai Luoentry: 325afd9582bSKai Luo %0 = load i64, ptr %p, align 8 326afd9582bSKai Luo %vecinit1 = insertelement <2 x i64> <i64 0, i64 0>, i64 %0, i64 1 327afd9582bSKai Luo ret <2 x i64> %vecinit1 328afd9582bSKai Luo} 329afd9582bSKai Luo 330afd9582bSKai Luodefine <4 x i32> @build_v4i32_load_0(ptr nocapture noundef readonly %p) { 331afd9582bSKai Luo; PWR7-BE-LABEL: build_v4i32_load_0: 332afd9582bSKai Luo; PWR7-BE: # %bb.0: # %entry 33326ba186bSRolandF77; PWR7-BE-NEXT: lfiwzx 0, 0, 3 334afd9582bSKai Luo; PWR7-BE-NEXT: addis 3, 2, .LCPI8_0@toc@ha 33526ba186bSRolandF77; PWR7-BE-NEXT: xxlxor 36, 36, 36 336afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 3, .LCPI8_0@toc@l 3378b6e9de3SRolandF77; PWR7-BE-NEXT: lxvw4x 35, 0, 3 33826ba186bSRolandF77; PWR7-BE-NEXT: xxspltw 34, 0, 1 33926ba186bSRolandF77; PWR7-BE-NEXT: vperm 2, 2, 4, 3 340afd9582bSKai Luo; PWR7-BE-NEXT: blr 341afd9582bSKai Luo; 342afd9582bSKai Luo; PWR8-BE-LABEL: build_v4i32_load_0: 343afd9582bSKai Luo; PWR8-BE: # %bb.0: # %entry 344afd9582bSKai Luo; PWR8-BE-NEXT: lwz 3, 0(3) 345afd9582bSKai Luo; PWR8-BE-NEXT: li 4, 0 346afd9582bSKai Luo; PWR8-BE-NEXT: li 5, 0 347afd9582bSKai Luo; PWR8-BE-NEXT: rldimi 4, 4, 32, 0 348afd9582bSKai Luo; PWR8-BE-NEXT: rldimi 5, 3, 32, 0 349afd9582bSKai Luo; PWR8-BE-NEXT: mtfprd 1, 4 350afd9582bSKai Luo; PWR8-BE-NEXT: mtfprd 0, 5 351afd9582bSKai Luo; PWR8-BE-NEXT: xxmrghd 34, 0, 1 352afd9582bSKai Luo; PWR8-BE-NEXT: blr 353afd9582bSKai Luo; 354afd9582bSKai Luo; PWR7-LE-LABEL: build_v4i32_load_0: 355afd9582bSKai Luo; PWR7-LE: # %bb.0: # %entry 35626ba186bSRolandF77; PWR7-LE-NEXT: lfiwzx 0, 0, 3 357*fc59f2ccSRolandF77; PWR7-LE-NEXT: addis 3, 2, .LCPI8_0@toc@ha 358*fc59f2ccSRolandF77; PWR7-LE-NEXT: xxlxor 36, 36, 36 359*fc59f2ccSRolandF77; PWR7-LE-NEXT: addi 3, 3, .LCPI8_0@toc@l 360*fc59f2ccSRolandF77; PWR7-LE-NEXT: xxspltw 34, 0, 1 361afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 0, 0, 3 362*fc59f2ccSRolandF77; PWR7-LE-NEXT: xxswapd 35, 0 363*fc59f2ccSRolandF77; PWR7-LE-NEXT: vperm 2, 4, 2, 3 364afd9582bSKai Luo; PWR7-LE-NEXT: blr 365afd9582bSKai Luo; 366afd9582bSKai Luo; PWR8-LE-LABEL: build_v4i32_load_0: 367afd9582bSKai Luo; PWR8-LE: # %bb.0: # %entry 368afd9582bSKai Luo; PWR8-LE-NEXT: lwz 3, 0(3) 369afd9582bSKai Luo; PWR8-LE-NEXT: li 4, 0 370afd9582bSKai Luo; PWR8-LE-NEXT: rldimi 3, 4, 32, 0 371afd9582bSKai Luo; PWR8-LE-NEXT: rldimi 4, 4, 32, 0 372afd9582bSKai Luo; PWR8-LE-NEXT: mtfprd 0, 3 373afd9582bSKai Luo; PWR8-LE-NEXT: mtfprd 1, 4 374afd9582bSKai Luo; PWR8-LE-NEXT: xxmrghd 34, 1, 0 375afd9582bSKai Luo; PWR8-LE-NEXT: blr 376afd9582bSKai Luoentry: 377afd9582bSKai Luo %0 = load i32, ptr %p, align 4 378afd9582bSKai Luo %vecinit1 = insertelement <4 x i32> <i32 0, i32 0, i32 0, i32 0>, i32 %0, i32 0 379afd9582bSKai Luo ret <4 x i32> %vecinit1 380afd9582bSKai Luo} 381afd9582bSKai Luo 382afd9582bSKai Luodefine <4 x i32> @build_v4i32_load_1(ptr nocapture noundef readonly %p) { 383afd9582bSKai Luo; PWR7-BE-LABEL: build_v4i32_load_1: 384afd9582bSKai Luo; PWR7-BE: # %bb.0: # %entry 38526ba186bSRolandF77; PWR7-BE-NEXT: lfiwzx 0, 0, 3 386afd9582bSKai Luo; PWR7-BE-NEXT: addis 3, 2, .LCPI9_0@toc@ha 38726ba186bSRolandF77; PWR7-BE-NEXT: xxlxor 36, 36, 36 388afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 3, .LCPI9_0@toc@l 3898b6e9de3SRolandF77; PWR7-BE-NEXT: lxvw4x 35, 0, 3 39026ba186bSRolandF77; PWR7-BE-NEXT: xxspltw 34, 0, 1 39126ba186bSRolandF77; PWR7-BE-NEXT: vperm 2, 4, 2, 3 392afd9582bSKai Luo; PWR7-BE-NEXT: blr 393afd9582bSKai Luo; 394afd9582bSKai Luo; PWR8-BE-LABEL: build_v4i32_load_1: 395afd9582bSKai Luo; PWR8-BE: # %bb.0: # %entry 396afd9582bSKai Luo; PWR8-BE-NEXT: lwz 3, 0(3) 397afd9582bSKai Luo; PWR8-BE-NEXT: li 4, 0 398afd9582bSKai Luo; PWR8-BE-NEXT: rldimi 3, 4, 32, 0 399afd9582bSKai Luo; PWR8-BE-NEXT: rldimi 4, 4, 32, 0 400afd9582bSKai Luo; PWR8-BE-NEXT: mtfprd 0, 3 401afd9582bSKai Luo; PWR8-BE-NEXT: mtfprd 1, 4 402afd9582bSKai Luo; PWR8-BE-NEXT: xxmrghd 34, 0, 1 403afd9582bSKai Luo; PWR8-BE-NEXT: blr 404afd9582bSKai Luo; 405afd9582bSKai Luo; PWR7-LE-LABEL: build_v4i32_load_1: 406afd9582bSKai Luo; PWR7-LE: # %bb.0: # %entry 40726ba186bSRolandF77; PWR7-LE-NEXT: lfiwzx 0, 0, 3 408*fc59f2ccSRolandF77; PWR7-LE-NEXT: addis 3, 2, .LCPI9_0@toc@ha 409*fc59f2ccSRolandF77; PWR7-LE-NEXT: xxlxor 36, 36, 36 410*fc59f2ccSRolandF77; PWR7-LE-NEXT: addi 3, 3, .LCPI9_0@toc@l 411*fc59f2ccSRolandF77; PWR7-LE-NEXT: xxspltw 34, 0, 1 412afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 0, 0, 3 413*fc59f2ccSRolandF77; PWR7-LE-NEXT: xxswapd 35, 0 414*fc59f2ccSRolandF77; PWR7-LE-NEXT: vperm 2, 2, 4, 3 415afd9582bSKai Luo; PWR7-LE-NEXT: blr 416afd9582bSKai Luo; 417afd9582bSKai Luo; PWR8-LE-LABEL: build_v4i32_load_1: 418afd9582bSKai Luo; PWR8-LE: # %bb.0: # %entry 419afd9582bSKai Luo; PWR8-LE-NEXT: lwz 3, 0(3) 420afd9582bSKai Luo; PWR8-LE-NEXT: li 4, 0 421afd9582bSKai Luo; PWR8-LE-NEXT: li 5, 0 422afd9582bSKai Luo; PWR8-LE-NEXT: rldimi 4, 4, 32, 0 423afd9582bSKai Luo; PWR8-LE-NEXT: rldimi 5, 3, 32, 0 424afd9582bSKai Luo; PWR8-LE-NEXT: mtfprd 1, 4 425afd9582bSKai Luo; PWR8-LE-NEXT: mtfprd 0, 5 426afd9582bSKai Luo; PWR8-LE-NEXT: xxmrghd 34, 1, 0 427afd9582bSKai Luo; PWR8-LE-NEXT: blr 428afd9582bSKai Luoentry: 429afd9582bSKai Luo %0 = load i32, ptr %p, align 4 430afd9582bSKai Luo %vecinit1 = insertelement <4 x i32> <i32 0, i32 0, i32 0, i32 0>, i32 %0, i32 1 431afd9582bSKai Luo ret <4 x i32> %vecinit1 432afd9582bSKai Luo} 433afd9582bSKai Luo 434afd9582bSKai Luodefine <4 x i32> @build_v4i32_load_2(ptr nocapture noundef readonly %p) { 435afd9582bSKai Luo; PWR7-BE-LABEL: build_v4i32_load_2: 436afd9582bSKai Luo; PWR7-BE: # %bb.0: # %entry 43726ba186bSRolandF77; PWR7-BE-NEXT: lfiwzx 0, 0, 3 438afd9582bSKai Luo; PWR7-BE-NEXT: addis 3, 2, .LCPI10_0@toc@ha 43926ba186bSRolandF77; PWR7-BE-NEXT: xxlxor 36, 36, 36 440afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 3, .LCPI10_0@toc@l 4418b6e9de3SRolandF77; PWR7-BE-NEXT: lxvw4x 35, 0, 3 44226ba186bSRolandF77; PWR7-BE-NEXT: xxspltw 34, 0, 1 44326ba186bSRolandF77; PWR7-BE-NEXT: vperm 2, 4, 2, 3 444afd9582bSKai Luo; PWR7-BE-NEXT: blr 445afd9582bSKai Luo; 446afd9582bSKai Luo; PWR8-BE-LABEL: build_v4i32_load_2: 447afd9582bSKai Luo; PWR8-BE: # %bb.0: # %entry 448afd9582bSKai Luo; PWR8-BE-NEXT: lwz 3, 0(3) 449afd9582bSKai Luo; PWR8-BE-NEXT: li 4, 0 450afd9582bSKai Luo; PWR8-BE-NEXT: li 5, 0 451afd9582bSKai Luo; PWR8-BE-NEXT: rldimi 4, 4, 32, 0 452afd9582bSKai Luo; PWR8-BE-NEXT: rldimi 5, 3, 32, 0 453afd9582bSKai Luo; PWR8-BE-NEXT: mtfprd 1, 4 454afd9582bSKai Luo; PWR8-BE-NEXT: mtfprd 0, 5 455afd9582bSKai Luo; PWR8-BE-NEXT: xxmrghd 34, 1, 0 456afd9582bSKai Luo; PWR8-BE-NEXT: blr 457afd9582bSKai Luo; 458afd9582bSKai Luo; PWR7-LE-LABEL: build_v4i32_load_2: 459afd9582bSKai Luo; PWR7-LE: # %bb.0: # %entry 46026ba186bSRolandF77; PWR7-LE-NEXT: lfiwzx 0, 0, 3 461*fc59f2ccSRolandF77; PWR7-LE-NEXT: addis 3, 2, .LCPI10_0@toc@ha 462*fc59f2ccSRolandF77; PWR7-LE-NEXT: xxlxor 36, 36, 36 463*fc59f2ccSRolandF77; PWR7-LE-NEXT: addi 3, 3, .LCPI10_0@toc@l 464*fc59f2ccSRolandF77; PWR7-LE-NEXT: xxspltw 34, 0, 1 465afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 0, 0, 3 466*fc59f2ccSRolandF77; PWR7-LE-NEXT: xxswapd 35, 0 467*fc59f2ccSRolandF77; PWR7-LE-NEXT: vperm 2, 2, 4, 3 468afd9582bSKai Luo; PWR7-LE-NEXT: blr 469afd9582bSKai Luo; 470afd9582bSKai Luo; PWR8-LE-LABEL: build_v4i32_load_2: 471afd9582bSKai Luo; PWR8-LE: # %bb.0: # %entry 472afd9582bSKai Luo; PWR8-LE-NEXT: lwz 3, 0(3) 473afd9582bSKai Luo; PWR8-LE-NEXT: li 4, 0 474afd9582bSKai Luo; PWR8-LE-NEXT: rldimi 3, 4, 32, 0 475afd9582bSKai Luo; PWR8-LE-NEXT: rldimi 4, 4, 32, 0 476afd9582bSKai Luo; PWR8-LE-NEXT: mtfprd 0, 3 477afd9582bSKai Luo; PWR8-LE-NEXT: mtfprd 1, 4 478afd9582bSKai Luo; PWR8-LE-NEXT: xxmrghd 34, 0, 1 479afd9582bSKai Luo; PWR8-LE-NEXT: blr 480afd9582bSKai Luoentry: 481afd9582bSKai Luo %0 = load i32, ptr %p, align 4 482afd9582bSKai Luo %vecinit1 = insertelement <4 x i32> <i32 0, i32 0, i32 0, i32 0>, i32 %0, i32 2 483afd9582bSKai Luo ret <4 x i32> %vecinit1 484afd9582bSKai Luo} 485afd9582bSKai Luo 486afd9582bSKai Luodefine <4 x i32> @build_v4i32_load_3(ptr nocapture noundef readonly %p) { 487afd9582bSKai Luo; PWR7-BE-LABEL: build_v4i32_load_3: 488afd9582bSKai Luo; PWR7-BE: # %bb.0: # %entry 48926ba186bSRolandF77; PWR7-BE-NEXT: lfiwzx 0, 0, 3 490afd9582bSKai Luo; PWR7-BE-NEXT: addis 3, 2, .LCPI11_0@toc@ha 49126ba186bSRolandF77; PWR7-BE-NEXT: xxlxor 36, 36, 36 492afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 3, .LCPI11_0@toc@l 4938b6e9de3SRolandF77; PWR7-BE-NEXT: lxvw4x 35, 0, 3 49426ba186bSRolandF77; PWR7-BE-NEXT: xxspltw 34, 0, 1 49526ba186bSRolandF77; PWR7-BE-NEXT: vperm 2, 4, 2, 3 496afd9582bSKai Luo; PWR7-BE-NEXT: blr 497afd9582bSKai Luo; 498afd9582bSKai Luo; PWR8-BE-LABEL: build_v4i32_load_3: 499afd9582bSKai Luo; PWR8-BE: # %bb.0: # %entry 500afd9582bSKai Luo; PWR8-BE-NEXT: lwz 3, 0(3) 501afd9582bSKai Luo; PWR8-BE-NEXT: li 4, 0 502afd9582bSKai Luo; PWR8-BE-NEXT: rldimi 3, 4, 32, 0 503afd9582bSKai Luo; PWR8-BE-NEXT: rldimi 4, 4, 32, 0 504afd9582bSKai Luo; PWR8-BE-NEXT: mtfprd 0, 3 505afd9582bSKai Luo; PWR8-BE-NEXT: mtfprd 1, 4 506afd9582bSKai Luo; PWR8-BE-NEXT: xxmrghd 34, 1, 0 507afd9582bSKai Luo; PWR8-BE-NEXT: blr 508afd9582bSKai Luo; 509afd9582bSKai Luo; PWR7-LE-LABEL: build_v4i32_load_3: 510afd9582bSKai Luo; PWR7-LE: # %bb.0: # %entry 51126ba186bSRolandF77; PWR7-LE-NEXT: lfiwzx 0, 0, 3 512*fc59f2ccSRolandF77; PWR7-LE-NEXT: addis 3, 2, .LCPI11_0@toc@ha 513*fc59f2ccSRolandF77; PWR7-LE-NEXT: xxlxor 36, 36, 36 514*fc59f2ccSRolandF77; PWR7-LE-NEXT: addi 3, 3, .LCPI11_0@toc@l 515*fc59f2ccSRolandF77; PWR7-LE-NEXT: xxspltw 34, 0, 1 516afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 0, 0, 3 517*fc59f2ccSRolandF77; PWR7-LE-NEXT: xxswapd 35, 0 518*fc59f2ccSRolandF77; PWR7-LE-NEXT: vperm 2, 2, 4, 3 519afd9582bSKai Luo; PWR7-LE-NEXT: blr 520afd9582bSKai Luo; 521afd9582bSKai Luo; PWR8-LE-LABEL: build_v4i32_load_3: 522afd9582bSKai Luo; PWR8-LE: # %bb.0: # %entry 523afd9582bSKai Luo; PWR8-LE-NEXT: lwz 3, 0(3) 524afd9582bSKai Luo; PWR8-LE-NEXT: li 4, 0 525afd9582bSKai Luo; PWR8-LE-NEXT: li 5, 0 526afd9582bSKai Luo; PWR8-LE-NEXT: rldimi 4, 4, 32, 0 527afd9582bSKai Luo; PWR8-LE-NEXT: rldimi 5, 3, 32, 0 528afd9582bSKai Luo; PWR8-LE-NEXT: mtfprd 1, 4 529afd9582bSKai Luo; PWR8-LE-NEXT: mtfprd 0, 5 530afd9582bSKai Luo; PWR8-LE-NEXT: xxmrghd 34, 0, 1 531afd9582bSKai Luo; PWR8-LE-NEXT: blr 532afd9582bSKai Luoentry: 533afd9582bSKai Luo %0 = load i32, ptr %p, align 4 534afd9582bSKai Luo %vecinit1 = insertelement <4 x i32> <i32 0, i32 0, i32 0, i32 0>, i32 %0, i32 3 535afd9582bSKai Luo ret <4 x i32> %vecinit1 536afd9582bSKai Luo} 537afd9582bSKai Luo 538afd9582bSKai Luodefine <4 x float> @build_v4f32_load_0(ptr nocapture noundef readonly %p) { 539afd9582bSKai Luo; PWR7-BE-LABEL: build_v4f32_load_0: 540afd9582bSKai Luo; PWR7-BE: # %bb.0: # %entry 541afd9582bSKai Luo; PWR7-BE-NEXT: lwz 3, 0(3) 542afd9582bSKai Luo; PWR7-BE-NEXT: li 4, 0 543afd9582bSKai Luo; PWR7-BE-NEXT: stw 4, -16(1) 544afd9582bSKai Luo; PWR7-BE-NEXT: stw 3, -32(1) 545afd9582bSKai Luo; PWR7-BE-NEXT: addis 3, 2, .LCPI12_0@toc@ha 546afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 3, .LCPI12_0@toc@l 547afd9582bSKai Luo; PWR7-BE-NEXT: lxvw4x 34, 0, 3 548afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 1, -16 549afd9582bSKai Luo; PWR7-BE-NEXT: lxvw4x 35, 0, 3 550afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 1, -32 551afd9582bSKai Luo; PWR7-BE-NEXT: lxvw4x 36, 0, 3 552afd9582bSKai Luo; PWR7-BE-NEXT: vperm 2, 4, 3, 2 553afd9582bSKai Luo; PWR7-BE-NEXT: blr 554afd9582bSKai Luo; 555afd9582bSKai Luo; PWR8-BE-LABEL: build_v4f32_load_0: 556afd9582bSKai Luo; PWR8-BE: # %bb.0: # %entry 557afd9582bSKai Luo; PWR8-BE-NEXT: lfs 0, 0(3) 558afd9582bSKai Luo; PWR8-BE-NEXT: xxlxor 1, 1, 1 559afd9582bSKai Luo; PWR8-BE-NEXT: xxmrghd 0, 0, 1 560afd9582bSKai Luo; PWR8-BE-NEXT: xxspltd 1, 1, 0 561afd9582bSKai Luo; PWR8-BE-NEXT: xvcvdpsp 34, 0 562afd9582bSKai Luo; PWR8-BE-NEXT: xvcvdpsp 35, 1 563afd9582bSKai Luo; PWR8-BE-NEXT: vmrgew 2, 2, 3 564afd9582bSKai Luo; PWR8-BE-NEXT: blr 565afd9582bSKai Luo; 566afd9582bSKai Luo; PWR7-LE-LABEL: build_v4f32_load_0: 567afd9582bSKai Luo; PWR7-LE: # %bb.0: # %entry 568afd9582bSKai Luo; PWR7-LE-NEXT: li 4, 0 569afd9582bSKai Luo; PWR7-LE-NEXT: lwz 3, 0(3) 570afd9582bSKai Luo; PWR7-LE-NEXT: stw 4, -16(1) 571afd9582bSKai Luo; PWR7-LE-NEXT: addis 4, 2, .LCPI12_0@toc@ha 572afd9582bSKai Luo; PWR7-LE-NEXT: addi 4, 4, .LCPI12_0@toc@l 573afd9582bSKai Luo; PWR7-LE-NEXT: stw 3, -32(1) 574afd9582bSKai Luo; PWR7-LE-NEXT: addi 3, 1, -32 575afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 0, 0, 4 576afd9582bSKai Luo; PWR7-LE-NEXT: addi 4, 1, -16 577afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 1, 0, 4 578afd9582bSKai Luo; PWR7-LE-NEXT: xxswapd 34, 0 579afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 0, 0, 3 580afd9582bSKai Luo; PWR7-LE-NEXT: xxswapd 35, 1 581afd9582bSKai Luo; PWR7-LE-NEXT: xxswapd 36, 0 582afd9582bSKai Luo; PWR7-LE-NEXT: vperm 2, 3, 4, 2 583afd9582bSKai Luo; PWR7-LE-NEXT: blr 584afd9582bSKai Luo; 585afd9582bSKai Luo; PWR8-LE-LABEL: build_v4f32_load_0: 586afd9582bSKai Luo; PWR8-LE: # %bb.0: # %entry 587afd9582bSKai Luo; PWR8-LE-NEXT: lfs 0, 0(3) 588afd9582bSKai Luo; PWR8-LE-NEXT: xxlxor 1, 1, 1 589afd9582bSKai Luo; PWR8-LE-NEXT: xxmrghd 0, 1, 0 590afd9582bSKai Luo; PWR8-LE-NEXT: xxspltd 1, 1, 0 591afd9582bSKai Luo; PWR8-LE-NEXT: xvcvdpsp 34, 0 592afd9582bSKai Luo; PWR8-LE-NEXT: xvcvdpsp 35, 1 593afd9582bSKai Luo; PWR8-LE-NEXT: vmrgew 2, 3, 2 594afd9582bSKai Luo; PWR8-LE-NEXT: blr 595afd9582bSKai Luoentry: 596afd9582bSKai Luo %0 = load float, ptr %p, align 4 597afd9582bSKai Luo %vecinit1 = insertelement <4 x float> <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00>, float %0, i32 0 598afd9582bSKai Luo ret <4 x float> %vecinit1 599afd9582bSKai Luo} 600afd9582bSKai Luo 601afd9582bSKai Luodefine <4 x float> @build_v4f32_load_1(ptr nocapture noundef readonly %p) { 602afd9582bSKai Luo; PWR7-BE-LABEL: build_v4f32_load_1: 603afd9582bSKai Luo; PWR7-BE: # %bb.0: # %entry 604afd9582bSKai Luo; PWR7-BE-NEXT: lwz 3, 0(3) 605afd9582bSKai Luo; PWR7-BE-NEXT: li 4, 0 606afd9582bSKai Luo; PWR7-BE-NEXT: stw 4, -32(1) 607afd9582bSKai Luo; PWR7-BE-NEXT: stw 3, -16(1) 608afd9582bSKai Luo; PWR7-BE-NEXT: addis 3, 2, .LCPI13_0@toc@ha 609afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 3, .LCPI13_0@toc@l 610afd9582bSKai Luo; PWR7-BE-NEXT: lxvw4x 34, 0, 3 611afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 1, -32 612afd9582bSKai Luo; PWR7-BE-NEXT: lxvw4x 35, 0, 3 613afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 1, -16 614afd9582bSKai Luo; PWR7-BE-NEXT: lxvw4x 36, 0, 3 615afd9582bSKai Luo; PWR7-BE-NEXT: vperm 2, 3, 4, 2 616afd9582bSKai Luo; PWR7-BE-NEXT: blr 617afd9582bSKai Luo; 618afd9582bSKai Luo; PWR8-BE-LABEL: build_v4f32_load_1: 619afd9582bSKai Luo; PWR8-BE: # %bb.0: # %entry 620afd9582bSKai Luo; PWR8-BE-NEXT: lfs 0, 0(3) 621afd9582bSKai Luo; PWR8-BE-NEXT: xxlxor 1, 1, 1 622afd9582bSKai Luo; PWR8-BE-NEXT: xxmrghd 0, 0, 1 623afd9582bSKai Luo; PWR8-BE-NEXT: xxspltd 1, 1, 0 624afd9582bSKai Luo; PWR8-BE-NEXT: xvcvdpsp 34, 0 625afd9582bSKai Luo; PWR8-BE-NEXT: xvcvdpsp 35, 1 626afd9582bSKai Luo; PWR8-BE-NEXT: vmrgew 2, 3, 2 627afd9582bSKai Luo; PWR8-BE-NEXT: blr 628afd9582bSKai Luo; 629afd9582bSKai Luo; PWR7-LE-LABEL: build_v4f32_load_1: 630afd9582bSKai Luo; PWR7-LE: # %bb.0: # %entry 631afd9582bSKai Luo; PWR7-LE-NEXT: li 4, 0 632afd9582bSKai Luo; PWR7-LE-NEXT: lwz 3, 0(3) 633afd9582bSKai Luo; PWR7-LE-NEXT: stw 4, -32(1) 634afd9582bSKai Luo; PWR7-LE-NEXT: addis 4, 2, .LCPI13_0@toc@ha 635afd9582bSKai Luo; PWR7-LE-NEXT: addi 4, 4, .LCPI13_0@toc@l 636afd9582bSKai Luo; PWR7-LE-NEXT: stw 3, -16(1) 637afd9582bSKai Luo; PWR7-LE-NEXT: addi 3, 1, -16 638afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 0, 0, 4 639afd9582bSKai Luo; PWR7-LE-NEXT: addi 4, 1, -32 640afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 1, 0, 4 641afd9582bSKai Luo; PWR7-LE-NEXT: xxswapd 34, 0 642afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 0, 0, 3 643afd9582bSKai Luo; PWR7-LE-NEXT: xxswapd 35, 1 644afd9582bSKai Luo; PWR7-LE-NEXT: xxswapd 36, 0 645afd9582bSKai Luo; PWR7-LE-NEXT: vperm 2, 4, 3, 2 646afd9582bSKai Luo; PWR7-LE-NEXT: blr 647afd9582bSKai Luo; 648afd9582bSKai Luo; PWR8-LE-LABEL: build_v4f32_load_1: 649afd9582bSKai Luo; PWR8-LE: # %bb.0: # %entry 650afd9582bSKai Luo; PWR8-LE-NEXT: lfs 0, 0(3) 651afd9582bSKai Luo; PWR8-LE-NEXT: xxlxor 1, 1, 1 652afd9582bSKai Luo; PWR8-LE-NEXT: xxmrghd 0, 1, 0 653afd9582bSKai Luo; PWR8-LE-NEXT: xxspltd 1, 1, 0 654afd9582bSKai Luo; PWR8-LE-NEXT: xvcvdpsp 34, 0 655afd9582bSKai Luo; PWR8-LE-NEXT: xvcvdpsp 35, 1 656afd9582bSKai Luo; PWR8-LE-NEXT: vmrgew 2, 2, 3 657afd9582bSKai Luo; PWR8-LE-NEXT: blr 658afd9582bSKai Luoentry: 659afd9582bSKai Luo %0 = load float, ptr %p, align 4 660afd9582bSKai Luo %vecinit1 = insertelement <4 x float> <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00>, float %0, i32 1 661afd9582bSKai Luo ret <4 x float> %vecinit1 662afd9582bSKai Luo} 663afd9582bSKai Luo 664afd9582bSKai Luodefine <4 x float> @build_v4f32_load_2(ptr nocapture noundef readonly %p) { 665afd9582bSKai Luo; PWR7-BE-LABEL: build_v4f32_load_2: 666afd9582bSKai Luo; PWR7-BE: # %bb.0: # %entry 667afd9582bSKai Luo; PWR7-BE-NEXT: lwz 3, 0(3) 668afd9582bSKai Luo; PWR7-BE-NEXT: li 4, 0 669afd9582bSKai Luo; PWR7-BE-NEXT: stw 4, -32(1) 670afd9582bSKai Luo; PWR7-BE-NEXT: stw 3, -16(1) 671afd9582bSKai Luo; PWR7-BE-NEXT: addis 3, 2, .LCPI14_0@toc@ha 672afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 3, .LCPI14_0@toc@l 673afd9582bSKai Luo; PWR7-BE-NEXT: lxvw4x 34, 0, 3 674afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 1, -32 675afd9582bSKai Luo; PWR7-BE-NEXT: lxvw4x 35, 0, 3 676afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 1, -16 677afd9582bSKai Luo; PWR7-BE-NEXT: lxvw4x 36, 0, 3 678afd9582bSKai Luo; PWR7-BE-NEXT: vperm 2, 3, 4, 2 679afd9582bSKai Luo; PWR7-BE-NEXT: blr 680afd9582bSKai Luo; 681afd9582bSKai Luo; PWR8-BE-LABEL: build_v4f32_load_2: 682afd9582bSKai Luo; PWR8-BE: # %bb.0: # %entry 683afd9582bSKai Luo; PWR8-BE-NEXT: lfs 0, 0(3) 684afd9582bSKai Luo; PWR8-BE-NEXT: xxlxor 1, 1, 1 685afd9582bSKai Luo; PWR8-BE-NEXT: xxmrghd 0, 1, 0 686afd9582bSKai Luo; PWR8-BE-NEXT: xxspltd 1, 1, 0 687afd9582bSKai Luo; PWR8-BE-NEXT: xvcvdpsp 34, 0 688afd9582bSKai Luo; PWR8-BE-NEXT: xvcvdpsp 35, 1 689afd9582bSKai Luo; PWR8-BE-NEXT: vmrgew 2, 2, 3 690afd9582bSKai Luo; PWR8-BE-NEXT: blr 691afd9582bSKai Luo; 692afd9582bSKai Luo; PWR7-LE-LABEL: build_v4f32_load_2: 693afd9582bSKai Luo; PWR7-LE: # %bb.0: # %entry 694afd9582bSKai Luo; PWR7-LE-NEXT: li 4, 0 695afd9582bSKai Luo; PWR7-LE-NEXT: lwz 3, 0(3) 696afd9582bSKai Luo; PWR7-LE-NEXT: stw 4, -32(1) 697afd9582bSKai Luo; PWR7-LE-NEXT: addis 4, 2, .LCPI14_0@toc@ha 698afd9582bSKai Luo; PWR7-LE-NEXT: addi 4, 4, .LCPI14_0@toc@l 699afd9582bSKai Luo; PWR7-LE-NEXT: stw 3, -16(1) 700afd9582bSKai Luo; PWR7-LE-NEXT: addi 3, 1, -16 701afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 0, 0, 4 702afd9582bSKai Luo; PWR7-LE-NEXT: addi 4, 1, -32 703afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 1, 0, 4 704afd9582bSKai Luo; PWR7-LE-NEXT: xxswapd 34, 0 705afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 0, 0, 3 706afd9582bSKai Luo; PWR7-LE-NEXT: xxswapd 35, 1 707afd9582bSKai Luo; PWR7-LE-NEXT: xxswapd 36, 0 708afd9582bSKai Luo; PWR7-LE-NEXT: vperm 2, 4, 3, 2 709afd9582bSKai Luo; PWR7-LE-NEXT: blr 710afd9582bSKai Luo; 711afd9582bSKai Luo; PWR8-LE-LABEL: build_v4f32_load_2: 712afd9582bSKai Luo; PWR8-LE: # %bb.0: # %entry 713afd9582bSKai Luo; PWR8-LE-NEXT: lfs 0, 0(3) 714afd9582bSKai Luo; PWR8-LE-NEXT: xxlxor 1, 1, 1 715afd9582bSKai Luo; PWR8-LE-NEXT: xxmrghd 0, 0, 1 716afd9582bSKai Luo; PWR8-LE-NEXT: xxspltd 1, 1, 0 717afd9582bSKai Luo; PWR8-LE-NEXT: xvcvdpsp 34, 0 718afd9582bSKai Luo; PWR8-LE-NEXT: xvcvdpsp 35, 1 719afd9582bSKai Luo; PWR8-LE-NEXT: vmrgew 2, 3, 2 720afd9582bSKai Luo; PWR8-LE-NEXT: blr 721afd9582bSKai Luoentry: 722afd9582bSKai Luo %0 = load float, ptr %p, align 4 723afd9582bSKai Luo %vecinit1 = insertelement <4 x float> <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00>, float %0, i32 2 724afd9582bSKai Luo ret <4 x float> %vecinit1 725afd9582bSKai Luo} 726afd9582bSKai Luo 727afd9582bSKai Luodefine <4 x float> @build_v4f32_load_3(ptr nocapture noundef readonly %p) { 728afd9582bSKai Luo; PWR7-BE-LABEL: build_v4f32_load_3: 729afd9582bSKai Luo; PWR7-BE: # %bb.0: # %entry 730afd9582bSKai Luo; PWR7-BE-NEXT: lwz 3, 0(3) 731afd9582bSKai Luo; PWR7-BE-NEXT: li 4, 0 732afd9582bSKai Luo; PWR7-BE-NEXT: stw 4, -32(1) 733afd9582bSKai Luo; PWR7-BE-NEXT: stw 3, -16(1) 734afd9582bSKai Luo; PWR7-BE-NEXT: addis 3, 2, .LCPI15_0@toc@ha 735afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 3, .LCPI15_0@toc@l 736afd9582bSKai Luo; PWR7-BE-NEXT: lxvw4x 34, 0, 3 737afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 1, -32 738afd9582bSKai Luo; PWR7-BE-NEXT: lxvw4x 35, 0, 3 739afd9582bSKai Luo; PWR7-BE-NEXT: addi 3, 1, -16 740afd9582bSKai Luo; PWR7-BE-NEXT: lxvw4x 36, 0, 3 741afd9582bSKai Luo; PWR7-BE-NEXT: vperm 2, 3, 4, 2 742afd9582bSKai Luo; PWR7-BE-NEXT: blr 743afd9582bSKai Luo; 744afd9582bSKai Luo; PWR8-BE-LABEL: build_v4f32_load_3: 745afd9582bSKai Luo; PWR8-BE: # %bb.0: # %entry 746afd9582bSKai Luo; PWR8-BE-NEXT: lfs 0, 0(3) 747afd9582bSKai Luo; PWR8-BE-NEXT: xxlxor 1, 1, 1 748afd9582bSKai Luo; PWR8-BE-NEXT: xxmrghd 0, 1, 0 749afd9582bSKai Luo; PWR8-BE-NEXT: xxspltd 1, 1, 0 750afd9582bSKai Luo; PWR8-BE-NEXT: xvcvdpsp 34, 0 751afd9582bSKai Luo; PWR8-BE-NEXT: xvcvdpsp 35, 1 752afd9582bSKai Luo; PWR8-BE-NEXT: vmrgew 2, 3, 2 753afd9582bSKai Luo; PWR8-BE-NEXT: blr 754afd9582bSKai Luo; 755afd9582bSKai Luo; PWR7-LE-LABEL: build_v4f32_load_3: 756afd9582bSKai Luo; PWR7-LE: # %bb.0: # %entry 757afd9582bSKai Luo; PWR7-LE-NEXT: li 4, 0 758afd9582bSKai Luo; PWR7-LE-NEXT: lwz 3, 0(3) 759afd9582bSKai Luo; PWR7-LE-NEXT: stw 4, -32(1) 760afd9582bSKai Luo; PWR7-LE-NEXT: addis 4, 2, .LCPI15_0@toc@ha 761afd9582bSKai Luo; PWR7-LE-NEXT: addi 4, 4, .LCPI15_0@toc@l 762afd9582bSKai Luo; PWR7-LE-NEXT: stw 3, -16(1) 763afd9582bSKai Luo; PWR7-LE-NEXT: addi 3, 1, -16 764afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 0, 0, 4 765afd9582bSKai Luo; PWR7-LE-NEXT: addi 4, 1, -32 766afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 1, 0, 4 767afd9582bSKai Luo; PWR7-LE-NEXT: xxswapd 34, 0 768afd9582bSKai Luo; PWR7-LE-NEXT: lxvd2x 0, 0, 3 769afd9582bSKai Luo; PWR7-LE-NEXT: xxswapd 35, 1 770afd9582bSKai Luo; PWR7-LE-NEXT: xxswapd 36, 0 771afd9582bSKai Luo; PWR7-LE-NEXT: vperm 2, 4, 3, 2 772afd9582bSKai Luo; PWR7-LE-NEXT: blr 773afd9582bSKai Luo; 774afd9582bSKai Luo; PWR8-LE-LABEL: build_v4f32_load_3: 775afd9582bSKai Luo; PWR8-LE: # %bb.0: # %entry 776afd9582bSKai Luo; PWR8-LE-NEXT: lfs 0, 0(3) 777afd9582bSKai Luo; PWR8-LE-NEXT: xxlxor 1, 1, 1 778afd9582bSKai Luo; PWR8-LE-NEXT: xxmrghd 0, 0, 1 779afd9582bSKai Luo; PWR8-LE-NEXT: xxspltd 1, 1, 0 780afd9582bSKai Luo; PWR8-LE-NEXT: xvcvdpsp 34, 0 781afd9582bSKai Luo; PWR8-LE-NEXT: xvcvdpsp 35, 1 782afd9582bSKai Luo; PWR8-LE-NEXT: vmrgew 2, 2, 3 783afd9582bSKai Luo; PWR8-LE-NEXT: blr 784afd9582bSKai Luoentry: 785afd9582bSKai Luo %0 = load float, ptr %p, align 4 786afd9582bSKai Luo %vecinit1 = insertelement <4 x float> <float 0.000000e+00, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00>, float %0, i32 3 787afd9582bSKai Luo ret <4 x float> %vecinit1 788afd9582bSKai Luo} 789