1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=arm64-apple-ios7.0 -disable-post-ra -o - %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker@ptr = global i8* null 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_v8i8_pre_load(<8 x i8>* %addr) { 6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i8_pre_load: 7*9880d681SAndroid Build Coastguard Worker; CHECK: ldr d0, [x0, #40]! 8*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <8 x i8>, <8 x i8>* %addr, i32 5 9*9880d681SAndroid Build Coastguard Worker %val = load <8 x i8>, <8 x i8>* %newaddr, align 8 10*9880d681SAndroid Build Coastguard Worker store <8 x i8>* %newaddr, <8 x i8>** bitcast(i8** @ptr to <8 x i8>**) 11*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %val 12*9880d681SAndroid Build Coastguard Worker} 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_v8i8_post_load(<8 x i8>* %addr) { 15*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i8_post_load: 16*9880d681SAndroid Build Coastguard Worker; CHECK: ldr d0, [x0], #40 17*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <8 x i8>, <8 x i8>* %addr, i32 5 18*9880d681SAndroid Build Coastguard Worker %val = load <8 x i8>, <8 x i8>* %addr, align 8 19*9880d681SAndroid Build Coastguard Worker store <8 x i8>* %newaddr, <8 x i8>** bitcast(i8** @ptr to <8 x i8>**) 20*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %val 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerdefine void @test_v8i8_pre_store(<8 x i8> %in, <8 x i8>* %addr) { 24*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i8_pre_store: 25*9880d681SAndroid Build Coastguard Worker; CHECK: str d0, [x0, #40]! 26*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <8 x i8>, <8 x i8>* %addr, i32 5 27*9880d681SAndroid Build Coastguard Worker store <8 x i8> %in, <8 x i8>* %newaddr, align 8 28*9880d681SAndroid Build Coastguard Worker store <8 x i8>* %newaddr, <8 x i8>** bitcast(i8** @ptr to <8 x i8>**) 29*9880d681SAndroid Build Coastguard Worker ret void 30*9880d681SAndroid Build Coastguard Worker} 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Workerdefine void @test_v8i8_post_store(<8 x i8> %in, <8 x i8>* %addr) { 33*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i8_post_store: 34*9880d681SAndroid Build Coastguard Worker; CHECK: str d0, [x0], #40 35*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <8 x i8>, <8 x i8>* %addr, i32 5 36*9880d681SAndroid Build Coastguard Worker store <8 x i8> %in, <8 x i8>* %addr, align 8 37*9880d681SAndroid Build Coastguard Worker store <8 x i8>* %newaddr, <8 x i8>** bitcast(i8** @ptr to <8 x i8>**) 38*9880d681SAndroid Build Coastguard Worker ret void 39*9880d681SAndroid Build Coastguard Worker} 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_v4i16_pre_load(<4 x i16>* %addr) { 42*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i16_pre_load: 43*9880d681SAndroid Build Coastguard Worker; CHECK: ldr d0, [x0, #40]! 44*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <4 x i16>, <4 x i16>* %addr, i32 5 45*9880d681SAndroid Build Coastguard Worker %val = load <4 x i16>, <4 x i16>* %newaddr, align 8 46*9880d681SAndroid Build Coastguard Worker store <4 x i16>* %newaddr, <4 x i16>** bitcast(i8** @ptr to <4 x i16>**) 47*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %val 48*9880d681SAndroid Build Coastguard Worker} 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_v4i16_post_load(<4 x i16>* %addr) { 51*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i16_post_load: 52*9880d681SAndroid Build Coastguard Worker; CHECK: ldr d0, [x0], #40 53*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <4 x i16>, <4 x i16>* %addr, i32 5 54*9880d681SAndroid Build Coastguard Worker %val = load <4 x i16>, <4 x i16>* %addr, align 8 55*9880d681SAndroid Build Coastguard Worker store <4 x i16>* %newaddr, <4 x i16>** bitcast(i8** @ptr to <4 x i16>**) 56*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %val 57*9880d681SAndroid Build Coastguard Worker} 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Workerdefine void @test_v4i16_pre_store(<4 x i16> %in, <4 x i16>* %addr) { 60*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i16_pre_store: 61*9880d681SAndroid Build Coastguard Worker; CHECK: str d0, [x0, #40]! 62*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <4 x i16>, <4 x i16>* %addr, i32 5 63*9880d681SAndroid Build Coastguard Worker store <4 x i16> %in, <4 x i16>* %newaddr, align 8 64*9880d681SAndroid Build Coastguard Worker store <4 x i16>* %newaddr, <4 x i16>** bitcast(i8** @ptr to <4 x i16>**) 65*9880d681SAndroid Build Coastguard Worker ret void 66*9880d681SAndroid Build Coastguard Worker} 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Workerdefine void @test_v4i16_post_store(<4 x i16> %in, <4 x i16>* %addr) { 69*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i16_post_store: 70*9880d681SAndroid Build Coastguard Worker; CHECK: str d0, [x0], #40 71*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <4 x i16>, <4 x i16>* %addr, i32 5 72*9880d681SAndroid Build Coastguard Worker store <4 x i16> %in, <4 x i16>* %addr, align 8 73*9880d681SAndroid Build Coastguard Worker store <4 x i16>* %newaddr, <4 x i16>** bitcast(i8** @ptr to <4 x i16>**) 74*9880d681SAndroid Build Coastguard Worker ret void 75*9880d681SAndroid Build Coastguard Worker} 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_v2i32_pre_load(<2 x i32>* %addr) { 78*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i32_pre_load: 79*9880d681SAndroid Build Coastguard Worker; CHECK: ldr d0, [x0, #40]! 80*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <2 x i32>, <2 x i32>* %addr, i32 5 81*9880d681SAndroid Build Coastguard Worker %val = load <2 x i32>, <2 x i32>* %newaddr, align 8 82*9880d681SAndroid Build Coastguard Worker store <2 x i32>* %newaddr, <2 x i32>** bitcast(i8** @ptr to <2 x i32>**) 83*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %val 84*9880d681SAndroid Build Coastguard Worker} 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_v2i32_post_load(<2 x i32>* %addr) { 87*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i32_post_load: 88*9880d681SAndroid Build Coastguard Worker; CHECK: ldr d0, [x0], #40 89*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <2 x i32>, <2 x i32>* %addr, i32 5 90*9880d681SAndroid Build Coastguard Worker %val = load <2 x i32>, <2 x i32>* %addr, align 8 91*9880d681SAndroid Build Coastguard Worker store <2 x i32>* %newaddr, <2 x i32>** bitcast(i8** @ptr to <2 x i32>**) 92*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %val 93*9880d681SAndroid Build Coastguard Worker} 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Workerdefine void @test_v2i32_pre_store(<2 x i32> %in, <2 x i32>* %addr) { 96*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i32_pre_store: 97*9880d681SAndroid Build Coastguard Worker; CHECK: str d0, [x0, #40]! 98*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <2 x i32>, <2 x i32>* %addr, i32 5 99*9880d681SAndroid Build Coastguard Worker store <2 x i32> %in, <2 x i32>* %newaddr, align 8 100*9880d681SAndroid Build Coastguard Worker store <2 x i32>* %newaddr, <2 x i32>** bitcast(i8** @ptr to <2 x i32>**) 101*9880d681SAndroid Build Coastguard Worker ret void 102*9880d681SAndroid Build Coastguard Worker} 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Workerdefine void @test_v2i32_post_store(<2 x i32> %in, <2 x i32>* %addr) { 105*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i32_post_store: 106*9880d681SAndroid Build Coastguard Worker; CHECK: str d0, [x0], #40 107*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <2 x i32>, <2 x i32>* %addr, i32 5 108*9880d681SAndroid Build Coastguard Worker store <2 x i32> %in, <2 x i32>* %addr, align 8 109*9880d681SAndroid Build Coastguard Worker store <2 x i32>* %newaddr, <2 x i32>** bitcast(i8** @ptr to <2 x i32>**) 110*9880d681SAndroid Build Coastguard Worker ret void 111*9880d681SAndroid Build Coastguard Worker} 112*9880d681SAndroid Build Coastguard Worker 113*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @test_v2f32_pre_load(<2 x float>* %addr) { 114*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_pre_load: 115*9880d681SAndroid Build Coastguard Worker; CHECK: ldr d0, [x0, #40]! 116*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <2 x float>, <2 x float>* %addr, i32 5 117*9880d681SAndroid Build Coastguard Worker %val = load <2 x float>, <2 x float>* %newaddr, align 8 118*9880d681SAndroid Build Coastguard Worker store <2 x float>* %newaddr, <2 x float>** bitcast(i8** @ptr to <2 x float>**) 119*9880d681SAndroid Build Coastguard Worker ret <2 x float> %val 120*9880d681SAndroid Build Coastguard Worker} 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @test_v2f32_post_load(<2 x float>* %addr) { 123*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_post_load: 124*9880d681SAndroid Build Coastguard Worker; CHECK: ldr d0, [x0], #40 125*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <2 x float>, <2 x float>* %addr, i32 5 126*9880d681SAndroid Build Coastguard Worker %val = load <2 x float>, <2 x float>* %addr, align 8 127*9880d681SAndroid Build Coastguard Worker store <2 x float>* %newaddr, <2 x float>** bitcast(i8** @ptr to <2 x float>**) 128*9880d681SAndroid Build Coastguard Worker ret <2 x float> %val 129*9880d681SAndroid Build Coastguard Worker} 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Workerdefine void @test_v2f32_pre_store(<2 x float> %in, <2 x float>* %addr) { 132*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_pre_store: 133*9880d681SAndroid Build Coastguard Worker; CHECK: str d0, [x0, #40]! 134*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <2 x float>, <2 x float>* %addr, i32 5 135*9880d681SAndroid Build Coastguard Worker store <2 x float> %in, <2 x float>* %newaddr, align 8 136*9880d681SAndroid Build Coastguard Worker store <2 x float>* %newaddr, <2 x float>** bitcast(i8** @ptr to <2 x float>**) 137*9880d681SAndroid Build Coastguard Worker ret void 138*9880d681SAndroid Build Coastguard Worker} 139*9880d681SAndroid Build Coastguard Worker 140*9880d681SAndroid Build Coastguard Workerdefine void @test_v2f32_post_store(<2 x float> %in, <2 x float>* %addr) { 141*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_post_store: 142*9880d681SAndroid Build Coastguard Worker; CHECK: str d0, [x0], #40 143*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <2 x float>, <2 x float>* %addr, i32 5 144*9880d681SAndroid Build Coastguard Worker store <2 x float> %in, <2 x float>* %addr, align 8 145*9880d681SAndroid Build Coastguard Worker store <2 x float>* %newaddr, <2 x float>** bitcast(i8** @ptr to <2 x float>**) 146*9880d681SAndroid Build Coastguard Worker ret void 147*9880d681SAndroid Build Coastguard Worker} 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @test_v1i64_pre_load(<1 x i64>* %addr) { 150*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v1i64_pre_load: 151*9880d681SAndroid Build Coastguard Worker; CHECK: ldr d0, [x0, #40]! 152*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <1 x i64>, <1 x i64>* %addr, i32 5 153*9880d681SAndroid Build Coastguard Worker %val = load <1 x i64>, <1 x i64>* %newaddr, align 8 154*9880d681SAndroid Build Coastguard Worker store <1 x i64>* %newaddr, <1 x i64>** bitcast(i8** @ptr to <1 x i64>**) 155*9880d681SAndroid Build Coastguard Worker ret <1 x i64> %val 156*9880d681SAndroid Build Coastguard Worker} 157*9880d681SAndroid Build Coastguard Worker 158*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @test_v1i64_post_load(<1 x i64>* %addr) { 159*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v1i64_post_load: 160*9880d681SAndroid Build Coastguard Worker; CHECK: ldr d0, [x0], #40 161*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <1 x i64>, <1 x i64>* %addr, i32 5 162*9880d681SAndroid Build Coastguard Worker %val = load <1 x i64>, <1 x i64>* %addr, align 8 163*9880d681SAndroid Build Coastguard Worker store <1 x i64>* %newaddr, <1 x i64>** bitcast(i8** @ptr to <1 x i64>**) 164*9880d681SAndroid Build Coastguard Worker ret <1 x i64> %val 165*9880d681SAndroid Build Coastguard Worker} 166*9880d681SAndroid Build Coastguard Worker 167*9880d681SAndroid Build Coastguard Workerdefine void @test_v1i64_pre_store(<1 x i64> %in, <1 x i64>* %addr) { 168*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v1i64_pre_store: 169*9880d681SAndroid Build Coastguard Worker; CHECK: str d0, [x0, #40]! 170*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <1 x i64>, <1 x i64>* %addr, i32 5 171*9880d681SAndroid Build Coastguard Worker store <1 x i64> %in, <1 x i64>* %newaddr, align 8 172*9880d681SAndroid Build Coastguard Worker store <1 x i64>* %newaddr, <1 x i64>** bitcast(i8** @ptr to <1 x i64>**) 173*9880d681SAndroid Build Coastguard Worker ret void 174*9880d681SAndroid Build Coastguard Worker} 175*9880d681SAndroid Build Coastguard Worker 176*9880d681SAndroid Build Coastguard Workerdefine void @test_v1i64_post_store(<1 x i64> %in, <1 x i64>* %addr) { 177*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v1i64_post_store: 178*9880d681SAndroid Build Coastguard Worker; CHECK: str d0, [x0], #40 179*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <1 x i64>, <1 x i64>* %addr, i32 5 180*9880d681SAndroid Build Coastguard Worker store <1 x i64> %in, <1 x i64>* %addr, align 8 181*9880d681SAndroid Build Coastguard Worker store <1 x i64>* %newaddr, <1 x i64>** bitcast(i8** @ptr to <1 x i64>**) 182*9880d681SAndroid Build Coastguard Worker ret void 183*9880d681SAndroid Build Coastguard Worker} 184*9880d681SAndroid Build Coastguard Worker 185*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_v16i8_pre_load(<16 x i8>* %addr) { 186*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v16i8_pre_load: 187*9880d681SAndroid Build Coastguard Worker; CHECK: ldr q0, [x0, #80]! 188*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <16 x i8>, <16 x i8>* %addr, i32 5 189*9880d681SAndroid Build Coastguard Worker %val = load <16 x i8>, <16 x i8>* %newaddr, align 8 190*9880d681SAndroid Build Coastguard Worker store <16 x i8>* %newaddr, <16 x i8>** bitcast(i8** @ptr to <16 x i8>**) 191*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %val 192*9880d681SAndroid Build Coastguard Worker} 193*9880d681SAndroid Build Coastguard Worker 194*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_v16i8_post_load(<16 x i8>* %addr) { 195*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v16i8_post_load: 196*9880d681SAndroid Build Coastguard Worker; CHECK: ldr q0, [x0], #80 197*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <16 x i8>, <16 x i8>* %addr, i32 5 198*9880d681SAndroid Build Coastguard Worker %val = load <16 x i8>, <16 x i8>* %addr, align 8 199*9880d681SAndroid Build Coastguard Worker store <16 x i8>* %newaddr, <16 x i8>** bitcast(i8** @ptr to <16 x i8>**) 200*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %val 201*9880d681SAndroid Build Coastguard Worker} 202*9880d681SAndroid Build Coastguard Worker 203*9880d681SAndroid Build Coastguard Workerdefine void @test_v16i8_pre_store(<16 x i8> %in, <16 x i8>* %addr) { 204*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v16i8_pre_store: 205*9880d681SAndroid Build Coastguard Worker; CHECK: str q0, [x0, #80]! 206*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <16 x i8>, <16 x i8>* %addr, i32 5 207*9880d681SAndroid Build Coastguard Worker store <16 x i8> %in, <16 x i8>* %newaddr, align 8 208*9880d681SAndroid Build Coastguard Worker store <16 x i8>* %newaddr, <16 x i8>** bitcast(i8** @ptr to <16 x i8>**) 209*9880d681SAndroid Build Coastguard Worker ret void 210*9880d681SAndroid Build Coastguard Worker} 211*9880d681SAndroid Build Coastguard Worker 212*9880d681SAndroid Build Coastguard Workerdefine void @test_v16i8_post_store(<16 x i8> %in, <16 x i8>* %addr) { 213*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v16i8_post_store: 214*9880d681SAndroid Build Coastguard Worker; CHECK: str q0, [x0], #80 215*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <16 x i8>, <16 x i8>* %addr, i32 5 216*9880d681SAndroid Build Coastguard Worker store <16 x i8> %in, <16 x i8>* %addr, align 8 217*9880d681SAndroid Build Coastguard Worker store <16 x i8>* %newaddr, <16 x i8>** bitcast(i8** @ptr to <16 x i8>**) 218*9880d681SAndroid Build Coastguard Worker ret void 219*9880d681SAndroid Build Coastguard Worker} 220*9880d681SAndroid Build Coastguard Worker 221*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_v8i16_pre_load(<8 x i16>* %addr) { 222*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i16_pre_load: 223*9880d681SAndroid Build Coastguard Worker; CHECK: ldr q0, [x0, #80]! 224*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <8 x i16>, <8 x i16>* %addr, i32 5 225*9880d681SAndroid Build Coastguard Worker %val = load <8 x i16>, <8 x i16>* %newaddr, align 8 226*9880d681SAndroid Build Coastguard Worker store <8 x i16>* %newaddr, <8 x i16>** bitcast(i8** @ptr to <8 x i16>**) 227*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %val 228*9880d681SAndroid Build Coastguard Worker} 229*9880d681SAndroid Build Coastguard Worker 230*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_v8i16_post_load(<8 x i16>* %addr) { 231*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i16_post_load: 232*9880d681SAndroid Build Coastguard Worker; CHECK: ldr q0, [x0], #80 233*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <8 x i16>, <8 x i16>* %addr, i32 5 234*9880d681SAndroid Build Coastguard Worker %val = load <8 x i16>, <8 x i16>* %addr, align 8 235*9880d681SAndroid Build Coastguard Worker store <8 x i16>* %newaddr, <8 x i16>** bitcast(i8** @ptr to <8 x i16>**) 236*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %val 237*9880d681SAndroid Build Coastguard Worker} 238*9880d681SAndroid Build Coastguard Worker 239*9880d681SAndroid Build Coastguard Workerdefine void @test_v8i16_pre_store(<8 x i16> %in, <8 x i16>* %addr) { 240*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i16_pre_store: 241*9880d681SAndroid Build Coastguard Worker; CHECK: str q0, [x0, #80]! 242*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <8 x i16>, <8 x i16>* %addr, i32 5 243*9880d681SAndroid Build Coastguard Worker store <8 x i16> %in, <8 x i16>* %newaddr, align 8 244*9880d681SAndroid Build Coastguard Worker store <8 x i16>* %newaddr, <8 x i16>** bitcast(i8** @ptr to <8 x i16>**) 245*9880d681SAndroid Build Coastguard Worker ret void 246*9880d681SAndroid Build Coastguard Worker} 247*9880d681SAndroid Build Coastguard Worker 248*9880d681SAndroid Build Coastguard Workerdefine void @test_v8i16_post_store(<8 x i16> %in, <8 x i16>* %addr) { 249*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i16_post_store: 250*9880d681SAndroid Build Coastguard Worker; CHECK: str q0, [x0], #80 251*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <8 x i16>, <8 x i16>* %addr, i32 5 252*9880d681SAndroid Build Coastguard Worker store <8 x i16> %in, <8 x i16>* %addr, align 8 253*9880d681SAndroid Build Coastguard Worker store <8 x i16>* %newaddr, <8 x i16>** bitcast(i8** @ptr to <8 x i16>**) 254*9880d681SAndroid Build Coastguard Worker ret void 255*9880d681SAndroid Build Coastguard Worker} 256*9880d681SAndroid Build Coastguard Worker 257*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_v4i32_pre_load(<4 x i32>* %addr) { 258*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i32_pre_load: 259*9880d681SAndroid Build Coastguard Worker; CHECK: ldr q0, [x0, #80]! 260*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <4 x i32>, <4 x i32>* %addr, i32 5 261*9880d681SAndroid Build Coastguard Worker %val = load <4 x i32>, <4 x i32>* %newaddr, align 8 262*9880d681SAndroid Build Coastguard Worker store <4 x i32>* %newaddr, <4 x i32>** bitcast(i8** @ptr to <4 x i32>**) 263*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %val 264*9880d681SAndroid Build Coastguard Worker} 265*9880d681SAndroid Build Coastguard Worker 266*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_v4i32_post_load(<4 x i32>* %addr) { 267*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i32_post_load: 268*9880d681SAndroid Build Coastguard Worker; CHECK: ldr q0, [x0], #80 269*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <4 x i32>, <4 x i32>* %addr, i32 5 270*9880d681SAndroid Build Coastguard Worker %val = load <4 x i32>, <4 x i32>* %addr, align 8 271*9880d681SAndroid Build Coastguard Worker store <4 x i32>* %newaddr, <4 x i32>** bitcast(i8** @ptr to <4 x i32>**) 272*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %val 273*9880d681SAndroid Build Coastguard Worker} 274*9880d681SAndroid Build Coastguard Worker 275*9880d681SAndroid Build Coastguard Workerdefine void @test_v4i32_pre_store(<4 x i32> %in, <4 x i32>* %addr) { 276*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i32_pre_store: 277*9880d681SAndroid Build Coastguard Worker; CHECK: str q0, [x0, #80]! 278*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <4 x i32>, <4 x i32>* %addr, i32 5 279*9880d681SAndroid Build Coastguard Worker store <4 x i32> %in, <4 x i32>* %newaddr, align 8 280*9880d681SAndroid Build Coastguard Worker store <4 x i32>* %newaddr, <4 x i32>** bitcast(i8** @ptr to <4 x i32>**) 281*9880d681SAndroid Build Coastguard Worker ret void 282*9880d681SAndroid Build Coastguard Worker} 283*9880d681SAndroid Build Coastguard Worker 284*9880d681SAndroid Build Coastguard Workerdefine void @test_v4i32_post_store(<4 x i32> %in, <4 x i32>* %addr) { 285*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i32_post_store: 286*9880d681SAndroid Build Coastguard Worker; CHECK: str q0, [x0], #80 287*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <4 x i32>, <4 x i32>* %addr, i32 5 288*9880d681SAndroid Build Coastguard Worker store <4 x i32> %in, <4 x i32>* %addr, align 8 289*9880d681SAndroid Build Coastguard Worker store <4 x i32>* %newaddr, <4 x i32>** bitcast(i8** @ptr to <4 x i32>**) 290*9880d681SAndroid Build Coastguard Worker ret void 291*9880d681SAndroid Build Coastguard Worker} 292*9880d681SAndroid Build Coastguard Worker 293*9880d681SAndroid Build Coastguard Worker 294*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_v4f32_pre_load(<4 x float>* %addr) { 295*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_pre_load: 296*9880d681SAndroid Build Coastguard Worker; CHECK: ldr q0, [x0, #80]! 297*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <4 x float>, <4 x float>* %addr, i32 5 298*9880d681SAndroid Build Coastguard Worker %val = load <4 x float>, <4 x float>* %newaddr, align 8 299*9880d681SAndroid Build Coastguard Worker store <4 x float>* %newaddr, <4 x float>** bitcast(i8** @ptr to <4 x float>**) 300*9880d681SAndroid Build Coastguard Worker ret <4 x float> %val 301*9880d681SAndroid Build Coastguard Worker} 302*9880d681SAndroid Build Coastguard Worker 303*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_v4f32_post_load(<4 x float>* %addr) { 304*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_post_load: 305*9880d681SAndroid Build Coastguard Worker; CHECK: ldr q0, [x0], #80 306*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <4 x float>, <4 x float>* %addr, i32 5 307*9880d681SAndroid Build Coastguard Worker %val = load <4 x float>, <4 x float>* %addr, align 8 308*9880d681SAndroid Build Coastguard Worker store <4 x float>* %newaddr, <4 x float>** bitcast(i8** @ptr to <4 x float>**) 309*9880d681SAndroid Build Coastguard Worker ret <4 x float> %val 310*9880d681SAndroid Build Coastguard Worker} 311*9880d681SAndroid Build Coastguard Worker 312*9880d681SAndroid Build Coastguard Workerdefine void @test_v4f32_pre_store(<4 x float> %in, <4 x float>* %addr) { 313*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_pre_store: 314*9880d681SAndroid Build Coastguard Worker; CHECK: str q0, [x0, #80]! 315*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <4 x float>, <4 x float>* %addr, i32 5 316*9880d681SAndroid Build Coastguard Worker store <4 x float> %in, <4 x float>* %newaddr, align 8 317*9880d681SAndroid Build Coastguard Worker store <4 x float>* %newaddr, <4 x float>** bitcast(i8** @ptr to <4 x float>**) 318*9880d681SAndroid Build Coastguard Worker ret void 319*9880d681SAndroid Build Coastguard Worker} 320*9880d681SAndroid Build Coastguard Worker 321*9880d681SAndroid Build Coastguard Workerdefine void @test_v4f32_post_store(<4 x float> %in, <4 x float>* %addr) { 322*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_post_store: 323*9880d681SAndroid Build Coastguard Worker; CHECK: str q0, [x0], #80 324*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <4 x float>, <4 x float>* %addr, i32 5 325*9880d681SAndroid Build Coastguard Worker store <4 x float> %in, <4 x float>* %addr, align 8 326*9880d681SAndroid Build Coastguard Worker store <4 x float>* %newaddr, <4 x float>** bitcast(i8** @ptr to <4 x float>**) 327*9880d681SAndroid Build Coastguard Worker ret void 328*9880d681SAndroid Build Coastguard Worker} 329*9880d681SAndroid Build Coastguard Worker 330*9880d681SAndroid Build Coastguard Worker 331*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_v2i64_pre_load(<2 x i64>* %addr) { 332*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i64_pre_load: 333*9880d681SAndroid Build Coastguard Worker; CHECK: ldr q0, [x0, #80]! 334*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <2 x i64>, <2 x i64>* %addr, i32 5 335*9880d681SAndroid Build Coastguard Worker %val = load <2 x i64>, <2 x i64>* %newaddr, align 8 336*9880d681SAndroid Build Coastguard Worker store <2 x i64>* %newaddr, <2 x i64>** bitcast(i8** @ptr to <2 x i64>**) 337*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %val 338*9880d681SAndroid Build Coastguard Worker} 339*9880d681SAndroid Build Coastguard Worker 340*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_v2i64_post_load(<2 x i64>* %addr) { 341*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i64_post_load: 342*9880d681SAndroid Build Coastguard Worker; CHECK: ldr q0, [x0], #80 343*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <2 x i64>, <2 x i64>* %addr, i32 5 344*9880d681SAndroid Build Coastguard Worker %val = load <2 x i64>, <2 x i64>* %addr, align 8 345*9880d681SAndroid Build Coastguard Worker store <2 x i64>* %newaddr, <2 x i64>** bitcast(i8** @ptr to <2 x i64>**) 346*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %val 347*9880d681SAndroid Build Coastguard Worker} 348*9880d681SAndroid Build Coastguard Worker 349*9880d681SAndroid Build Coastguard Workerdefine void @test_v2i64_pre_store(<2 x i64> %in, <2 x i64>* %addr) { 350*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i64_pre_store: 351*9880d681SAndroid Build Coastguard Worker; CHECK: str q0, [x0, #80]! 352*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <2 x i64>, <2 x i64>* %addr, i32 5 353*9880d681SAndroid Build Coastguard Worker store <2 x i64> %in, <2 x i64>* %newaddr, align 8 354*9880d681SAndroid Build Coastguard Worker store <2 x i64>* %newaddr, <2 x i64>** bitcast(i8** @ptr to <2 x i64>**) 355*9880d681SAndroid Build Coastguard Worker ret void 356*9880d681SAndroid Build Coastguard Worker} 357*9880d681SAndroid Build Coastguard Worker 358*9880d681SAndroid Build Coastguard Workerdefine void @test_v2i64_post_store(<2 x i64> %in, <2 x i64>* %addr) { 359*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i64_post_store: 360*9880d681SAndroid Build Coastguard Worker; CHECK: str q0, [x0], #80 361*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <2 x i64>, <2 x i64>* %addr, i32 5 362*9880d681SAndroid Build Coastguard Worker store <2 x i64> %in, <2 x i64>* %addr, align 8 363*9880d681SAndroid Build Coastguard Worker store <2 x i64>* %newaddr, <2 x i64>** bitcast(i8** @ptr to <2 x i64>**) 364*9880d681SAndroid Build Coastguard Worker ret void 365*9880d681SAndroid Build Coastguard Worker} 366*9880d681SAndroid Build Coastguard Worker 367*9880d681SAndroid Build Coastguard Worker 368*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_v2f64_pre_load(<2 x double>* %addr) { 369*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_pre_load: 370*9880d681SAndroid Build Coastguard Worker; CHECK: ldr q0, [x0, #80]! 371*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <2 x double>, <2 x double>* %addr, i32 5 372*9880d681SAndroid Build Coastguard Worker %val = load <2 x double>, <2 x double>* %newaddr, align 8 373*9880d681SAndroid Build Coastguard Worker store <2 x double>* %newaddr, <2 x double>** bitcast(i8** @ptr to <2 x double>**) 374*9880d681SAndroid Build Coastguard Worker ret <2 x double> %val 375*9880d681SAndroid Build Coastguard Worker} 376*9880d681SAndroid Build Coastguard Worker 377*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_v2f64_post_load(<2 x double>* %addr) { 378*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_post_load: 379*9880d681SAndroid Build Coastguard Worker; CHECK: ldr q0, [x0], #80 380*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <2 x double>, <2 x double>* %addr, i32 5 381*9880d681SAndroid Build Coastguard Worker %val = load <2 x double>, <2 x double>* %addr, align 8 382*9880d681SAndroid Build Coastguard Worker store <2 x double>* %newaddr, <2 x double>** bitcast(i8** @ptr to <2 x double>**) 383*9880d681SAndroid Build Coastguard Worker ret <2 x double> %val 384*9880d681SAndroid Build Coastguard Worker} 385*9880d681SAndroid Build Coastguard Worker 386*9880d681SAndroid Build Coastguard Workerdefine void @test_v2f64_pre_store(<2 x double> %in, <2 x double>* %addr) { 387*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_pre_store: 388*9880d681SAndroid Build Coastguard Worker; CHECK: str q0, [x0, #80]! 389*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <2 x double>, <2 x double>* %addr, i32 5 390*9880d681SAndroid Build Coastguard Worker store <2 x double> %in, <2 x double>* %newaddr, align 8 391*9880d681SAndroid Build Coastguard Worker store <2 x double>* %newaddr, <2 x double>** bitcast(i8** @ptr to <2 x double>**) 392*9880d681SAndroid Build Coastguard Worker ret void 393*9880d681SAndroid Build Coastguard Worker} 394*9880d681SAndroid Build Coastguard Worker 395*9880d681SAndroid Build Coastguard Workerdefine void @test_v2f64_post_store(<2 x double> %in, <2 x double>* %addr) { 396*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_post_store: 397*9880d681SAndroid Build Coastguard Worker; CHECK: str q0, [x0], #80 398*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr <2 x double>, <2 x double>* %addr, i32 5 399*9880d681SAndroid Build Coastguard Worker store <2 x double> %in, <2 x double>* %addr, align 8 400*9880d681SAndroid Build Coastguard Worker store <2 x double>* %newaddr, <2 x double>** bitcast(i8** @ptr to <2 x double>**) 401*9880d681SAndroid Build Coastguard Worker ret void 402*9880d681SAndroid Build Coastguard Worker} 403*9880d681SAndroid Build Coastguard Worker 404*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_imm_st1_lane(<16 x i8> %in, i8* %addr) { 405*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v16i8_post_imm_st1_lane: 406*9880d681SAndroid Build Coastguard Worker; CHECK: st1.b { v0 }[3], [x0], #1 407*9880d681SAndroid Build Coastguard Worker %elt = extractelement <16 x i8> %in, i32 3 408*9880d681SAndroid Build Coastguard Worker store i8 %elt, i8* %addr 409*9880d681SAndroid Build Coastguard Worker 410*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr i8, i8* %addr, i32 1 411*9880d681SAndroid Build Coastguard Worker ret i8* %newaddr 412*9880d681SAndroid Build Coastguard Worker} 413*9880d681SAndroid Build Coastguard Worker 414*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_reg_st1_lane(<16 x i8> %in, i8* %addr) { 415*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v16i8_post_reg_st1_lane: 416*9880d681SAndroid Build Coastguard Worker; CHECK: orr w[[OFFSET:[0-9]+]], wzr, #0x2 417*9880d681SAndroid Build Coastguard Worker; CHECK: st1.b { v0 }[3], [x0], x[[OFFSET]] 418*9880d681SAndroid Build Coastguard Worker %elt = extractelement <16 x i8> %in, i32 3 419*9880d681SAndroid Build Coastguard Worker store i8 %elt, i8* %addr 420*9880d681SAndroid Build Coastguard Worker 421*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr i8, i8* %addr, i32 2 422*9880d681SAndroid Build Coastguard Worker ret i8* %newaddr 423*9880d681SAndroid Build Coastguard Worker} 424*9880d681SAndroid Build Coastguard Worker 425*9880d681SAndroid Build Coastguard Worker 426*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_imm_st1_lane(<8 x i16> %in, i16* %addr) { 427*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i16_post_imm_st1_lane: 428*9880d681SAndroid Build Coastguard Worker; CHECK: st1.h { v0 }[3], [x0], #2 429*9880d681SAndroid Build Coastguard Worker %elt = extractelement <8 x i16> %in, i32 3 430*9880d681SAndroid Build Coastguard Worker store i16 %elt, i16* %addr 431*9880d681SAndroid Build Coastguard Worker 432*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr i16, i16* %addr, i32 1 433*9880d681SAndroid Build Coastguard Worker ret i16* %newaddr 434*9880d681SAndroid Build Coastguard Worker} 435*9880d681SAndroid Build Coastguard Worker 436*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_reg_st1_lane(<8 x i16> %in, i16* %addr) { 437*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i16_post_reg_st1_lane: 438*9880d681SAndroid Build Coastguard Worker; CHECK: orr w[[OFFSET:[0-9]+]], wzr, #0x4 439*9880d681SAndroid Build Coastguard Worker; CHECK: st1.h { v0 }[3], [x0], x[[OFFSET]] 440*9880d681SAndroid Build Coastguard Worker %elt = extractelement <8 x i16> %in, i32 3 441*9880d681SAndroid Build Coastguard Worker store i16 %elt, i16* %addr 442*9880d681SAndroid Build Coastguard Worker 443*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr i16, i16* %addr, i32 2 444*9880d681SAndroid Build Coastguard Worker ret i16* %newaddr 445*9880d681SAndroid Build Coastguard Worker} 446*9880d681SAndroid Build Coastguard Worker 447*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_imm_st1_lane(<4 x i32> %in, i32* %addr) { 448*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i32_post_imm_st1_lane: 449*9880d681SAndroid Build Coastguard Worker; CHECK: st1.s { v0 }[3], [x0], #4 450*9880d681SAndroid Build Coastguard Worker %elt = extractelement <4 x i32> %in, i32 3 451*9880d681SAndroid Build Coastguard Worker store i32 %elt, i32* %addr 452*9880d681SAndroid Build Coastguard Worker 453*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr i32, i32* %addr, i32 1 454*9880d681SAndroid Build Coastguard Worker ret i32* %newaddr 455*9880d681SAndroid Build Coastguard Worker} 456*9880d681SAndroid Build Coastguard Worker 457*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_reg_st1_lane(<4 x i32> %in, i32* %addr) { 458*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i32_post_reg_st1_lane: 459*9880d681SAndroid Build Coastguard Worker; CHECK: orr w[[OFFSET:[0-9]+]], wzr, #0x8 460*9880d681SAndroid Build Coastguard Worker; CHECK: st1.s { v0 }[3], [x0], x[[OFFSET]] 461*9880d681SAndroid Build Coastguard Worker %elt = extractelement <4 x i32> %in, i32 3 462*9880d681SAndroid Build Coastguard Worker store i32 %elt, i32* %addr 463*9880d681SAndroid Build Coastguard Worker 464*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr i32, i32* %addr, i32 2 465*9880d681SAndroid Build Coastguard Worker ret i32* %newaddr 466*9880d681SAndroid Build Coastguard Worker} 467*9880d681SAndroid Build Coastguard Worker 468*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_imm_st1_lane(<4 x float> %in, float* %addr) { 469*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_post_imm_st1_lane: 470*9880d681SAndroid Build Coastguard Worker; CHECK: st1.s { v0 }[3], [x0], #4 471*9880d681SAndroid Build Coastguard Worker %elt = extractelement <4 x float> %in, i32 3 472*9880d681SAndroid Build Coastguard Worker store float %elt, float* %addr 473*9880d681SAndroid Build Coastguard Worker 474*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr float, float* %addr, i32 1 475*9880d681SAndroid Build Coastguard Worker ret float* %newaddr 476*9880d681SAndroid Build Coastguard Worker} 477*9880d681SAndroid Build Coastguard Worker 478*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_reg_st1_lane(<4 x float> %in, float* %addr) { 479*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_post_reg_st1_lane: 480*9880d681SAndroid Build Coastguard Worker; CHECK: orr w[[OFFSET:[0-9]+]], wzr, #0x8 481*9880d681SAndroid Build Coastguard Worker; CHECK: st1.s { v0 }[3], [x0], x[[OFFSET]] 482*9880d681SAndroid Build Coastguard Worker %elt = extractelement <4 x float> %in, i32 3 483*9880d681SAndroid Build Coastguard Worker store float %elt, float* %addr 484*9880d681SAndroid Build Coastguard Worker 485*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr float, float* %addr, i32 2 486*9880d681SAndroid Build Coastguard Worker ret float* %newaddr 487*9880d681SAndroid Build Coastguard Worker} 488*9880d681SAndroid Build Coastguard Worker 489*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_imm_st1_lane(<2 x i64> %in, i64* %addr) { 490*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i64_post_imm_st1_lane: 491*9880d681SAndroid Build Coastguard Worker; CHECK: st1.d { v0 }[1], [x0], #8 492*9880d681SAndroid Build Coastguard Worker %elt = extractelement <2 x i64> %in, i64 1 493*9880d681SAndroid Build Coastguard Worker store i64 %elt, i64* %addr 494*9880d681SAndroid Build Coastguard Worker 495*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr i64, i64* %addr, i64 1 496*9880d681SAndroid Build Coastguard Worker ret i64* %newaddr 497*9880d681SAndroid Build Coastguard Worker} 498*9880d681SAndroid Build Coastguard Worker 499*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_reg_st1_lane(<2 x i64> %in, i64* %addr) { 500*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i64_post_reg_st1_lane: 501*9880d681SAndroid Build Coastguard Worker; CHECK: orr w[[OFFSET:[0-9]+]], wzr, #0x10 502*9880d681SAndroid Build Coastguard Worker; CHECK: st1.d { v0 }[1], [x0], x[[OFFSET]] 503*9880d681SAndroid Build Coastguard Worker %elt = extractelement <2 x i64> %in, i64 1 504*9880d681SAndroid Build Coastguard Worker store i64 %elt, i64* %addr 505*9880d681SAndroid Build Coastguard Worker 506*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr i64, i64* %addr, i64 2 507*9880d681SAndroid Build Coastguard Worker ret i64* %newaddr 508*9880d681SAndroid Build Coastguard Worker} 509*9880d681SAndroid Build Coastguard Worker 510*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_imm_st1_lane(<2 x double> %in, double* %addr) { 511*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_post_imm_st1_lane: 512*9880d681SAndroid Build Coastguard Worker; CHECK: st1.d { v0 }[1], [x0], #8 513*9880d681SAndroid Build Coastguard Worker %elt = extractelement <2 x double> %in, i32 1 514*9880d681SAndroid Build Coastguard Worker store double %elt, double* %addr 515*9880d681SAndroid Build Coastguard Worker 516*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr double, double* %addr, i32 1 517*9880d681SAndroid Build Coastguard Worker ret double* %newaddr 518*9880d681SAndroid Build Coastguard Worker} 519*9880d681SAndroid Build Coastguard Worker 520*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_reg_st1_lane(<2 x double> %in, double* %addr) { 521*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_post_reg_st1_lane: 522*9880d681SAndroid Build Coastguard Worker; CHECK: orr w[[OFFSET:[0-9]+]], wzr, #0x10 523*9880d681SAndroid Build Coastguard Worker; CHECK: st1.d { v0 }[1], [x0], x[[OFFSET]] 524*9880d681SAndroid Build Coastguard Worker %elt = extractelement <2 x double> %in, i32 1 525*9880d681SAndroid Build Coastguard Worker store double %elt, double* %addr 526*9880d681SAndroid Build Coastguard Worker 527*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr double, double* %addr, i32 2 528*9880d681SAndroid Build Coastguard Worker ret double* %newaddr 529*9880d681SAndroid Build Coastguard Worker} 530*9880d681SAndroid Build Coastguard Worker 531*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_imm_st1_lane(<8 x i8> %in, i8* %addr) { 532*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i8_post_imm_st1_lane: 533*9880d681SAndroid Build Coastguard Worker; CHECK: st1.b { v0 }[3], [x0], #1 534*9880d681SAndroid Build Coastguard Worker %elt = extractelement <8 x i8> %in, i32 3 535*9880d681SAndroid Build Coastguard Worker store i8 %elt, i8* %addr 536*9880d681SAndroid Build Coastguard Worker 537*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr i8, i8* %addr, i32 1 538*9880d681SAndroid Build Coastguard Worker ret i8* %newaddr 539*9880d681SAndroid Build Coastguard Worker} 540*9880d681SAndroid Build Coastguard Worker 541*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_reg_st1_lane(<8 x i8> %in, i8* %addr) { 542*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i8_post_reg_st1_lane: 543*9880d681SAndroid Build Coastguard Worker; CHECK: orr w[[OFFSET:[0-9]+]], wzr, #0x2 544*9880d681SAndroid Build Coastguard Worker; CHECK: st1.b { v0 }[3], [x0], x[[OFFSET]] 545*9880d681SAndroid Build Coastguard Worker %elt = extractelement <8 x i8> %in, i32 3 546*9880d681SAndroid Build Coastguard Worker store i8 %elt, i8* %addr 547*9880d681SAndroid Build Coastguard Worker 548*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr i8, i8* %addr, i32 2 549*9880d681SAndroid Build Coastguard Worker ret i8* %newaddr 550*9880d681SAndroid Build Coastguard Worker} 551*9880d681SAndroid Build Coastguard Worker 552*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_imm_st1_lane(<4 x i16> %in, i16* %addr) { 553*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i16_post_imm_st1_lane: 554*9880d681SAndroid Build Coastguard Worker; CHECK: st1.h { v0 }[3], [x0], #2 555*9880d681SAndroid Build Coastguard Worker %elt = extractelement <4 x i16> %in, i32 3 556*9880d681SAndroid Build Coastguard Worker store i16 %elt, i16* %addr 557*9880d681SAndroid Build Coastguard Worker 558*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr i16, i16* %addr, i32 1 559*9880d681SAndroid Build Coastguard Worker ret i16* %newaddr 560*9880d681SAndroid Build Coastguard Worker} 561*9880d681SAndroid Build Coastguard Worker 562*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_reg_st1_lane(<4 x i16> %in, i16* %addr) { 563*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i16_post_reg_st1_lane: 564*9880d681SAndroid Build Coastguard Worker; CHECK: orr w[[OFFSET:[0-9]+]], wzr, #0x4 565*9880d681SAndroid Build Coastguard Worker; CHECK: st1.h { v0 }[3], [x0], x[[OFFSET]] 566*9880d681SAndroid Build Coastguard Worker %elt = extractelement <4 x i16> %in, i32 3 567*9880d681SAndroid Build Coastguard Worker store i16 %elt, i16* %addr 568*9880d681SAndroid Build Coastguard Worker 569*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr i16, i16* %addr, i32 2 570*9880d681SAndroid Build Coastguard Worker ret i16* %newaddr 571*9880d681SAndroid Build Coastguard Worker} 572*9880d681SAndroid Build Coastguard Worker 573*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_imm_st1_lane(<2 x i32> %in, i32* %addr) { 574*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i32_post_imm_st1_lane: 575*9880d681SAndroid Build Coastguard Worker; CHECK: st1.s { v0 }[1], [x0], #4 576*9880d681SAndroid Build Coastguard Worker %elt = extractelement <2 x i32> %in, i32 1 577*9880d681SAndroid Build Coastguard Worker store i32 %elt, i32* %addr 578*9880d681SAndroid Build Coastguard Worker 579*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr i32, i32* %addr, i32 1 580*9880d681SAndroid Build Coastguard Worker ret i32* %newaddr 581*9880d681SAndroid Build Coastguard Worker} 582*9880d681SAndroid Build Coastguard Worker 583*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_reg_st1_lane(<2 x i32> %in, i32* %addr) { 584*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i32_post_reg_st1_lane: 585*9880d681SAndroid Build Coastguard Worker; CHECK: orr w[[OFFSET:[0-9]+]], wzr, #0x8 586*9880d681SAndroid Build Coastguard Worker; CHECK: st1.s { v0 }[1], [x0], x[[OFFSET]] 587*9880d681SAndroid Build Coastguard Worker %elt = extractelement <2 x i32> %in, i32 1 588*9880d681SAndroid Build Coastguard Worker store i32 %elt, i32* %addr 589*9880d681SAndroid Build Coastguard Worker 590*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr i32, i32* %addr, i32 2 591*9880d681SAndroid Build Coastguard Worker ret i32* %newaddr 592*9880d681SAndroid Build Coastguard Worker} 593*9880d681SAndroid Build Coastguard Worker 594*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_imm_st1_lane(<2 x float> %in, float* %addr) { 595*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_post_imm_st1_lane: 596*9880d681SAndroid Build Coastguard Worker; CHECK: st1.s { v0 }[1], [x0], #4 597*9880d681SAndroid Build Coastguard Worker %elt = extractelement <2 x float> %in, i32 1 598*9880d681SAndroid Build Coastguard Worker store float %elt, float* %addr 599*9880d681SAndroid Build Coastguard Worker 600*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr float, float* %addr, i32 1 601*9880d681SAndroid Build Coastguard Worker ret float* %newaddr 602*9880d681SAndroid Build Coastguard Worker} 603*9880d681SAndroid Build Coastguard Worker 604*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_reg_st1_lane(<2 x float> %in, float* %addr) { 605*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_post_reg_st1_lane: 606*9880d681SAndroid Build Coastguard Worker; CHECK: orr w[[OFFSET:[0-9]+]], wzr, #0x8 607*9880d681SAndroid Build Coastguard Worker; CHECK: st1.s { v0 }[1], [x0], x[[OFFSET]] 608*9880d681SAndroid Build Coastguard Worker %elt = extractelement <2 x float> %in, i32 1 609*9880d681SAndroid Build Coastguard Worker store float %elt, float* %addr 610*9880d681SAndroid Build Coastguard Worker 611*9880d681SAndroid Build Coastguard Worker %newaddr = getelementptr float, float* %addr, i32 2 612*9880d681SAndroid Build Coastguard Worker ret float* %newaddr 613*9880d681SAndroid Build Coastguard Worker} 614*9880d681SAndroid Build Coastguard Worker 615*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8> } @test_v16i8_post_imm_ld2(i8* %A, i8** %ptr) { 616*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_ld2: 617*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.16b { v0, v1 }, [x0], #32 618*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2.v16i8.p0i8(i8* %A) 619*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 32 620*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 621*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8> } %ld2 622*9880d681SAndroid Build Coastguard Worker} 623*9880d681SAndroid Build Coastguard Worker 624*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8> } @test_v16i8_post_reg_ld2(i8* %A, i8** %ptr, i64 %inc) { 625*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_ld2: 626*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.16b { v0, v1 }, [x0], x{{[0-9]+}} 627*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2.v16i8.p0i8(i8* %A) 628*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 629*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 630*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8> } %ld2 631*9880d681SAndroid Build Coastguard Worker} 632*9880d681SAndroid Build Coastguard Worker 633*9880d681SAndroid Build Coastguard Workerdeclare { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2.v16i8.p0i8(i8*) 634*9880d681SAndroid Build Coastguard Worker 635*9880d681SAndroid Build Coastguard Worker 636*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8> } @test_v8i8_post_imm_ld2(i8* %A, i8** %ptr) { 637*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_ld2: 638*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.8b { v0, v1 }, [x0], #16 639*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2.v8i8.p0i8(i8* %A) 640*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 16 641*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 642*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8> } %ld2 643*9880d681SAndroid Build Coastguard Worker} 644*9880d681SAndroid Build Coastguard Worker 645*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8> } @test_v8i8_post_reg_ld2(i8* %A, i8** %ptr, i64 %inc) { 646*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_ld2: 647*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.8b { v0, v1 }, [x0], x{{[0-9]+}} 648*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2.v8i8.p0i8(i8* %A) 649*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 650*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 651*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8> } %ld2 652*9880d681SAndroid Build Coastguard Worker} 653*9880d681SAndroid Build Coastguard Worker 654*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2.v8i8.p0i8(i8*) 655*9880d681SAndroid Build Coastguard Worker 656*9880d681SAndroid Build Coastguard Worker 657*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16> } @test_v8i16_post_imm_ld2(i16* %A, i16** %ptr) { 658*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_ld2: 659*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.8h { v0, v1 }, [x0], #32 660*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2.v8i16.p0i16(i16* %A) 661*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 16 662*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 663*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16> } %ld2 664*9880d681SAndroid Build Coastguard Worker} 665*9880d681SAndroid Build Coastguard Worker 666*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16> } @test_v8i16_post_reg_ld2(i16* %A, i16** %ptr, i64 %inc) { 667*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_ld2: 668*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.8h { v0, v1 }, [x0], x{{[0-9]+}} 669*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2.v8i16.p0i16(i16* %A) 670*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 671*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 672*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16> } %ld2 673*9880d681SAndroid Build Coastguard Worker} 674*9880d681SAndroid Build Coastguard Worker 675*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2.v8i16.p0i16(i16*) 676*9880d681SAndroid Build Coastguard Worker 677*9880d681SAndroid Build Coastguard Worker 678*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16> } @test_v4i16_post_imm_ld2(i16* %A, i16** %ptr) { 679*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_ld2: 680*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.4h { v0, v1 }, [x0], #16 681*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2.v4i16.p0i16(i16* %A) 682*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 8 683*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 684*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16> } %ld2 685*9880d681SAndroid Build Coastguard Worker} 686*9880d681SAndroid Build Coastguard Worker 687*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16> } @test_v4i16_post_reg_ld2(i16* %A, i16** %ptr, i64 %inc) { 688*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_ld2: 689*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.4h { v0, v1 }, [x0], x{{[0-9]+}} 690*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2.v4i16.p0i16(i16* %A) 691*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 692*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 693*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16> } %ld2 694*9880d681SAndroid Build Coastguard Worker} 695*9880d681SAndroid Build Coastguard Worker 696*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2.v4i16.p0i16(i16*) 697*9880d681SAndroid Build Coastguard Worker 698*9880d681SAndroid Build Coastguard Worker 699*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32> } @test_v4i32_post_imm_ld2(i32* %A, i32** %ptr) { 700*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_ld2: 701*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.4s { v0, v1 }, [x0], #32 702*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2.v4i32.p0i32(i32* %A) 703*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 8 704*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 705*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32> } %ld2 706*9880d681SAndroid Build Coastguard Worker} 707*9880d681SAndroid Build Coastguard Worker 708*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32> } @test_v4i32_post_reg_ld2(i32* %A, i32** %ptr, i64 %inc) { 709*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_ld2: 710*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.4s { v0, v1 }, [x0], x{{[0-9]+}} 711*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2.v4i32.p0i32(i32* %A) 712*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 713*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 714*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32> } %ld2 715*9880d681SAndroid Build Coastguard Worker} 716*9880d681SAndroid Build Coastguard Worker 717*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2.v4i32.p0i32(i32*) 718*9880d681SAndroid Build Coastguard Worker 719*9880d681SAndroid Build Coastguard Worker 720*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32> } @test_v2i32_post_imm_ld2(i32* %A, i32** %ptr) { 721*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_ld2: 722*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.2s { v0, v1 }, [x0], #16 723*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld2.v2i32.p0i32(i32* %A) 724*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 4 725*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 726*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32> } %ld2 727*9880d681SAndroid Build Coastguard Worker} 728*9880d681SAndroid Build Coastguard Worker 729*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32> } @test_v2i32_post_reg_ld2(i32* %A, i32** %ptr, i64 %inc) { 730*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_ld2: 731*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.2s { v0, v1 }, [x0], x{{[0-9]+}} 732*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld2.v2i32.p0i32(i32* %A) 733*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 734*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 735*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32> } %ld2 736*9880d681SAndroid Build Coastguard Worker} 737*9880d681SAndroid Build Coastguard Worker 738*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld2.v2i32.p0i32(i32*) 739*9880d681SAndroid Build Coastguard Worker 740*9880d681SAndroid Build Coastguard Worker 741*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64> } @test_v2i64_post_imm_ld2(i64* %A, i64** %ptr) { 742*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_ld2: 743*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.2d { v0, v1 }, [x0], #32 744*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2.v2i64.p0i64(i64* %A) 745*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 4 746*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 747*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64> } %ld2 748*9880d681SAndroid Build Coastguard Worker} 749*9880d681SAndroid Build Coastguard Worker 750*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64> } @test_v2i64_post_reg_ld2(i64* %A, i64** %ptr, i64 %inc) { 751*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_ld2: 752*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.2d { v0, v1 }, [x0], x{{[0-9]+}} 753*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2.v2i64.p0i64(i64* %A) 754*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 755*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 756*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64> } %ld2 757*9880d681SAndroid Build Coastguard Worker} 758*9880d681SAndroid Build Coastguard Worker 759*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2.v2i64.p0i64(i64*) 760*9880d681SAndroid Build Coastguard Worker 761*9880d681SAndroid Build Coastguard Worker 762*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64> } @test_v1i64_post_imm_ld2(i64* %A, i64** %ptr) { 763*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_ld2: 764*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1 }, [x0], #16 765*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2.v1i64.p0i64(i64* %A) 766*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 2 767*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 768*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64> } %ld2 769*9880d681SAndroid Build Coastguard Worker} 770*9880d681SAndroid Build Coastguard Worker 771*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64> } @test_v1i64_post_reg_ld2(i64* %A, i64** %ptr, i64 %inc) { 772*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_ld2: 773*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1 }, [x0], x{{[0-9]+}} 774*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2.v1i64.p0i64(i64* %A) 775*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 776*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 777*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64> } %ld2 778*9880d681SAndroid Build Coastguard Worker} 779*9880d681SAndroid Build Coastguard Worker 780*9880d681SAndroid Build Coastguard Workerdeclare { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2.v1i64.p0i64(i64*) 781*9880d681SAndroid Build Coastguard Worker 782*9880d681SAndroid Build Coastguard Worker 783*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float> } @test_v4f32_post_imm_ld2(float* %A, float** %ptr) { 784*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_ld2: 785*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.4s { v0, v1 }, [x0], #32 786*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <4 x float>, <4 x float> } @llvm.aarch64.neon.ld2.v4f32.p0f32(float* %A) 787*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 8 788*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 789*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float> } %ld2 790*9880d681SAndroid Build Coastguard Worker} 791*9880d681SAndroid Build Coastguard Worker 792*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float> } @test_v4f32_post_reg_ld2(float* %A, float** %ptr, i64 %inc) { 793*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_ld2: 794*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.4s { v0, v1 }, [x0], x{{[0-9]+}} 795*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <4 x float>, <4 x float> } @llvm.aarch64.neon.ld2.v4f32.p0f32(float* %A) 796*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 797*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 798*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float> } %ld2 799*9880d681SAndroid Build Coastguard Worker} 800*9880d681SAndroid Build Coastguard Worker 801*9880d681SAndroid Build Coastguard Workerdeclare { <4 x float>, <4 x float> } @llvm.aarch64.neon.ld2.v4f32.p0f32(float*) 802*9880d681SAndroid Build Coastguard Worker 803*9880d681SAndroid Build Coastguard Worker 804*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float> } @test_v2f32_post_imm_ld2(float* %A, float** %ptr) { 805*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_ld2: 806*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.2s { v0, v1 }, [x0], #16 807*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <2 x float>, <2 x float> } @llvm.aarch64.neon.ld2.v2f32.p0f32(float* %A) 808*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 4 809*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 810*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float> } %ld2 811*9880d681SAndroid Build Coastguard Worker} 812*9880d681SAndroid Build Coastguard Worker 813*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float> } @test_v2f32_post_reg_ld2(float* %A, float** %ptr, i64 %inc) { 814*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_ld2: 815*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.2s { v0, v1 }, [x0], x{{[0-9]+}} 816*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <2 x float>, <2 x float> } @llvm.aarch64.neon.ld2.v2f32.p0f32(float* %A) 817*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 818*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 819*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float> } %ld2 820*9880d681SAndroid Build Coastguard Worker} 821*9880d681SAndroid Build Coastguard Worker 822*9880d681SAndroid Build Coastguard Workerdeclare { <2 x float>, <2 x float> } @llvm.aarch64.neon.ld2.v2f32.p0f32(float*) 823*9880d681SAndroid Build Coastguard Worker 824*9880d681SAndroid Build Coastguard Worker 825*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double> } @test_v2f64_post_imm_ld2(double* %A, double** %ptr) { 826*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_ld2: 827*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.2d { v0, v1 }, [x0], #32 828*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld2.v2f64.p0f64(double* %A) 829*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 4 830*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 831*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double> } %ld2 832*9880d681SAndroid Build Coastguard Worker} 833*9880d681SAndroid Build Coastguard Worker 834*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double> } @test_v2f64_post_reg_ld2(double* %A, double** %ptr, i64 %inc) { 835*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_ld2: 836*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.2d { v0, v1 }, [x0], x{{[0-9]+}} 837*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld2.v2f64.p0f64(double* %A) 838*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 839*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 840*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double> } %ld2 841*9880d681SAndroid Build Coastguard Worker} 842*9880d681SAndroid Build Coastguard Worker 843*9880d681SAndroid Build Coastguard Workerdeclare { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld2.v2f64.p0f64(double*) 844*9880d681SAndroid Build Coastguard Worker 845*9880d681SAndroid Build Coastguard Worker 846*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double> } @test_v1f64_post_imm_ld2(double* %A, double** %ptr) { 847*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_ld2: 848*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1 }, [x0], #16 849*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld2.v1f64.p0f64(double* %A) 850*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 2 851*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 852*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double> } %ld2 853*9880d681SAndroid Build Coastguard Worker} 854*9880d681SAndroid Build Coastguard Worker 855*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double> } @test_v1f64_post_reg_ld2(double* %A, double** %ptr, i64 %inc) { 856*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_ld2: 857*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1 }, [x0], x{{[0-9]+}} 858*9880d681SAndroid Build Coastguard Worker %ld2 = tail call { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld2.v1f64.p0f64(double* %A) 859*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 860*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 861*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double> } %ld2 862*9880d681SAndroid Build Coastguard Worker} 863*9880d681SAndroid Build Coastguard Worker 864*9880d681SAndroid Build Coastguard Workerdeclare { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld2.v1f64.p0f64(double*) 865*9880d681SAndroid Build Coastguard Worker 866*9880d681SAndroid Build Coastguard Worker 867*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8>, <16 x i8> } @test_v16i8_post_imm_ld3(i8* %A, i8** %ptr) { 868*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_ld3: 869*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.16b { v0, v1, v2 }, [x0], #48 870*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3.v16i8.p0i8(i8* %A) 871*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 48 872*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 873*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8>, <16 x i8> } %ld3 874*9880d681SAndroid Build Coastguard Worker} 875*9880d681SAndroid Build Coastguard Worker 876*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8>, <16 x i8> } @test_v16i8_post_reg_ld3(i8* %A, i8** %ptr, i64 %inc) { 877*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_ld3: 878*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.16b { v0, v1, v2 }, [x0], x{{[0-9]+}} 879*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3.v16i8.p0i8(i8* %A) 880*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 881*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 882*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8>, <16 x i8> } %ld3 883*9880d681SAndroid Build Coastguard Worker} 884*9880d681SAndroid Build Coastguard Worker 885*9880d681SAndroid Build Coastguard Workerdeclare { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3.v16i8.p0i8(i8*) 886*9880d681SAndroid Build Coastguard Worker 887*9880d681SAndroid Build Coastguard Worker 888*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8>, <8 x i8> } @test_v8i8_post_imm_ld3(i8* %A, i8** %ptr) { 889*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_ld3: 890*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.8b { v0, v1, v2 }, [x0], #24 891*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3.v8i8.p0i8(i8* %A) 892*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 24 893*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 894*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8>, <8 x i8> } %ld3 895*9880d681SAndroid Build Coastguard Worker} 896*9880d681SAndroid Build Coastguard Worker 897*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8>, <8 x i8> } @test_v8i8_post_reg_ld3(i8* %A, i8** %ptr, i64 %inc) { 898*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_ld3: 899*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.8b { v0, v1, v2 }, [x0], x{{[0-9]+}} 900*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3.v8i8.p0i8(i8* %A) 901*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 902*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 903*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8>, <8 x i8> } %ld3 904*9880d681SAndroid Build Coastguard Worker} 905*9880d681SAndroid Build Coastguard Worker 906*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3.v8i8.p0i8(i8*) 907*9880d681SAndroid Build Coastguard Worker 908*9880d681SAndroid Build Coastguard Worker 909*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16>, <8 x i16> } @test_v8i16_post_imm_ld3(i16* %A, i16** %ptr) { 910*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_ld3: 911*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.8h { v0, v1, v2 }, [x0], #48 912*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3.v8i16.p0i16(i16* %A) 913*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 24 914*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 915*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16>, <8 x i16> } %ld3 916*9880d681SAndroid Build Coastguard Worker} 917*9880d681SAndroid Build Coastguard Worker 918*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16>, <8 x i16> } @test_v8i16_post_reg_ld3(i16* %A, i16** %ptr, i64 %inc) { 919*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_ld3: 920*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.8h { v0, v1, v2 }, [x0], x{{[0-9]+}} 921*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3.v8i16.p0i16(i16* %A) 922*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 923*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 924*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16>, <8 x i16> } %ld3 925*9880d681SAndroid Build Coastguard Worker} 926*9880d681SAndroid Build Coastguard Worker 927*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3.v8i16.p0i16(i16*) 928*9880d681SAndroid Build Coastguard Worker 929*9880d681SAndroid Build Coastguard Worker 930*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16>, <4 x i16> } @test_v4i16_post_imm_ld3(i16* %A, i16** %ptr) { 931*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_ld3: 932*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.4h { v0, v1, v2 }, [x0], #24 933*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3.v4i16.p0i16(i16* %A) 934*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 12 935*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 936*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16>, <4 x i16> } %ld3 937*9880d681SAndroid Build Coastguard Worker} 938*9880d681SAndroid Build Coastguard Worker 939*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16>, <4 x i16> } @test_v4i16_post_reg_ld3(i16* %A, i16** %ptr, i64 %inc) { 940*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_ld3: 941*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.4h { v0, v1, v2 }, [x0], x{{[0-9]+}} 942*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3.v4i16.p0i16(i16* %A) 943*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 944*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 945*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16>, <4 x i16> } %ld3 946*9880d681SAndroid Build Coastguard Worker} 947*9880d681SAndroid Build Coastguard Worker 948*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3.v4i16.p0i16(i16*) 949*9880d681SAndroid Build Coastguard Worker 950*9880d681SAndroid Build Coastguard Worker 951*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32>, <4 x i32> } @test_v4i32_post_imm_ld3(i32* %A, i32** %ptr) { 952*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_ld3: 953*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.4s { v0, v1, v2 }, [x0], #48 954*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3.v4i32.p0i32(i32* %A) 955*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 12 956*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 957*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32>, <4 x i32> } %ld3 958*9880d681SAndroid Build Coastguard Worker} 959*9880d681SAndroid Build Coastguard Worker 960*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32>, <4 x i32> } @test_v4i32_post_reg_ld3(i32* %A, i32** %ptr, i64 %inc) { 961*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_ld3: 962*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.4s { v0, v1, v2 }, [x0], x{{[0-9]+}} 963*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3.v4i32.p0i32(i32* %A) 964*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 965*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 966*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32>, <4 x i32> } %ld3 967*9880d681SAndroid Build Coastguard Worker} 968*9880d681SAndroid Build Coastguard Worker 969*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3.v4i32.p0i32(i32*) 970*9880d681SAndroid Build Coastguard Worker 971*9880d681SAndroid Build Coastguard Worker 972*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32>, <2 x i32> } @test_v2i32_post_imm_ld3(i32* %A, i32** %ptr) { 973*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_ld3: 974*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.2s { v0, v1, v2 }, [x0], #24 975*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld3.v2i32.p0i32(i32* %A) 976*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 6 977*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 978*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32>, <2 x i32> } %ld3 979*9880d681SAndroid Build Coastguard Worker} 980*9880d681SAndroid Build Coastguard Worker 981*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32>, <2 x i32> } @test_v2i32_post_reg_ld3(i32* %A, i32** %ptr, i64 %inc) { 982*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_ld3: 983*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.2s { v0, v1, v2 }, [x0], x{{[0-9]+}} 984*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld3.v2i32.p0i32(i32* %A) 985*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 986*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 987*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32>, <2 x i32> } %ld3 988*9880d681SAndroid Build Coastguard Worker} 989*9880d681SAndroid Build Coastguard Worker 990*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld3.v2i32.p0i32(i32*) 991*9880d681SAndroid Build Coastguard Worker 992*9880d681SAndroid Build Coastguard Worker 993*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64>, <2 x i64> } @test_v2i64_post_imm_ld3(i64* %A, i64** %ptr) { 994*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_ld3: 995*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.2d { v0, v1, v2 }, [x0], #48 996*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3.v2i64.p0i64(i64* %A) 997*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 6 998*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 999*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64>, <2 x i64> } %ld3 1000*9880d681SAndroid Build Coastguard Worker} 1001*9880d681SAndroid Build Coastguard Worker 1002*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64>, <2 x i64> } @test_v2i64_post_reg_ld3(i64* %A, i64** %ptr, i64 %inc) { 1003*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_ld3: 1004*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.2d { v0, v1, v2 }, [x0], x{{[0-9]+}} 1005*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3.v2i64.p0i64(i64* %A) 1006*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 1007*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 1008*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64>, <2 x i64> } %ld3 1009*9880d681SAndroid Build Coastguard Worker} 1010*9880d681SAndroid Build Coastguard Worker 1011*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3.v2i64.p0i64(i64*) 1012*9880d681SAndroid Build Coastguard Worker 1013*9880d681SAndroid Build Coastguard Worker 1014*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64>, <1 x i64> } @test_v1i64_post_imm_ld3(i64* %A, i64** %ptr) { 1015*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_ld3: 1016*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1, v2 }, [x0], #24 1017*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3.v1i64.p0i64(i64* %A) 1018*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 3 1019*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 1020*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64>, <1 x i64> } %ld3 1021*9880d681SAndroid Build Coastguard Worker} 1022*9880d681SAndroid Build Coastguard Worker 1023*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64>, <1 x i64> } @test_v1i64_post_reg_ld3(i64* %A, i64** %ptr, i64 %inc) { 1024*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_ld3: 1025*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1, v2 }, [x0], x{{[0-9]+}} 1026*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3.v1i64.p0i64(i64* %A) 1027*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 1028*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 1029*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64>, <1 x i64> } %ld3 1030*9880d681SAndroid Build Coastguard Worker} 1031*9880d681SAndroid Build Coastguard Worker 1032*9880d681SAndroid Build Coastguard Workerdeclare { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3.v1i64.p0i64(i64*) 1033*9880d681SAndroid Build Coastguard Worker 1034*9880d681SAndroid Build Coastguard Worker 1035*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float>, <4 x float> } @test_v4f32_post_imm_ld3(float* %A, float** %ptr) { 1036*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_ld3: 1037*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.4s { v0, v1, v2 }, [x0], #48 1038*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld3.v4f32.p0f32(float* %A) 1039*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 12 1040*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 1041*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float>, <4 x float> } %ld3 1042*9880d681SAndroid Build Coastguard Worker} 1043*9880d681SAndroid Build Coastguard Worker 1044*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float>, <4 x float> } @test_v4f32_post_reg_ld3(float* %A, float** %ptr, i64 %inc) { 1045*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_ld3: 1046*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.4s { v0, v1, v2 }, [x0], x{{[0-9]+}} 1047*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld3.v4f32.p0f32(float* %A) 1048*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 1049*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 1050*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float>, <4 x float> } %ld3 1051*9880d681SAndroid Build Coastguard Worker} 1052*9880d681SAndroid Build Coastguard Worker 1053*9880d681SAndroid Build Coastguard Workerdeclare { <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld3.v4f32.p0f32(float*) 1054*9880d681SAndroid Build Coastguard Worker 1055*9880d681SAndroid Build Coastguard Worker 1056*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float>, <2 x float> } @test_v2f32_post_imm_ld3(float* %A, float** %ptr) { 1057*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_ld3: 1058*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.2s { v0, v1, v2 }, [x0], #24 1059*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld3.v2f32.p0f32(float* %A) 1060*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 6 1061*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 1062*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float>, <2 x float> } %ld3 1063*9880d681SAndroid Build Coastguard Worker} 1064*9880d681SAndroid Build Coastguard Worker 1065*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float>, <2 x float> } @test_v2f32_post_reg_ld3(float* %A, float** %ptr, i64 %inc) { 1066*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_ld3: 1067*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.2s { v0, v1, v2 }, [x0], x{{[0-9]+}} 1068*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld3.v2f32.p0f32(float* %A) 1069*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 1070*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 1071*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float>, <2 x float> } %ld3 1072*9880d681SAndroid Build Coastguard Worker} 1073*9880d681SAndroid Build Coastguard Worker 1074*9880d681SAndroid Build Coastguard Workerdeclare { <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld3.v2f32.p0f32(float*) 1075*9880d681SAndroid Build Coastguard Worker 1076*9880d681SAndroid Build Coastguard Worker 1077*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double>, <2 x double> } @test_v2f64_post_imm_ld3(double* %A, double** %ptr) { 1078*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_ld3: 1079*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.2d { v0, v1, v2 }, [x0], #48 1080*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld3.v2f64.p0f64(double* %A) 1081*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 6 1082*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 1083*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double>, <2 x double> } %ld3 1084*9880d681SAndroid Build Coastguard Worker} 1085*9880d681SAndroid Build Coastguard Worker 1086*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double>, <2 x double> } @test_v2f64_post_reg_ld3(double* %A, double** %ptr, i64 %inc) { 1087*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_ld3: 1088*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.2d { v0, v1, v2 }, [x0], x{{[0-9]+}} 1089*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld3.v2f64.p0f64(double* %A) 1090*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 1091*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 1092*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double>, <2 x double> } %ld3 1093*9880d681SAndroid Build Coastguard Worker} 1094*9880d681SAndroid Build Coastguard Worker 1095*9880d681SAndroid Build Coastguard Workerdeclare { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld3.v2f64.p0f64(double*) 1096*9880d681SAndroid Build Coastguard Worker 1097*9880d681SAndroid Build Coastguard Worker 1098*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double>, <1 x double> } @test_v1f64_post_imm_ld3(double* %A, double** %ptr) { 1099*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_ld3: 1100*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1, v2 }, [x0], #24 1101*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld3.v1f64.p0f64(double* %A) 1102*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 3 1103*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 1104*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double>, <1 x double> } %ld3 1105*9880d681SAndroid Build Coastguard Worker} 1106*9880d681SAndroid Build Coastguard Worker 1107*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double>, <1 x double> } @test_v1f64_post_reg_ld3(double* %A, double** %ptr, i64 %inc) { 1108*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_ld3: 1109*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1, v2 }, [x0], x{{[0-9]+}} 1110*9880d681SAndroid Build Coastguard Worker %ld3 = tail call { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld3.v1f64.p0f64(double* %A) 1111*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 1112*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 1113*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double>, <1 x double> } %ld3 1114*9880d681SAndroid Build Coastguard Worker} 1115*9880d681SAndroid Build Coastguard Worker 1116*9880d681SAndroid Build Coastguard Workerdeclare { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld3.v1f64.p0f64(double*) 1117*9880d681SAndroid Build Coastguard Worker 1118*9880d681SAndroid Build Coastguard Worker 1119*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @test_v16i8_post_imm_ld4(i8* %A, i8** %ptr) { 1120*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_ld4: 1121*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.16b { v0, v1, v2, v3 }, [x0], #64 1122*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4.v16i8.p0i8(i8* %A) 1123*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 64 1124*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 1125*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } %ld4 1126*9880d681SAndroid Build Coastguard Worker} 1127*9880d681SAndroid Build Coastguard Worker 1128*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @test_v16i8_post_reg_ld4(i8* %A, i8** %ptr, i64 %inc) { 1129*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_ld4: 1130*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.16b { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1131*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4.v16i8.p0i8(i8* %A) 1132*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 1133*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 1134*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } %ld4 1135*9880d681SAndroid Build Coastguard Worker} 1136*9880d681SAndroid Build Coastguard Worker 1137*9880d681SAndroid Build Coastguard Workerdeclare { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4.v16i8.p0i8(i8*) 1138*9880d681SAndroid Build Coastguard Worker 1139*9880d681SAndroid Build Coastguard Worker 1140*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @test_v8i8_post_imm_ld4(i8* %A, i8** %ptr) { 1141*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_ld4: 1142*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.8b { v0, v1, v2, v3 }, [x0], #32 1143*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4.v8i8.p0i8(i8* %A) 1144*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 32 1145*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 1146*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } %ld4 1147*9880d681SAndroid Build Coastguard Worker} 1148*9880d681SAndroid Build Coastguard Worker 1149*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @test_v8i8_post_reg_ld4(i8* %A, i8** %ptr, i64 %inc) { 1150*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_ld4: 1151*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.8b { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1152*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4.v8i8.p0i8(i8* %A) 1153*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 1154*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 1155*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } %ld4 1156*9880d681SAndroid Build Coastguard Worker} 1157*9880d681SAndroid Build Coastguard Worker 1158*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4.v8i8.p0i8(i8*) 1159*9880d681SAndroid Build Coastguard Worker 1160*9880d681SAndroid Build Coastguard Worker 1161*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @test_v8i16_post_imm_ld4(i16* %A, i16** %ptr) { 1162*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_ld4: 1163*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.8h { v0, v1, v2, v3 }, [x0], #64 1164*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4.v8i16.p0i16(i16* %A) 1165*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 32 1166*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 1167*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } %ld4 1168*9880d681SAndroid Build Coastguard Worker} 1169*9880d681SAndroid Build Coastguard Worker 1170*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @test_v8i16_post_reg_ld4(i16* %A, i16** %ptr, i64 %inc) { 1171*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_ld4: 1172*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.8h { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1173*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4.v8i16.p0i16(i16* %A) 1174*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 1175*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 1176*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } %ld4 1177*9880d681SAndroid Build Coastguard Worker} 1178*9880d681SAndroid Build Coastguard Worker 1179*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4.v8i16.p0i16(i16*) 1180*9880d681SAndroid Build Coastguard Worker 1181*9880d681SAndroid Build Coastguard Worker 1182*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @test_v4i16_post_imm_ld4(i16* %A, i16** %ptr) { 1183*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_ld4: 1184*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.4h { v0, v1, v2, v3 }, [x0], #32 1185*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4.v4i16.p0i16(i16* %A) 1186*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 16 1187*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 1188*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } %ld4 1189*9880d681SAndroid Build Coastguard Worker} 1190*9880d681SAndroid Build Coastguard Worker 1191*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @test_v4i16_post_reg_ld4(i16* %A, i16** %ptr, i64 %inc) { 1192*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_ld4: 1193*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.4h { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1194*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4.v4i16.p0i16(i16* %A) 1195*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 1196*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 1197*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } %ld4 1198*9880d681SAndroid Build Coastguard Worker} 1199*9880d681SAndroid Build Coastguard Worker 1200*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4.v4i16.p0i16(i16*) 1201*9880d681SAndroid Build Coastguard Worker 1202*9880d681SAndroid Build Coastguard Worker 1203*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @test_v4i32_post_imm_ld4(i32* %A, i32** %ptr) { 1204*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_ld4: 1205*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.4s { v0, v1, v2, v3 }, [x0], #64 1206*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld4.v4i32.p0i32(i32* %A) 1207*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 16 1208*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 1209*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } %ld4 1210*9880d681SAndroid Build Coastguard Worker} 1211*9880d681SAndroid Build Coastguard Worker 1212*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @test_v4i32_post_reg_ld4(i32* %A, i32** %ptr, i64 %inc) { 1213*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_ld4: 1214*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.4s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1215*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld4.v4i32.p0i32(i32* %A) 1216*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 1217*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 1218*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } %ld4 1219*9880d681SAndroid Build Coastguard Worker} 1220*9880d681SAndroid Build Coastguard Worker 1221*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld4.v4i32.p0i32(i32*) 1222*9880d681SAndroid Build Coastguard Worker 1223*9880d681SAndroid Build Coastguard Worker 1224*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @test_v2i32_post_imm_ld4(i32* %A, i32** %ptr) { 1225*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_ld4: 1226*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.2s { v0, v1, v2, v3 }, [x0], #32 1227*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld4.v2i32.p0i32(i32* %A) 1228*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 8 1229*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 1230*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } %ld4 1231*9880d681SAndroid Build Coastguard Worker} 1232*9880d681SAndroid Build Coastguard Worker 1233*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @test_v2i32_post_reg_ld4(i32* %A, i32** %ptr, i64 %inc) { 1234*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_ld4: 1235*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.2s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1236*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld4.v2i32.p0i32(i32* %A) 1237*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 1238*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 1239*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } %ld4 1240*9880d681SAndroid Build Coastguard Worker} 1241*9880d681SAndroid Build Coastguard Worker 1242*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld4.v2i32.p0i32(i32*) 1243*9880d681SAndroid Build Coastguard Worker 1244*9880d681SAndroid Build Coastguard Worker 1245*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @test_v2i64_post_imm_ld4(i64* %A, i64** %ptr) { 1246*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_ld4: 1247*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.2d { v0, v1, v2, v3 }, [x0], #64 1248*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4.v2i64.p0i64(i64* %A) 1249*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 8 1250*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 1251*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } %ld4 1252*9880d681SAndroid Build Coastguard Worker} 1253*9880d681SAndroid Build Coastguard Worker 1254*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @test_v2i64_post_reg_ld4(i64* %A, i64** %ptr, i64 %inc) { 1255*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_ld4: 1256*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.2d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1257*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4.v2i64.p0i64(i64* %A) 1258*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 1259*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 1260*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } %ld4 1261*9880d681SAndroid Build Coastguard Worker} 1262*9880d681SAndroid Build Coastguard Worker 1263*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4.v2i64.p0i64(i64*) 1264*9880d681SAndroid Build Coastguard Worker 1265*9880d681SAndroid Build Coastguard Worker 1266*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @test_v1i64_post_imm_ld4(i64* %A, i64** %ptr) { 1267*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_ld4: 1268*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1, v2, v3 }, [x0], #32 1269*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4.v1i64.p0i64(i64* %A) 1270*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 4 1271*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 1272*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } %ld4 1273*9880d681SAndroid Build Coastguard Worker} 1274*9880d681SAndroid Build Coastguard Worker 1275*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @test_v1i64_post_reg_ld4(i64* %A, i64** %ptr, i64 %inc) { 1276*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_ld4: 1277*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1278*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4.v1i64.p0i64(i64* %A) 1279*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 1280*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 1281*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } %ld4 1282*9880d681SAndroid Build Coastguard Worker} 1283*9880d681SAndroid Build Coastguard Worker 1284*9880d681SAndroid Build Coastguard Workerdeclare { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4.v1i64.p0i64(i64*) 1285*9880d681SAndroid Build Coastguard Worker 1286*9880d681SAndroid Build Coastguard Worker 1287*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @test_v4f32_post_imm_ld4(float* %A, float** %ptr) { 1288*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_ld4: 1289*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.4s { v0, v1, v2, v3 }, [x0], #64 1290*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld4.v4f32.p0f32(float* %A) 1291*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 16 1292*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 1293*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float>, <4 x float>, <4 x float> } %ld4 1294*9880d681SAndroid Build Coastguard Worker} 1295*9880d681SAndroid Build Coastguard Worker 1296*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @test_v4f32_post_reg_ld4(float* %A, float** %ptr, i64 %inc) { 1297*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_ld4: 1298*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.4s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1299*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld4.v4f32.p0f32(float* %A) 1300*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 1301*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 1302*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float>, <4 x float>, <4 x float> } %ld4 1303*9880d681SAndroid Build Coastguard Worker} 1304*9880d681SAndroid Build Coastguard Worker 1305*9880d681SAndroid Build Coastguard Workerdeclare { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld4.v4f32.p0f32(float*) 1306*9880d681SAndroid Build Coastguard Worker 1307*9880d681SAndroid Build Coastguard Worker 1308*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @test_v2f32_post_imm_ld4(float* %A, float** %ptr) { 1309*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_ld4: 1310*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.2s { v0, v1, v2, v3 }, [x0], #32 1311*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld4.v2f32.p0f32(float* %A) 1312*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 8 1313*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 1314*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float>, <2 x float>, <2 x float> } %ld4 1315*9880d681SAndroid Build Coastguard Worker} 1316*9880d681SAndroid Build Coastguard Worker 1317*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @test_v2f32_post_reg_ld4(float* %A, float** %ptr, i64 %inc) { 1318*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_ld4: 1319*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.2s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1320*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld4.v2f32.p0f32(float* %A) 1321*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 1322*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 1323*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float>, <2 x float>, <2 x float> } %ld4 1324*9880d681SAndroid Build Coastguard Worker} 1325*9880d681SAndroid Build Coastguard Worker 1326*9880d681SAndroid Build Coastguard Workerdeclare { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld4.v2f32.p0f32(float*) 1327*9880d681SAndroid Build Coastguard Worker 1328*9880d681SAndroid Build Coastguard Worker 1329*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @test_v2f64_post_imm_ld4(double* %A, double** %ptr) { 1330*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_ld4: 1331*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.2d { v0, v1, v2, v3 }, [x0], #64 1332*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld4.v2f64.p0f64(double* %A) 1333*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 8 1334*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 1335*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double>, <2 x double>, <2 x double> } %ld4 1336*9880d681SAndroid Build Coastguard Worker} 1337*9880d681SAndroid Build Coastguard Worker 1338*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @test_v2f64_post_reg_ld4(double* %A, double** %ptr, i64 %inc) { 1339*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_ld4: 1340*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.2d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1341*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld4.v2f64.p0f64(double* %A) 1342*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 1343*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 1344*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double>, <2 x double>, <2 x double> } %ld4 1345*9880d681SAndroid Build Coastguard Worker} 1346*9880d681SAndroid Build Coastguard Worker 1347*9880d681SAndroid Build Coastguard Workerdeclare { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld4.v2f64.p0f64(double*) 1348*9880d681SAndroid Build Coastguard Worker 1349*9880d681SAndroid Build Coastguard Worker 1350*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @test_v1f64_post_imm_ld4(double* %A, double** %ptr) { 1351*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_ld4: 1352*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1, v2, v3 }, [x0], #32 1353*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld4.v1f64.p0f64(double* %A) 1354*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 4 1355*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 1356*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double>, <1 x double>, <1 x double> } %ld4 1357*9880d681SAndroid Build Coastguard Worker} 1358*9880d681SAndroid Build Coastguard Worker 1359*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @test_v1f64_post_reg_ld4(double* %A, double** %ptr, i64 %inc) { 1360*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_ld4: 1361*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1362*9880d681SAndroid Build Coastguard Worker %ld4 = tail call { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld4.v1f64.p0f64(double* %A) 1363*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 1364*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 1365*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double>, <1 x double>, <1 x double> } %ld4 1366*9880d681SAndroid Build Coastguard Worker} 1367*9880d681SAndroid Build Coastguard Worker 1368*9880d681SAndroid Build Coastguard Workerdeclare { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld4.v1f64.p0f64(double*) 1369*9880d681SAndroid Build Coastguard Worker 1370*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8> } @test_v16i8_post_imm_ld1x2(i8* %A, i8** %ptr) { 1371*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_ld1x2: 1372*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.16b { v0, v1 }, [x0], #32 1373*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x2.v16i8.p0i8(i8* %A) 1374*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 32 1375*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 1376*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8> } %ld1x2 1377*9880d681SAndroid Build Coastguard Worker} 1378*9880d681SAndroid Build Coastguard Worker 1379*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8> } @test_v16i8_post_reg_ld1x2(i8* %A, i8** %ptr, i64 %inc) { 1380*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_ld1x2: 1381*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.16b { v0, v1 }, [x0], x{{[0-9]+}} 1382*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x2.v16i8.p0i8(i8* %A) 1383*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 1384*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 1385*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8> } %ld1x2 1386*9880d681SAndroid Build Coastguard Worker} 1387*9880d681SAndroid Build Coastguard Worker 1388*9880d681SAndroid Build Coastguard Workerdeclare { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x2.v16i8.p0i8(i8*) 1389*9880d681SAndroid Build Coastguard Worker 1390*9880d681SAndroid Build Coastguard Worker 1391*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8> } @test_v8i8_post_imm_ld1x2(i8* %A, i8** %ptr) { 1392*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_ld1x2: 1393*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.8b { v0, v1 }, [x0], #16 1394*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x2.v8i8.p0i8(i8* %A) 1395*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 16 1396*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 1397*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8> } %ld1x2 1398*9880d681SAndroid Build Coastguard Worker} 1399*9880d681SAndroid Build Coastguard Worker 1400*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8> } @test_v8i8_post_reg_ld1x2(i8* %A, i8** %ptr, i64 %inc) { 1401*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_ld1x2: 1402*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.8b { v0, v1 }, [x0], x{{[0-9]+}} 1403*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x2.v8i8.p0i8(i8* %A) 1404*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 1405*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 1406*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8> } %ld1x2 1407*9880d681SAndroid Build Coastguard Worker} 1408*9880d681SAndroid Build Coastguard Worker 1409*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x2.v8i8.p0i8(i8*) 1410*9880d681SAndroid Build Coastguard Worker 1411*9880d681SAndroid Build Coastguard Worker 1412*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16> } @test_v8i16_post_imm_ld1x2(i16* %A, i16** %ptr) { 1413*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_ld1x2: 1414*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.8h { v0, v1 }, [x0], #32 1415*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x2.v8i16.p0i16(i16* %A) 1416*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 16 1417*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 1418*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16> } %ld1x2 1419*9880d681SAndroid Build Coastguard Worker} 1420*9880d681SAndroid Build Coastguard Worker 1421*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16> } @test_v8i16_post_reg_ld1x2(i16* %A, i16** %ptr, i64 %inc) { 1422*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_ld1x2: 1423*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.8h { v0, v1 }, [x0], x{{[0-9]+}} 1424*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x2.v8i16.p0i16(i16* %A) 1425*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 1426*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 1427*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16> } %ld1x2 1428*9880d681SAndroid Build Coastguard Worker} 1429*9880d681SAndroid Build Coastguard Worker 1430*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x2.v8i16.p0i16(i16*) 1431*9880d681SAndroid Build Coastguard Worker 1432*9880d681SAndroid Build Coastguard Worker 1433*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16> } @test_v4i16_post_imm_ld1x2(i16* %A, i16** %ptr) { 1434*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_ld1x2: 1435*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4h { v0, v1 }, [x0], #16 1436*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x2.v4i16.p0i16(i16* %A) 1437*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 8 1438*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 1439*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16> } %ld1x2 1440*9880d681SAndroid Build Coastguard Worker} 1441*9880d681SAndroid Build Coastguard Worker 1442*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16> } @test_v4i16_post_reg_ld1x2(i16* %A, i16** %ptr, i64 %inc) { 1443*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_ld1x2: 1444*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4h { v0, v1 }, [x0], x{{[0-9]+}} 1445*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x2.v4i16.p0i16(i16* %A) 1446*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 1447*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 1448*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16> } %ld1x2 1449*9880d681SAndroid Build Coastguard Worker} 1450*9880d681SAndroid Build Coastguard Worker 1451*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x2.v4i16.p0i16(i16*) 1452*9880d681SAndroid Build Coastguard Worker 1453*9880d681SAndroid Build Coastguard Worker 1454*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32> } @test_v4i32_post_imm_ld1x2(i32* %A, i32** %ptr) { 1455*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_ld1x2: 1456*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4s { v0, v1 }, [x0], #32 1457*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld1x2.v4i32.p0i32(i32* %A) 1458*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 8 1459*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 1460*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32> } %ld1x2 1461*9880d681SAndroid Build Coastguard Worker} 1462*9880d681SAndroid Build Coastguard Worker 1463*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32> } @test_v4i32_post_reg_ld1x2(i32* %A, i32** %ptr, i64 %inc) { 1464*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_ld1x2: 1465*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4s { v0, v1 }, [x0], x{{[0-9]+}} 1466*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld1x2.v4i32.p0i32(i32* %A) 1467*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 1468*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 1469*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32> } %ld1x2 1470*9880d681SAndroid Build Coastguard Worker} 1471*9880d681SAndroid Build Coastguard Worker 1472*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld1x2.v4i32.p0i32(i32*) 1473*9880d681SAndroid Build Coastguard Worker 1474*9880d681SAndroid Build Coastguard Worker 1475*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32> } @test_v2i32_post_imm_ld1x2(i32* %A, i32** %ptr) { 1476*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_ld1x2: 1477*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2s { v0, v1 }, [x0], #16 1478*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld1x2.v2i32.p0i32(i32* %A) 1479*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 4 1480*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 1481*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32> } %ld1x2 1482*9880d681SAndroid Build Coastguard Worker} 1483*9880d681SAndroid Build Coastguard Worker 1484*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32> } @test_v2i32_post_reg_ld1x2(i32* %A, i32** %ptr, i64 %inc) { 1485*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_ld1x2: 1486*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2s { v0, v1 }, [x0], x{{[0-9]+}} 1487*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld1x2.v2i32.p0i32(i32* %A) 1488*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 1489*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 1490*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32> } %ld1x2 1491*9880d681SAndroid Build Coastguard Worker} 1492*9880d681SAndroid Build Coastguard Worker 1493*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld1x2.v2i32.p0i32(i32*) 1494*9880d681SAndroid Build Coastguard Worker 1495*9880d681SAndroid Build Coastguard Worker 1496*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64> } @test_v2i64_post_imm_ld1x2(i64* %A, i64** %ptr) { 1497*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_ld1x2: 1498*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2d { v0, v1 }, [x0], #32 1499*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x2.v2i64.p0i64(i64* %A) 1500*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 4 1501*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 1502*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64> } %ld1x2 1503*9880d681SAndroid Build Coastguard Worker} 1504*9880d681SAndroid Build Coastguard Worker 1505*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64> } @test_v2i64_post_reg_ld1x2(i64* %A, i64** %ptr, i64 %inc) { 1506*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_ld1x2: 1507*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2d { v0, v1 }, [x0], x{{[0-9]+}} 1508*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x2.v2i64.p0i64(i64* %A) 1509*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 1510*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 1511*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64> } %ld1x2 1512*9880d681SAndroid Build Coastguard Worker} 1513*9880d681SAndroid Build Coastguard Worker 1514*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x2.v2i64.p0i64(i64*) 1515*9880d681SAndroid Build Coastguard Worker 1516*9880d681SAndroid Build Coastguard Worker 1517*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64> } @test_v1i64_post_imm_ld1x2(i64* %A, i64** %ptr) { 1518*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_ld1x2: 1519*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1 }, [x0], #16 1520*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x2.v1i64.p0i64(i64* %A) 1521*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 2 1522*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 1523*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64> } %ld1x2 1524*9880d681SAndroid Build Coastguard Worker} 1525*9880d681SAndroid Build Coastguard Worker 1526*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64> } @test_v1i64_post_reg_ld1x2(i64* %A, i64** %ptr, i64 %inc) { 1527*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_ld1x2: 1528*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1 }, [x0], x{{[0-9]+}} 1529*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x2.v1i64.p0i64(i64* %A) 1530*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 1531*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 1532*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64> } %ld1x2 1533*9880d681SAndroid Build Coastguard Worker} 1534*9880d681SAndroid Build Coastguard Worker 1535*9880d681SAndroid Build Coastguard Workerdeclare { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x2.v1i64.p0i64(i64*) 1536*9880d681SAndroid Build Coastguard Worker 1537*9880d681SAndroid Build Coastguard Worker 1538*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float> } @test_v4f32_post_imm_ld1x2(float* %A, float** %ptr) { 1539*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_ld1x2: 1540*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4s { v0, v1 }, [x0], #32 1541*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <4 x float>, <4 x float> } @llvm.aarch64.neon.ld1x2.v4f32.p0f32(float* %A) 1542*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 8 1543*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 1544*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float> } %ld1x2 1545*9880d681SAndroid Build Coastguard Worker} 1546*9880d681SAndroid Build Coastguard Worker 1547*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float> } @test_v4f32_post_reg_ld1x2(float* %A, float** %ptr, i64 %inc) { 1548*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_ld1x2: 1549*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4s { v0, v1 }, [x0], x{{[0-9]+}} 1550*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <4 x float>, <4 x float> } @llvm.aarch64.neon.ld1x2.v4f32.p0f32(float* %A) 1551*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 1552*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 1553*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float> } %ld1x2 1554*9880d681SAndroid Build Coastguard Worker} 1555*9880d681SAndroid Build Coastguard Worker 1556*9880d681SAndroid Build Coastguard Workerdeclare { <4 x float>, <4 x float> } @llvm.aarch64.neon.ld1x2.v4f32.p0f32(float*) 1557*9880d681SAndroid Build Coastguard Worker 1558*9880d681SAndroid Build Coastguard Worker 1559*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float> } @test_v2f32_post_imm_ld1x2(float* %A, float** %ptr) { 1560*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_ld1x2: 1561*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2s { v0, v1 }, [x0], #16 1562*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <2 x float>, <2 x float> } @llvm.aarch64.neon.ld1x2.v2f32.p0f32(float* %A) 1563*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 4 1564*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 1565*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float> } %ld1x2 1566*9880d681SAndroid Build Coastguard Worker} 1567*9880d681SAndroid Build Coastguard Worker 1568*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float> } @test_v2f32_post_reg_ld1x2(float* %A, float** %ptr, i64 %inc) { 1569*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_ld1x2: 1570*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2s { v0, v1 }, [x0], x{{[0-9]+}} 1571*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <2 x float>, <2 x float> } @llvm.aarch64.neon.ld1x2.v2f32.p0f32(float* %A) 1572*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 1573*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 1574*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float> } %ld1x2 1575*9880d681SAndroid Build Coastguard Worker} 1576*9880d681SAndroid Build Coastguard Worker 1577*9880d681SAndroid Build Coastguard Workerdeclare { <2 x float>, <2 x float> } @llvm.aarch64.neon.ld1x2.v2f32.p0f32(float*) 1578*9880d681SAndroid Build Coastguard Worker 1579*9880d681SAndroid Build Coastguard Worker 1580*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double> } @test_v2f64_post_imm_ld1x2(double* %A, double** %ptr) { 1581*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_ld1x2: 1582*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2d { v0, v1 }, [x0], #32 1583*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld1x2.v2f64.p0f64(double* %A) 1584*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 4 1585*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 1586*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double> } %ld1x2 1587*9880d681SAndroid Build Coastguard Worker} 1588*9880d681SAndroid Build Coastguard Worker 1589*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double> } @test_v2f64_post_reg_ld1x2(double* %A, double** %ptr, i64 %inc) { 1590*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_ld1x2: 1591*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2d { v0, v1 }, [x0], x{{[0-9]+}} 1592*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld1x2.v2f64.p0f64(double* %A) 1593*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 1594*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 1595*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double> } %ld1x2 1596*9880d681SAndroid Build Coastguard Worker} 1597*9880d681SAndroid Build Coastguard Worker 1598*9880d681SAndroid Build Coastguard Workerdeclare { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld1x2.v2f64.p0f64(double*) 1599*9880d681SAndroid Build Coastguard Worker 1600*9880d681SAndroid Build Coastguard Worker 1601*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double> } @test_v1f64_post_imm_ld1x2(double* %A, double** %ptr) { 1602*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_ld1x2: 1603*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1 }, [x0], #16 1604*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld1x2.v1f64.p0f64(double* %A) 1605*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 2 1606*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 1607*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double> } %ld1x2 1608*9880d681SAndroid Build Coastguard Worker} 1609*9880d681SAndroid Build Coastguard Worker 1610*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double> } @test_v1f64_post_reg_ld1x2(double* %A, double** %ptr, i64 %inc) { 1611*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_ld1x2: 1612*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1 }, [x0], x{{[0-9]+}} 1613*9880d681SAndroid Build Coastguard Worker %ld1x2 = tail call { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld1x2.v1f64.p0f64(double* %A) 1614*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 1615*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 1616*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double> } %ld1x2 1617*9880d681SAndroid Build Coastguard Worker} 1618*9880d681SAndroid Build Coastguard Worker 1619*9880d681SAndroid Build Coastguard Workerdeclare { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld1x2.v1f64.p0f64(double*) 1620*9880d681SAndroid Build Coastguard Worker 1621*9880d681SAndroid Build Coastguard Worker 1622*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8>, <16 x i8> } @test_v16i8_post_imm_ld1x3(i8* %A, i8** %ptr) { 1623*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_ld1x3: 1624*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.16b { v0, v1, v2 }, [x0], #48 1625*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x3.v16i8.p0i8(i8* %A) 1626*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 48 1627*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 1628*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8>, <16 x i8> } %ld1x3 1629*9880d681SAndroid Build Coastguard Worker} 1630*9880d681SAndroid Build Coastguard Worker 1631*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8>, <16 x i8> } @test_v16i8_post_reg_ld1x3(i8* %A, i8** %ptr, i64 %inc) { 1632*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_ld1x3: 1633*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.16b { v0, v1, v2 }, [x0], x{{[0-9]+}} 1634*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x3.v16i8.p0i8(i8* %A) 1635*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 1636*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 1637*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8>, <16 x i8> } %ld1x3 1638*9880d681SAndroid Build Coastguard Worker} 1639*9880d681SAndroid Build Coastguard Worker 1640*9880d681SAndroid Build Coastguard Workerdeclare { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x3.v16i8.p0i8(i8*) 1641*9880d681SAndroid Build Coastguard Worker 1642*9880d681SAndroid Build Coastguard Worker 1643*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8>, <8 x i8> } @test_v8i8_post_imm_ld1x3(i8* %A, i8** %ptr) { 1644*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_ld1x3: 1645*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.8b { v0, v1, v2 }, [x0], #24 1646*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x3.v8i8.p0i8(i8* %A) 1647*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 24 1648*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 1649*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8>, <8 x i8> } %ld1x3 1650*9880d681SAndroid Build Coastguard Worker} 1651*9880d681SAndroid Build Coastguard Worker 1652*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8>, <8 x i8> } @test_v8i8_post_reg_ld1x3(i8* %A, i8** %ptr, i64 %inc) { 1653*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_ld1x3: 1654*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.8b { v0, v1, v2 }, [x0], x{{[0-9]+}} 1655*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x3.v8i8.p0i8(i8* %A) 1656*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 1657*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 1658*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8>, <8 x i8> } %ld1x3 1659*9880d681SAndroid Build Coastguard Worker} 1660*9880d681SAndroid Build Coastguard Worker 1661*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x3.v8i8.p0i8(i8*) 1662*9880d681SAndroid Build Coastguard Worker 1663*9880d681SAndroid Build Coastguard Worker 1664*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16>, <8 x i16> } @test_v8i16_post_imm_ld1x3(i16* %A, i16** %ptr) { 1665*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_ld1x3: 1666*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.8h { v0, v1, v2 }, [x0], #48 1667*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x3.v8i16.p0i16(i16* %A) 1668*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 24 1669*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 1670*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16>, <8 x i16> } %ld1x3 1671*9880d681SAndroid Build Coastguard Worker} 1672*9880d681SAndroid Build Coastguard Worker 1673*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16>, <8 x i16> } @test_v8i16_post_reg_ld1x3(i16* %A, i16** %ptr, i64 %inc) { 1674*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_ld1x3: 1675*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.8h { v0, v1, v2 }, [x0], x{{[0-9]+}} 1676*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x3.v8i16.p0i16(i16* %A) 1677*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 1678*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 1679*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16>, <8 x i16> } %ld1x3 1680*9880d681SAndroid Build Coastguard Worker} 1681*9880d681SAndroid Build Coastguard Worker 1682*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x3.v8i16.p0i16(i16*) 1683*9880d681SAndroid Build Coastguard Worker 1684*9880d681SAndroid Build Coastguard Worker 1685*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16>, <4 x i16> } @test_v4i16_post_imm_ld1x3(i16* %A, i16** %ptr) { 1686*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_ld1x3: 1687*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4h { v0, v1, v2 }, [x0], #24 1688*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x3.v4i16.p0i16(i16* %A) 1689*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 12 1690*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 1691*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16>, <4 x i16> } %ld1x3 1692*9880d681SAndroid Build Coastguard Worker} 1693*9880d681SAndroid Build Coastguard Worker 1694*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16>, <4 x i16> } @test_v4i16_post_reg_ld1x3(i16* %A, i16** %ptr, i64 %inc) { 1695*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_ld1x3: 1696*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4h { v0, v1, v2 }, [x0], x{{[0-9]+}} 1697*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x3.v4i16.p0i16(i16* %A) 1698*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 1699*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 1700*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16>, <4 x i16> } %ld1x3 1701*9880d681SAndroid Build Coastguard Worker} 1702*9880d681SAndroid Build Coastguard Worker 1703*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x3.v4i16.p0i16(i16*) 1704*9880d681SAndroid Build Coastguard Worker 1705*9880d681SAndroid Build Coastguard Worker 1706*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32>, <4 x i32> } @test_v4i32_post_imm_ld1x3(i32* %A, i32** %ptr) { 1707*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_ld1x3: 1708*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4s { v0, v1, v2 }, [x0], #48 1709*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld1x3.v4i32.p0i32(i32* %A) 1710*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 12 1711*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 1712*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32>, <4 x i32> } %ld1x3 1713*9880d681SAndroid Build Coastguard Worker} 1714*9880d681SAndroid Build Coastguard Worker 1715*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32>, <4 x i32> } @test_v4i32_post_reg_ld1x3(i32* %A, i32** %ptr, i64 %inc) { 1716*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_ld1x3: 1717*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4s { v0, v1, v2 }, [x0], x{{[0-9]+}} 1718*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld1x3.v4i32.p0i32(i32* %A) 1719*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 1720*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 1721*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32>, <4 x i32> } %ld1x3 1722*9880d681SAndroid Build Coastguard Worker} 1723*9880d681SAndroid Build Coastguard Worker 1724*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld1x3.v4i32.p0i32(i32*) 1725*9880d681SAndroid Build Coastguard Worker 1726*9880d681SAndroid Build Coastguard Worker 1727*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32>, <2 x i32> } @test_v2i32_post_imm_ld1x3(i32* %A, i32** %ptr) { 1728*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_ld1x3: 1729*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2s { v0, v1, v2 }, [x0], #24 1730*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld1x3.v2i32.p0i32(i32* %A) 1731*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 6 1732*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 1733*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32>, <2 x i32> } %ld1x3 1734*9880d681SAndroid Build Coastguard Worker} 1735*9880d681SAndroid Build Coastguard Worker 1736*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32>, <2 x i32> } @test_v2i32_post_reg_ld1x3(i32* %A, i32** %ptr, i64 %inc) { 1737*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_ld1x3: 1738*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2s { v0, v1, v2 }, [x0], x{{[0-9]+}} 1739*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld1x3.v2i32.p0i32(i32* %A) 1740*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 1741*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 1742*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32>, <2 x i32> } %ld1x3 1743*9880d681SAndroid Build Coastguard Worker} 1744*9880d681SAndroid Build Coastguard Worker 1745*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld1x3.v2i32.p0i32(i32*) 1746*9880d681SAndroid Build Coastguard Worker 1747*9880d681SAndroid Build Coastguard Worker 1748*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64>, <2 x i64> } @test_v2i64_post_imm_ld1x3(i64* %A, i64** %ptr) { 1749*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_ld1x3: 1750*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2d { v0, v1, v2 }, [x0], #48 1751*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x3.v2i64.p0i64(i64* %A) 1752*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 6 1753*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 1754*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64>, <2 x i64> } %ld1x3 1755*9880d681SAndroid Build Coastguard Worker} 1756*9880d681SAndroid Build Coastguard Worker 1757*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64>, <2 x i64> } @test_v2i64_post_reg_ld1x3(i64* %A, i64** %ptr, i64 %inc) { 1758*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_ld1x3: 1759*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2d { v0, v1, v2 }, [x0], x{{[0-9]+}} 1760*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x3.v2i64.p0i64(i64* %A) 1761*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 1762*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 1763*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64>, <2 x i64> } %ld1x3 1764*9880d681SAndroid Build Coastguard Worker} 1765*9880d681SAndroid Build Coastguard Worker 1766*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x3.v2i64.p0i64(i64*) 1767*9880d681SAndroid Build Coastguard Worker 1768*9880d681SAndroid Build Coastguard Worker 1769*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64>, <1 x i64> } @test_v1i64_post_imm_ld1x3(i64* %A, i64** %ptr) { 1770*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_ld1x3: 1771*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1, v2 }, [x0], #24 1772*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x3.v1i64.p0i64(i64* %A) 1773*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 3 1774*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 1775*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64>, <1 x i64> } %ld1x3 1776*9880d681SAndroid Build Coastguard Worker} 1777*9880d681SAndroid Build Coastguard Worker 1778*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64>, <1 x i64> } @test_v1i64_post_reg_ld1x3(i64* %A, i64** %ptr, i64 %inc) { 1779*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_ld1x3: 1780*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1, v2 }, [x0], x{{[0-9]+}} 1781*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x3.v1i64.p0i64(i64* %A) 1782*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 1783*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 1784*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64>, <1 x i64> } %ld1x3 1785*9880d681SAndroid Build Coastguard Worker} 1786*9880d681SAndroid Build Coastguard Worker 1787*9880d681SAndroid Build Coastguard Workerdeclare { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x3.v1i64.p0i64(i64*) 1788*9880d681SAndroid Build Coastguard Worker 1789*9880d681SAndroid Build Coastguard Worker 1790*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float>, <4 x float> } @test_v4f32_post_imm_ld1x3(float* %A, float** %ptr) { 1791*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_ld1x3: 1792*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4s { v0, v1, v2 }, [x0], #48 1793*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld1x3.v4f32.p0f32(float* %A) 1794*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 12 1795*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 1796*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float>, <4 x float> } %ld1x3 1797*9880d681SAndroid Build Coastguard Worker} 1798*9880d681SAndroid Build Coastguard Worker 1799*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float>, <4 x float> } @test_v4f32_post_reg_ld1x3(float* %A, float** %ptr, i64 %inc) { 1800*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_ld1x3: 1801*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4s { v0, v1, v2 }, [x0], x{{[0-9]+}} 1802*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld1x3.v4f32.p0f32(float* %A) 1803*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 1804*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 1805*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float>, <4 x float> } %ld1x3 1806*9880d681SAndroid Build Coastguard Worker} 1807*9880d681SAndroid Build Coastguard Worker 1808*9880d681SAndroid Build Coastguard Workerdeclare { <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld1x3.v4f32.p0f32(float*) 1809*9880d681SAndroid Build Coastguard Worker 1810*9880d681SAndroid Build Coastguard Worker 1811*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float>, <2 x float> } @test_v2f32_post_imm_ld1x3(float* %A, float** %ptr) { 1812*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_ld1x3: 1813*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2s { v0, v1, v2 }, [x0], #24 1814*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld1x3.v2f32.p0f32(float* %A) 1815*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 6 1816*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 1817*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float>, <2 x float> } %ld1x3 1818*9880d681SAndroid Build Coastguard Worker} 1819*9880d681SAndroid Build Coastguard Worker 1820*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float>, <2 x float> } @test_v2f32_post_reg_ld1x3(float* %A, float** %ptr, i64 %inc) { 1821*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_ld1x3: 1822*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2s { v0, v1, v2 }, [x0], x{{[0-9]+}} 1823*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld1x3.v2f32.p0f32(float* %A) 1824*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 1825*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 1826*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float>, <2 x float> } %ld1x3 1827*9880d681SAndroid Build Coastguard Worker} 1828*9880d681SAndroid Build Coastguard Worker 1829*9880d681SAndroid Build Coastguard Workerdeclare { <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld1x3.v2f32.p0f32(float*) 1830*9880d681SAndroid Build Coastguard Worker 1831*9880d681SAndroid Build Coastguard Worker 1832*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double>, <2 x double> } @test_v2f64_post_imm_ld1x3(double* %A, double** %ptr) { 1833*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_ld1x3: 1834*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2d { v0, v1, v2 }, [x0], #48 1835*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld1x3.v2f64.p0f64(double* %A) 1836*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 6 1837*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 1838*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double>, <2 x double> } %ld1x3 1839*9880d681SAndroid Build Coastguard Worker} 1840*9880d681SAndroid Build Coastguard Worker 1841*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double>, <2 x double> } @test_v2f64_post_reg_ld1x3(double* %A, double** %ptr, i64 %inc) { 1842*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_ld1x3: 1843*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2d { v0, v1, v2 }, [x0], x{{[0-9]+}} 1844*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld1x3.v2f64.p0f64(double* %A) 1845*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 1846*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 1847*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double>, <2 x double> } %ld1x3 1848*9880d681SAndroid Build Coastguard Worker} 1849*9880d681SAndroid Build Coastguard Worker 1850*9880d681SAndroid Build Coastguard Workerdeclare { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld1x3.v2f64.p0f64(double*) 1851*9880d681SAndroid Build Coastguard Worker 1852*9880d681SAndroid Build Coastguard Worker 1853*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double>, <1 x double> } @test_v1f64_post_imm_ld1x3(double* %A, double** %ptr) { 1854*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_ld1x3: 1855*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1, v2 }, [x0], #24 1856*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld1x3.v1f64.p0f64(double* %A) 1857*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 3 1858*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 1859*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double>, <1 x double> } %ld1x3 1860*9880d681SAndroid Build Coastguard Worker} 1861*9880d681SAndroid Build Coastguard Worker 1862*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double>, <1 x double> } @test_v1f64_post_reg_ld1x3(double* %A, double** %ptr, i64 %inc) { 1863*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_ld1x3: 1864*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1, v2 }, [x0], x{{[0-9]+}} 1865*9880d681SAndroid Build Coastguard Worker %ld1x3 = tail call { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld1x3.v1f64.p0f64(double* %A) 1866*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 1867*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 1868*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double>, <1 x double> } %ld1x3 1869*9880d681SAndroid Build Coastguard Worker} 1870*9880d681SAndroid Build Coastguard Worker 1871*9880d681SAndroid Build Coastguard Workerdeclare { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld1x3.v1f64.p0f64(double*) 1872*9880d681SAndroid Build Coastguard Worker 1873*9880d681SAndroid Build Coastguard Worker 1874*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @test_v16i8_post_imm_ld1x4(i8* %A, i8** %ptr) { 1875*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_ld1x4: 1876*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.16b { v0, v1, v2, v3 }, [x0], #64 1877*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x4.v16i8.p0i8(i8* %A) 1878*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 64 1879*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 1880*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } %ld1x4 1881*9880d681SAndroid Build Coastguard Worker} 1882*9880d681SAndroid Build Coastguard Worker 1883*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @test_v16i8_post_reg_ld1x4(i8* %A, i8** %ptr, i64 %inc) { 1884*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_ld1x4: 1885*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.16b { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1886*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x4.v16i8.p0i8(i8* %A) 1887*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 1888*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 1889*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } %ld1x4 1890*9880d681SAndroid Build Coastguard Worker} 1891*9880d681SAndroid Build Coastguard Worker 1892*9880d681SAndroid Build Coastguard Workerdeclare { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld1x4.v16i8.p0i8(i8*) 1893*9880d681SAndroid Build Coastguard Worker 1894*9880d681SAndroid Build Coastguard Worker 1895*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @test_v8i8_post_imm_ld1x4(i8* %A, i8** %ptr) { 1896*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_ld1x4: 1897*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.8b { v0, v1, v2, v3 }, [x0], #32 1898*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x4.v8i8.p0i8(i8* %A) 1899*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 32 1900*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 1901*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } %ld1x4 1902*9880d681SAndroid Build Coastguard Worker} 1903*9880d681SAndroid Build Coastguard Worker 1904*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @test_v8i8_post_reg_ld1x4(i8* %A, i8** %ptr, i64 %inc) { 1905*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_ld1x4: 1906*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.8b { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1907*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x4.v8i8.p0i8(i8* %A) 1908*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 1909*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 1910*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } %ld1x4 1911*9880d681SAndroid Build Coastguard Worker} 1912*9880d681SAndroid Build Coastguard Worker 1913*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld1x4.v8i8.p0i8(i8*) 1914*9880d681SAndroid Build Coastguard Worker 1915*9880d681SAndroid Build Coastguard Worker 1916*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @test_v8i16_post_imm_ld1x4(i16* %A, i16** %ptr) { 1917*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_ld1x4: 1918*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.8h { v0, v1, v2, v3 }, [x0], #64 1919*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x4.v8i16.p0i16(i16* %A) 1920*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 32 1921*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 1922*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } %ld1x4 1923*9880d681SAndroid Build Coastguard Worker} 1924*9880d681SAndroid Build Coastguard Worker 1925*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @test_v8i16_post_reg_ld1x4(i16* %A, i16** %ptr, i64 %inc) { 1926*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_ld1x4: 1927*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.8h { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1928*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x4.v8i16.p0i16(i16* %A) 1929*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 1930*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 1931*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } %ld1x4 1932*9880d681SAndroid Build Coastguard Worker} 1933*9880d681SAndroid Build Coastguard Worker 1934*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld1x4.v8i16.p0i16(i16*) 1935*9880d681SAndroid Build Coastguard Worker 1936*9880d681SAndroid Build Coastguard Worker 1937*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @test_v4i16_post_imm_ld1x4(i16* %A, i16** %ptr) { 1938*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_ld1x4: 1939*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4h { v0, v1, v2, v3 }, [x0], #32 1940*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x4.v4i16.p0i16(i16* %A) 1941*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 16 1942*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 1943*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } %ld1x4 1944*9880d681SAndroid Build Coastguard Worker} 1945*9880d681SAndroid Build Coastguard Worker 1946*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @test_v4i16_post_reg_ld1x4(i16* %A, i16** %ptr, i64 %inc) { 1947*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_ld1x4: 1948*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4h { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1949*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x4.v4i16.p0i16(i16* %A) 1950*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 1951*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 1952*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } %ld1x4 1953*9880d681SAndroid Build Coastguard Worker} 1954*9880d681SAndroid Build Coastguard Worker 1955*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld1x4.v4i16.p0i16(i16*) 1956*9880d681SAndroid Build Coastguard Worker 1957*9880d681SAndroid Build Coastguard Worker 1958*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @test_v4i32_post_imm_ld1x4(i32* %A, i32** %ptr) { 1959*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_ld1x4: 1960*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4s { v0, v1, v2, v3 }, [x0], #64 1961*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld1x4.v4i32.p0i32(i32* %A) 1962*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 16 1963*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 1964*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } %ld1x4 1965*9880d681SAndroid Build Coastguard Worker} 1966*9880d681SAndroid Build Coastguard Worker 1967*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @test_v4i32_post_reg_ld1x4(i32* %A, i32** %ptr, i64 %inc) { 1968*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_ld1x4: 1969*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1970*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld1x4.v4i32.p0i32(i32* %A) 1971*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 1972*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 1973*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } %ld1x4 1974*9880d681SAndroid Build Coastguard Worker} 1975*9880d681SAndroid Build Coastguard Worker 1976*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld1x4.v4i32.p0i32(i32*) 1977*9880d681SAndroid Build Coastguard Worker 1978*9880d681SAndroid Build Coastguard Worker 1979*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @test_v2i32_post_imm_ld1x4(i32* %A, i32** %ptr) { 1980*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_ld1x4: 1981*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2s { v0, v1, v2, v3 }, [x0], #32 1982*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld1x4.v2i32.p0i32(i32* %A) 1983*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 8 1984*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 1985*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } %ld1x4 1986*9880d681SAndroid Build Coastguard Worker} 1987*9880d681SAndroid Build Coastguard Worker 1988*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @test_v2i32_post_reg_ld1x4(i32* %A, i32** %ptr, i64 %inc) { 1989*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_ld1x4: 1990*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 1991*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld1x4.v2i32.p0i32(i32* %A) 1992*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 1993*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 1994*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } %ld1x4 1995*9880d681SAndroid Build Coastguard Worker} 1996*9880d681SAndroid Build Coastguard Worker 1997*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld1x4.v2i32.p0i32(i32*) 1998*9880d681SAndroid Build Coastguard Worker 1999*9880d681SAndroid Build Coastguard Worker 2000*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @test_v2i64_post_imm_ld1x4(i64* %A, i64** %ptr) { 2001*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_ld1x4: 2002*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2d { v0, v1, v2, v3 }, [x0], #64 2003*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x4.v2i64.p0i64(i64* %A) 2004*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 8 2005*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 2006*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } %ld1x4 2007*9880d681SAndroid Build Coastguard Worker} 2008*9880d681SAndroid Build Coastguard Worker 2009*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @test_v2i64_post_reg_ld1x4(i64* %A, i64** %ptr, i64 %inc) { 2010*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_ld1x4: 2011*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2012*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x4.v2i64.p0i64(i64* %A) 2013*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 2014*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 2015*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } %ld1x4 2016*9880d681SAndroid Build Coastguard Worker} 2017*9880d681SAndroid Build Coastguard Worker 2018*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld1x4.v2i64.p0i64(i64*) 2019*9880d681SAndroid Build Coastguard Worker 2020*9880d681SAndroid Build Coastguard Worker 2021*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @test_v1i64_post_imm_ld1x4(i64* %A, i64** %ptr) { 2022*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_ld1x4: 2023*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1, v2, v3 }, [x0], #32 2024*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x4.v1i64.p0i64(i64* %A) 2025*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 4 2026*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 2027*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } %ld1x4 2028*9880d681SAndroid Build Coastguard Worker} 2029*9880d681SAndroid Build Coastguard Worker 2030*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @test_v1i64_post_reg_ld1x4(i64* %A, i64** %ptr, i64 %inc) { 2031*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_ld1x4: 2032*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2033*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x4.v1i64.p0i64(i64* %A) 2034*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 2035*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 2036*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } %ld1x4 2037*9880d681SAndroid Build Coastguard Worker} 2038*9880d681SAndroid Build Coastguard Worker 2039*9880d681SAndroid Build Coastguard Workerdeclare { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld1x4.v1i64.p0i64(i64*) 2040*9880d681SAndroid Build Coastguard Worker 2041*9880d681SAndroid Build Coastguard Worker 2042*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @test_v4f32_post_imm_ld1x4(float* %A, float** %ptr) { 2043*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_ld1x4: 2044*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4s { v0, v1, v2, v3 }, [x0], #64 2045*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld1x4.v4f32.p0f32(float* %A) 2046*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 16 2047*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 2048*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float>, <4 x float>, <4 x float> } %ld1x4 2049*9880d681SAndroid Build Coastguard Worker} 2050*9880d681SAndroid Build Coastguard Worker 2051*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @test_v4f32_post_reg_ld1x4(float* %A, float** %ptr, i64 %inc) { 2052*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_ld1x4: 2053*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.4s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2054*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld1x4.v4f32.p0f32(float* %A) 2055*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 2056*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 2057*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float>, <4 x float>, <4 x float> } %ld1x4 2058*9880d681SAndroid Build Coastguard Worker} 2059*9880d681SAndroid Build Coastguard Worker 2060*9880d681SAndroid Build Coastguard Workerdeclare { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld1x4.v4f32.p0f32(float*) 2061*9880d681SAndroid Build Coastguard Worker 2062*9880d681SAndroid Build Coastguard Worker 2063*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @test_v2f32_post_imm_ld1x4(float* %A, float** %ptr) { 2064*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_ld1x4: 2065*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2s { v0, v1, v2, v3 }, [x0], #32 2066*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld1x4.v2f32.p0f32(float* %A) 2067*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 8 2068*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 2069*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float>, <2 x float>, <2 x float> } %ld1x4 2070*9880d681SAndroid Build Coastguard Worker} 2071*9880d681SAndroid Build Coastguard Worker 2072*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @test_v2f32_post_reg_ld1x4(float* %A, float** %ptr, i64 %inc) { 2073*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_ld1x4: 2074*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2075*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld1x4.v2f32.p0f32(float* %A) 2076*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 2077*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 2078*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float>, <2 x float>, <2 x float> } %ld1x4 2079*9880d681SAndroid Build Coastguard Worker} 2080*9880d681SAndroid Build Coastguard Worker 2081*9880d681SAndroid Build Coastguard Workerdeclare { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld1x4.v2f32.p0f32(float*) 2082*9880d681SAndroid Build Coastguard Worker 2083*9880d681SAndroid Build Coastguard Worker 2084*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @test_v2f64_post_imm_ld1x4(double* %A, double** %ptr) { 2085*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_ld1x4: 2086*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2d { v0, v1, v2, v3 }, [x0], #64 2087*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld1x4.v2f64.p0f64(double* %A) 2088*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 8 2089*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 2090*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double>, <2 x double>, <2 x double> } %ld1x4 2091*9880d681SAndroid Build Coastguard Worker} 2092*9880d681SAndroid Build Coastguard Worker 2093*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @test_v2f64_post_reg_ld1x4(double* %A, double** %ptr, i64 %inc) { 2094*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_ld1x4: 2095*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.2d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2096*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld1x4.v2f64.p0f64(double* %A) 2097*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 2098*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 2099*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double>, <2 x double>, <2 x double> } %ld1x4 2100*9880d681SAndroid Build Coastguard Worker} 2101*9880d681SAndroid Build Coastguard Worker 2102*9880d681SAndroid Build Coastguard Workerdeclare { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld1x4.v2f64.p0f64(double*) 2103*9880d681SAndroid Build Coastguard Worker 2104*9880d681SAndroid Build Coastguard Worker 2105*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @test_v1f64_post_imm_ld1x4(double* %A, double** %ptr) { 2106*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_ld1x4: 2107*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1, v2, v3 }, [x0], #32 2108*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld1x4.v1f64.p0f64(double* %A) 2109*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 4 2110*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 2111*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double>, <1 x double>, <1 x double> } %ld1x4 2112*9880d681SAndroid Build Coastguard Worker} 2113*9880d681SAndroid Build Coastguard Worker 2114*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @test_v1f64_post_reg_ld1x4(double* %A, double** %ptr, i64 %inc) { 2115*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_ld1x4: 2116*9880d681SAndroid Build Coastguard Worker;CHECK: ld1.1d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2117*9880d681SAndroid Build Coastguard Worker %ld1x4 = tail call { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld1x4.v1f64.p0f64(double* %A) 2118*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 2119*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 2120*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double>, <1 x double>, <1 x double> } %ld1x4 2121*9880d681SAndroid Build Coastguard Worker} 2122*9880d681SAndroid Build Coastguard Worker 2123*9880d681SAndroid Build Coastguard Workerdeclare { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld1x4.v1f64.p0f64(double*) 2124*9880d681SAndroid Build Coastguard Worker 2125*9880d681SAndroid Build Coastguard Worker 2126*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8> } @test_v16i8_post_imm_ld2r(i8* %A, i8** %ptr) nounwind { 2127*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_ld2r: 2128*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.16b { v0, v1 }, [x0], #2 2129*9880d681SAndroid Build Coastguard Worker %ld2 = call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2r.v16i8.p0i8(i8* %A) 2130*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 2 2131*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 2132*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8> } %ld2 2133*9880d681SAndroid Build Coastguard Worker} 2134*9880d681SAndroid Build Coastguard Worker 2135*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8> } @test_v16i8_post_reg_ld2r(i8* %A, i8** %ptr, i64 %inc) nounwind { 2136*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_ld2r: 2137*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.16b { v0, v1 }, [x0], x{{[0-9]+}} 2138*9880d681SAndroid Build Coastguard Worker %ld2 = call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2r.v16i8.p0i8(i8* %A) 2139*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 2140*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 2141*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8> } %ld2 2142*9880d681SAndroid Build Coastguard Worker} 2143*9880d681SAndroid Build Coastguard Worker 2144*9880d681SAndroid Build Coastguard Workerdeclare { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2r.v16i8.p0i8(i8*) nounwind readonly 2145*9880d681SAndroid Build Coastguard Worker 2146*9880d681SAndroid Build Coastguard Worker 2147*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8> } @test_v8i8_post_imm_ld2r(i8* %A, i8** %ptr) nounwind { 2148*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_ld2r: 2149*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.8b { v0, v1 }, [x0], #2 2150*9880d681SAndroid Build Coastguard Worker %ld2 = call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2r.v8i8.p0i8(i8* %A) 2151*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 2 2152*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 2153*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8> } %ld2 2154*9880d681SAndroid Build Coastguard Worker} 2155*9880d681SAndroid Build Coastguard Worker 2156*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8> } @test_v8i8_post_reg_ld2r(i8* %A, i8** %ptr, i64 %inc) nounwind { 2157*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_ld2r: 2158*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.8b { v0, v1 }, [x0], x{{[0-9]+}} 2159*9880d681SAndroid Build Coastguard Worker %ld2 = call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2r.v8i8.p0i8(i8* %A) 2160*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 2161*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 2162*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8> } %ld2 2163*9880d681SAndroid Build Coastguard Worker} 2164*9880d681SAndroid Build Coastguard Worker 2165*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2r.v8i8.p0i8(i8*) nounwind readonly 2166*9880d681SAndroid Build Coastguard Worker 2167*9880d681SAndroid Build Coastguard Worker 2168*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16> } @test_v8i16_post_imm_ld2r(i16* %A, i16** %ptr) nounwind { 2169*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_ld2r: 2170*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.8h { v0, v1 }, [x0], #4 2171*9880d681SAndroid Build Coastguard Worker %ld2 = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2r.v8i16.p0i16(i16* %A) 2172*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 2 2173*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 2174*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16> } %ld2 2175*9880d681SAndroid Build Coastguard Worker} 2176*9880d681SAndroid Build Coastguard Worker 2177*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16> } @test_v8i16_post_reg_ld2r(i16* %A, i16** %ptr, i64 %inc) nounwind { 2178*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_ld2r: 2179*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.8h { v0, v1 }, [x0], x{{[0-9]+}} 2180*9880d681SAndroid Build Coastguard Worker %ld2 = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2r.v8i16.p0i16(i16* %A) 2181*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 2182*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 2183*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16> } %ld2 2184*9880d681SAndroid Build Coastguard Worker} 2185*9880d681SAndroid Build Coastguard Worker 2186*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2r.v8i16.p0i16(i16*) nounwind readonly 2187*9880d681SAndroid Build Coastguard Worker 2188*9880d681SAndroid Build Coastguard Worker 2189*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16> } @test_v4i16_post_imm_ld2r(i16* %A, i16** %ptr) nounwind { 2190*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_ld2r: 2191*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.4h { v0, v1 }, [x0], #4 2192*9880d681SAndroid Build Coastguard Worker %ld2 = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2r.v4i16.p0i16(i16* %A) 2193*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 2 2194*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 2195*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16> } %ld2 2196*9880d681SAndroid Build Coastguard Worker} 2197*9880d681SAndroid Build Coastguard Worker 2198*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16> } @test_v4i16_post_reg_ld2r(i16* %A, i16** %ptr, i64 %inc) nounwind { 2199*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_ld2r: 2200*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.4h { v0, v1 }, [x0], x{{[0-9]+}} 2201*9880d681SAndroid Build Coastguard Worker %ld2 = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2r.v4i16.p0i16(i16* %A) 2202*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 2203*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 2204*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16> } %ld2 2205*9880d681SAndroid Build Coastguard Worker} 2206*9880d681SAndroid Build Coastguard Worker 2207*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2r.v4i16.p0i16(i16*) nounwind readonly 2208*9880d681SAndroid Build Coastguard Worker 2209*9880d681SAndroid Build Coastguard Worker 2210*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32> } @test_v4i32_post_imm_ld2r(i32* %A, i32** %ptr) nounwind { 2211*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_ld2r: 2212*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.4s { v0, v1 }, [x0], #8 2213*9880d681SAndroid Build Coastguard Worker %ld2 = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2r.v4i32.p0i32(i32* %A) 2214*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 2 2215*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 2216*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32> } %ld2 2217*9880d681SAndroid Build Coastguard Worker} 2218*9880d681SAndroid Build Coastguard Worker 2219*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32> } @test_v4i32_post_reg_ld2r(i32* %A, i32** %ptr, i64 %inc) nounwind { 2220*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_ld2r: 2221*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.4s { v0, v1 }, [x0], x{{[0-9]+}} 2222*9880d681SAndroid Build Coastguard Worker %ld2 = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2r.v4i32.p0i32(i32* %A) 2223*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 2224*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 2225*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32> } %ld2 2226*9880d681SAndroid Build Coastguard Worker} 2227*9880d681SAndroid Build Coastguard Worker 2228*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2r.v4i32.p0i32(i32*) nounwind readonly 2229*9880d681SAndroid Build Coastguard Worker 2230*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32> } @test_v2i32_post_imm_ld2r(i32* %A, i32** %ptr) nounwind { 2231*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_ld2r: 2232*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.2s { v0, v1 }, [x0], #8 2233*9880d681SAndroid Build Coastguard Worker %ld2 = call { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld2r.v2i32.p0i32(i32* %A) 2234*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 2 2235*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 2236*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32> } %ld2 2237*9880d681SAndroid Build Coastguard Worker} 2238*9880d681SAndroid Build Coastguard Worker 2239*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32> } @test_v2i32_post_reg_ld2r(i32* %A, i32** %ptr, i64 %inc) nounwind { 2240*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_ld2r: 2241*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.2s { v0, v1 }, [x0], x{{[0-9]+}} 2242*9880d681SAndroid Build Coastguard Worker %ld2 = call { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld2r.v2i32.p0i32(i32* %A) 2243*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 2244*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 2245*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32> } %ld2 2246*9880d681SAndroid Build Coastguard Worker} 2247*9880d681SAndroid Build Coastguard Worker 2248*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld2r.v2i32.p0i32(i32*) nounwind readonly 2249*9880d681SAndroid Build Coastguard Worker 2250*9880d681SAndroid Build Coastguard Worker 2251*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64> } @test_v2i64_post_imm_ld2r(i64* %A, i64** %ptr) nounwind { 2252*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_ld2r: 2253*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.2d { v0, v1 }, [x0], #16 2254*9880d681SAndroid Build Coastguard Worker %ld2 = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2r.v2i64.p0i64(i64* %A) 2255*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 2 2256*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 2257*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64> } %ld2 2258*9880d681SAndroid Build Coastguard Worker} 2259*9880d681SAndroid Build Coastguard Worker 2260*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64> } @test_v2i64_post_reg_ld2r(i64* %A, i64** %ptr, i64 %inc) nounwind { 2261*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_ld2r: 2262*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.2d { v0, v1 }, [x0], x{{[0-9]+}} 2263*9880d681SAndroid Build Coastguard Worker %ld2 = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2r.v2i64.p0i64(i64* %A) 2264*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 2265*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 2266*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64> } %ld2 2267*9880d681SAndroid Build Coastguard Worker} 2268*9880d681SAndroid Build Coastguard Worker 2269*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2r.v2i64.p0i64(i64*) nounwind readonly 2270*9880d681SAndroid Build Coastguard Worker 2271*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64> } @test_v1i64_post_imm_ld2r(i64* %A, i64** %ptr) nounwind { 2272*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_ld2r: 2273*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.1d { v0, v1 }, [x0], #16 2274*9880d681SAndroid Build Coastguard Worker %ld2 = call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2r.v1i64.p0i64(i64* %A) 2275*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 2 2276*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 2277*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64> } %ld2 2278*9880d681SAndroid Build Coastguard Worker} 2279*9880d681SAndroid Build Coastguard Worker 2280*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64> } @test_v1i64_post_reg_ld2r(i64* %A, i64** %ptr, i64 %inc) nounwind { 2281*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_ld2r: 2282*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.1d { v0, v1 }, [x0], x{{[0-9]+}} 2283*9880d681SAndroid Build Coastguard Worker %ld2 = call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2r.v1i64.p0i64(i64* %A) 2284*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 2285*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 2286*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64> } %ld2 2287*9880d681SAndroid Build Coastguard Worker} 2288*9880d681SAndroid Build Coastguard Worker 2289*9880d681SAndroid Build Coastguard Workerdeclare { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2r.v1i64.p0i64(i64*) nounwind readonly 2290*9880d681SAndroid Build Coastguard Worker 2291*9880d681SAndroid Build Coastguard Worker 2292*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float> } @test_v4f32_post_imm_ld2r(float* %A, float** %ptr) nounwind { 2293*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_ld2r: 2294*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.4s { v0, v1 }, [x0], #8 2295*9880d681SAndroid Build Coastguard Worker %ld2 = call { <4 x float>, <4 x float> } @llvm.aarch64.neon.ld2r.v4f32.p0f32(float* %A) 2296*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 2 2297*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 2298*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float> } %ld2 2299*9880d681SAndroid Build Coastguard Worker} 2300*9880d681SAndroid Build Coastguard Worker 2301*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float> } @test_v4f32_post_reg_ld2r(float* %A, float** %ptr, i64 %inc) nounwind { 2302*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_ld2r: 2303*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.4s { v0, v1 }, [x0], x{{[0-9]+}} 2304*9880d681SAndroid Build Coastguard Worker %ld2 = call { <4 x float>, <4 x float> } @llvm.aarch64.neon.ld2r.v4f32.p0f32(float* %A) 2305*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 2306*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 2307*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float> } %ld2 2308*9880d681SAndroid Build Coastguard Worker} 2309*9880d681SAndroid Build Coastguard Worker 2310*9880d681SAndroid Build Coastguard Workerdeclare { <4 x float>, <4 x float> } @llvm.aarch64.neon.ld2r.v4f32.p0f32(float*) nounwind readonly 2311*9880d681SAndroid Build Coastguard Worker 2312*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float> } @test_v2f32_post_imm_ld2r(float* %A, float** %ptr) nounwind { 2313*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_ld2r: 2314*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.2s { v0, v1 }, [x0], #8 2315*9880d681SAndroid Build Coastguard Worker %ld2 = call { <2 x float>, <2 x float> } @llvm.aarch64.neon.ld2r.v2f32.p0f32(float* %A) 2316*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 2 2317*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 2318*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float> } %ld2 2319*9880d681SAndroid Build Coastguard Worker} 2320*9880d681SAndroid Build Coastguard Worker 2321*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float> } @test_v2f32_post_reg_ld2r(float* %A, float** %ptr, i64 %inc) nounwind { 2322*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_ld2r: 2323*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.2s { v0, v1 }, [x0], x{{[0-9]+}} 2324*9880d681SAndroid Build Coastguard Worker %ld2 = call { <2 x float>, <2 x float> } @llvm.aarch64.neon.ld2r.v2f32.p0f32(float* %A) 2325*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 2326*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 2327*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float> } %ld2 2328*9880d681SAndroid Build Coastguard Worker} 2329*9880d681SAndroid Build Coastguard Worker 2330*9880d681SAndroid Build Coastguard Workerdeclare { <2 x float>, <2 x float> } @llvm.aarch64.neon.ld2r.v2f32.p0f32(float*) nounwind readonly 2331*9880d681SAndroid Build Coastguard Worker 2332*9880d681SAndroid Build Coastguard Worker 2333*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double> } @test_v2f64_post_imm_ld2r(double* %A, double** %ptr) nounwind { 2334*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_ld2r: 2335*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.2d { v0, v1 }, [x0], #16 2336*9880d681SAndroid Build Coastguard Worker %ld2 = call { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld2r.v2f64.p0f64(double* %A) 2337*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 2 2338*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 2339*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double> } %ld2 2340*9880d681SAndroid Build Coastguard Worker} 2341*9880d681SAndroid Build Coastguard Worker 2342*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double> } @test_v2f64_post_reg_ld2r(double* %A, double** %ptr, i64 %inc) nounwind { 2343*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_ld2r: 2344*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.2d { v0, v1 }, [x0], x{{[0-9]+}} 2345*9880d681SAndroid Build Coastguard Worker %ld2 = call { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld2r.v2f64.p0f64(double* %A) 2346*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 2347*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 2348*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double> } %ld2 2349*9880d681SAndroid Build Coastguard Worker} 2350*9880d681SAndroid Build Coastguard Worker 2351*9880d681SAndroid Build Coastguard Workerdeclare { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld2r.v2f64.p0f64(double*) nounwind readonly 2352*9880d681SAndroid Build Coastguard Worker 2353*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double> } @test_v1f64_post_imm_ld2r(double* %A, double** %ptr) nounwind { 2354*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_ld2r: 2355*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.1d { v0, v1 }, [x0], #16 2356*9880d681SAndroid Build Coastguard Worker %ld2 = call { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld2r.v1f64.p0f64(double* %A) 2357*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 2 2358*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 2359*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double> } %ld2 2360*9880d681SAndroid Build Coastguard Worker} 2361*9880d681SAndroid Build Coastguard Worker 2362*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double> } @test_v1f64_post_reg_ld2r(double* %A, double** %ptr, i64 %inc) nounwind { 2363*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_ld2r: 2364*9880d681SAndroid Build Coastguard Worker;CHECK: ld2r.1d { v0, v1 }, [x0], x{{[0-9]+}} 2365*9880d681SAndroid Build Coastguard Worker %ld2 = call { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld2r.v1f64.p0f64(double* %A) 2366*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 2367*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 2368*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double> } %ld2 2369*9880d681SAndroid Build Coastguard Worker} 2370*9880d681SAndroid Build Coastguard Worker 2371*9880d681SAndroid Build Coastguard Workerdeclare { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld2r.v1f64.p0f64(double*) nounwind readonly 2372*9880d681SAndroid Build Coastguard Worker 2373*9880d681SAndroid Build Coastguard Worker 2374*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8>, <16 x i8> } @test_v16i8_post_imm_ld3r(i8* %A, i8** %ptr) nounwind { 2375*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_ld3r: 2376*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.16b { v0, v1, v2 }, [x0], #3 2377*9880d681SAndroid Build Coastguard Worker %ld3 = call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3r.v16i8.p0i8(i8* %A) 2378*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 3 2379*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 2380*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8>, <16 x i8> } %ld3 2381*9880d681SAndroid Build Coastguard Worker} 2382*9880d681SAndroid Build Coastguard Worker 2383*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8>, <16 x i8> } @test_v16i8_post_reg_ld3r(i8* %A, i8** %ptr, i64 %inc) nounwind { 2384*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_ld3r: 2385*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.16b { v0, v1, v2 }, [x0], x{{[0-9]+}} 2386*9880d681SAndroid Build Coastguard Worker %ld3 = call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3r.v16i8.p0i8(i8* %A) 2387*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 2388*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 2389*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8>, <16 x i8> } %ld3 2390*9880d681SAndroid Build Coastguard Worker} 2391*9880d681SAndroid Build Coastguard Worker 2392*9880d681SAndroid Build Coastguard Workerdeclare { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3r.v16i8.p0i8(i8*) nounwind readonly 2393*9880d681SAndroid Build Coastguard Worker 2394*9880d681SAndroid Build Coastguard Worker 2395*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8>, <8 x i8> } @test_v8i8_post_imm_ld3r(i8* %A, i8** %ptr) nounwind { 2396*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_ld3r: 2397*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.8b { v0, v1, v2 }, [x0], #3 2398*9880d681SAndroid Build Coastguard Worker %ld3 = call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3r.v8i8.p0i8(i8* %A) 2399*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 3 2400*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 2401*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8>, <8 x i8> } %ld3 2402*9880d681SAndroid Build Coastguard Worker} 2403*9880d681SAndroid Build Coastguard Worker 2404*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8>, <8 x i8> } @test_v8i8_post_reg_ld3r(i8* %A, i8** %ptr, i64 %inc) nounwind { 2405*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_ld3r: 2406*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.8b { v0, v1, v2 }, [x0], x{{[0-9]+}} 2407*9880d681SAndroid Build Coastguard Worker %ld3 = call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3r.v8i8.p0i8(i8* %A) 2408*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 2409*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 2410*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8>, <8 x i8> } %ld3 2411*9880d681SAndroid Build Coastguard Worker} 2412*9880d681SAndroid Build Coastguard Worker 2413*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3r.v8i8.p0i8(i8*) nounwind readonly 2414*9880d681SAndroid Build Coastguard Worker 2415*9880d681SAndroid Build Coastguard Worker 2416*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16>, <8 x i16> } @test_v8i16_post_imm_ld3r(i16* %A, i16** %ptr) nounwind { 2417*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_ld3r: 2418*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.8h { v0, v1, v2 }, [x0], #6 2419*9880d681SAndroid Build Coastguard Worker %ld3 = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3r.v8i16.p0i16(i16* %A) 2420*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 3 2421*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 2422*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16>, <8 x i16> } %ld3 2423*9880d681SAndroid Build Coastguard Worker} 2424*9880d681SAndroid Build Coastguard Worker 2425*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16>, <8 x i16> } @test_v8i16_post_reg_ld3r(i16* %A, i16** %ptr, i64 %inc) nounwind { 2426*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_ld3r: 2427*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.8h { v0, v1, v2 }, [x0], x{{[0-9]+}} 2428*9880d681SAndroid Build Coastguard Worker %ld3 = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3r.v8i16.p0i16(i16* %A) 2429*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 2430*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 2431*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16>, <8 x i16> } %ld3 2432*9880d681SAndroid Build Coastguard Worker} 2433*9880d681SAndroid Build Coastguard Worker 2434*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3r.v8i16.p0i16(i16*) nounwind readonly 2435*9880d681SAndroid Build Coastguard Worker 2436*9880d681SAndroid Build Coastguard Worker 2437*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16>, <4 x i16> } @test_v4i16_post_imm_ld3r(i16* %A, i16** %ptr) nounwind { 2438*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_ld3r: 2439*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.4h { v0, v1, v2 }, [x0], #6 2440*9880d681SAndroid Build Coastguard Worker %ld3 = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3r.v4i16.p0i16(i16* %A) 2441*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 3 2442*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 2443*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16>, <4 x i16> } %ld3 2444*9880d681SAndroid Build Coastguard Worker} 2445*9880d681SAndroid Build Coastguard Worker 2446*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16>, <4 x i16> } @test_v4i16_post_reg_ld3r(i16* %A, i16** %ptr, i64 %inc) nounwind { 2447*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_ld3r: 2448*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.4h { v0, v1, v2 }, [x0], x{{[0-9]+}} 2449*9880d681SAndroid Build Coastguard Worker %ld3 = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3r.v4i16.p0i16(i16* %A) 2450*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 2451*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 2452*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16>, <4 x i16> } %ld3 2453*9880d681SAndroid Build Coastguard Worker} 2454*9880d681SAndroid Build Coastguard Worker 2455*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3r.v4i16.p0i16(i16*) nounwind readonly 2456*9880d681SAndroid Build Coastguard Worker 2457*9880d681SAndroid Build Coastguard Worker 2458*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32>, <4 x i32> } @test_v4i32_post_imm_ld3r(i32* %A, i32** %ptr) nounwind { 2459*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_ld3r: 2460*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.4s { v0, v1, v2 }, [x0], #12 2461*9880d681SAndroid Build Coastguard Worker %ld3 = call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3r.v4i32.p0i32(i32* %A) 2462*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 3 2463*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 2464*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32>, <4 x i32> } %ld3 2465*9880d681SAndroid Build Coastguard Worker} 2466*9880d681SAndroid Build Coastguard Worker 2467*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32>, <4 x i32> } @test_v4i32_post_reg_ld3r(i32* %A, i32** %ptr, i64 %inc) nounwind { 2468*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_ld3r: 2469*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.4s { v0, v1, v2 }, [x0], x{{[0-9]+}} 2470*9880d681SAndroid Build Coastguard Worker %ld3 = call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3r.v4i32.p0i32(i32* %A) 2471*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 2472*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 2473*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32>, <4 x i32> } %ld3 2474*9880d681SAndroid Build Coastguard Worker} 2475*9880d681SAndroid Build Coastguard Worker 2476*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3r.v4i32.p0i32(i32*) nounwind readonly 2477*9880d681SAndroid Build Coastguard Worker 2478*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32>, <2 x i32> } @test_v2i32_post_imm_ld3r(i32* %A, i32** %ptr) nounwind { 2479*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_ld3r: 2480*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.2s { v0, v1, v2 }, [x0], #12 2481*9880d681SAndroid Build Coastguard Worker %ld3 = call { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld3r.v2i32.p0i32(i32* %A) 2482*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 3 2483*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 2484*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32>, <2 x i32> } %ld3 2485*9880d681SAndroid Build Coastguard Worker} 2486*9880d681SAndroid Build Coastguard Worker 2487*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32>, <2 x i32> } @test_v2i32_post_reg_ld3r(i32* %A, i32** %ptr, i64 %inc) nounwind { 2488*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_ld3r: 2489*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.2s { v0, v1, v2 }, [x0], x{{[0-9]+}} 2490*9880d681SAndroid Build Coastguard Worker %ld3 = call { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld3r.v2i32.p0i32(i32* %A) 2491*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 2492*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 2493*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32>, <2 x i32> } %ld3 2494*9880d681SAndroid Build Coastguard Worker} 2495*9880d681SAndroid Build Coastguard Worker 2496*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld3r.v2i32.p0i32(i32*) nounwind readonly 2497*9880d681SAndroid Build Coastguard Worker 2498*9880d681SAndroid Build Coastguard Worker 2499*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64>, <2 x i64> } @test_v2i64_post_imm_ld3r(i64* %A, i64** %ptr) nounwind { 2500*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_ld3r: 2501*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.2d { v0, v1, v2 }, [x0], #24 2502*9880d681SAndroid Build Coastguard Worker %ld3 = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3r.v2i64.p0i64(i64* %A) 2503*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 3 2504*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 2505*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64>, <2 x i64> } %ld3 2506*9880d681SAndroid Build Coastguard Worker} 2507*9880d681SAndroid Build Coastguard Worker 2508*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64>, <2 x i64> } @test_v2i64_post_reg_ld3r(i64* %A, i64** %ptr, i64 %inc) nounwind { 2509*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_ld3r: 2510*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.2d { v0, v1, v2 }, [x0], x{{[0-9]+}} 2511*9880d681SAndroid Build Coastguard Worker %ld3 = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3r.v2i64.p0i64(i64* %A) 2512*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 2513*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 2514*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64>, <2 x i64> } %ld3 2515*9880d681SAndroid Build Coastguard Worker} 2516*9880d681SAndroid Build Coastguard Worker 2517*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3r.v2i64.p0i64(i64*) nounwind readonly 2518*9880d681SAndroid Build Coastguard Worker 2519*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64>, <1 x i64> } @test_v1i64_post_imm_ld3r(i64* %A, i64** %ptr) nounwind { 2520*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_ld3r: 2521*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.1d { v0, v1, v2 }, [x0], #24 2522*9880d681SAndroid Build Coastguard Worker %ld3 = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3r.v1i64.p0i64(i64* %A) 2523*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 3 2524*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 2525*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64>, <1 x i64> } %ld3 2526*9880d681SAndroid Build Coastguard Worker} 2527*9880d681SAndroid Build Coastguard Worker 2528*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64>, <1 x i64> } @test_v1i64_post_reg_ld3r(i64* %A, i64** %ptr, i64 %inc) nounwind { 2529*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_ld3r: 2530*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.1d { v0, v1, v2 }, [x0], x{{[0-9]+}} 2531*9880d681SAndroid Build Coastguard Worker %ld3 = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3r.v1i64.p0i64(i64* %A) 2532*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 2533*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 2534*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64>, <1 x i64> } %ld3 2535*9880d681SAndroid Build Coastguard Worker} 2536*9880d681SAndroid Build Coastguard Worker 2537*9880d681SAndroid Build Coastguard Workerdeclare { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3r.v1i64.p0i64(i64*) nounwind readonly 2538*9880d681SAndroid Build Coastguard Worker 2539*9880d681SAndroid Build Coastguard Worker 2540*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float>, <4 x float> } @test_v4f32_post_imm_ld3r(float* %A, float** %ptr) nounwind { 2541*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_ld3r: 2542*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.4s { v0, v1, v2 }, [x0], #12 2543*9880d681SAndroid Build Coastguard Worker %ld3 = call { <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld3r.v4f32.p0f32(float* %A) 2544*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 3 2545*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 2546*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float>, <4 x float> } %ld3 2547*9880d681SAndroid Build Coastguard Worker} 2548*9880d681SAndroid Build Coastguard Worker 2549*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float>, <4 x float> } @test_v4f32_post_reg_ld3r(float* %A, float** %ptr, i64 %inc) nounwind { 2550*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_ld3r: 2551*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.4s { v0, v1, v2 }, [x0], x{{[0-9]+}} 2552*9880d681SAndroid Build Coastguard Worker %ld3 = call { <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld3r.v4f32.p0f32(float* %A) 2553*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 2554*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 2555*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float>, <4 x float> } %ld3 2556*9880d681SAndroid Build Coastguard Worker} 2557*9880d681SAndroid Build Coastguard Worker 2558*9880d681SAndroid Build Coastguard Workerdeclare { <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld3r.v4f32.p0f32(float*) nounwind readonly 2559*9880d681SAndroid Build Coastguard Worker 2560*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float>, <2 x float> } @test_v2f32_post_imm_ld3r(float* %A, float** %ptr) nounwind { 2561*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_ld3r: 2562*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.2s { v0, v1, v2 }, [x0], #12 2563*9880d681SAndroid Build Coastguard Worker %ld3 = call { <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld3r.v2f32.p0f32(float* %A) 2564*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 3 2565*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 2566*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float>, <2 x float> } %ld3 2567*9880d681SAndroid Build Coastguard Worker} 2568*9880d681SAndroid Build Coastguard Worker 2569*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float>, <2 x float> } @test_v2f32_post_reg_ld3r(float* %A, float** %ptr, i64 %inc) nounwind { 2570*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_ld3r: 2571*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.2s { v0, v1, v2 }, [x0], x{{[0-9]+}} 2572*9880d681SAndroid Build Coastguard Worker %ld3 = call { <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld3r.v2f32.p0f32(float* %A) 2573*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 2574*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 2575*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float>, <2 x float> } %ld3 2576*9880d681SAndroid Build Coastguard Worker} 2577*9880d681SAndroid Build Coastguard Worker 2578*9880d681SAndroid Build Coastguard Workerdeclare { <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld3r.v2f32.p0f32(float*) nounwind readonly 2579*9880d681SAndroid Build Coastguard Worker 2580*9880d681SAndroid Build Coastguard Worker 2581*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double>, <2 x double> } @test_v2f64_post_imm_ld3r(double* %A, double** %ptr) nounwind { 2582*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_ld3r: 2583*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.2d { v0, v1, v2 }, [x0], #24 2584*9880d681SAndroid Build Coastguard Worker %ld3 = call { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld3r.v2f64.p0f64(double* %A) 2585*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 3 2586*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 2587*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double>, <2 x double> } %ld3 2588*9880d681SAndroid Build Coastguard Worker} 2589*9880d681SAndroid Build Coastguard Worker 2590*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double>, <2 x double> } @test_v2f64_post_reg_ld3r(double* %A, double** %ptr, i64 %inc) nounwind { 2591*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_ld3r: 2592*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.2d { v0, v1, v2 }, [x0], x{{[0-9]+}} 2593*9880d681SAndroid Build Coastguard Worker %ld3 = call { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld3r.v2f64.p0f64(double* %A) 2594*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 2595*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 2596*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double>, <2 x double> } %ld3 2597*9880d681SAndroid Build Coastguard Worker} 2598*9880d681SAndroid Build Coastguard Worker 2599*9880d681SAndroid Build Coastguard Workerdeclare { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld3r.v2f64.p0f64(double*) nounwind readonly 2600*9880d681SAndroid Build Coastguard Worker 2601*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double>, <1 x double> } @test_v1f64_post_imm_ld3r(double* %A, double** %ptr) nounwind { 2602*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_ld3r: 2603*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.1d { v0, v1, v2 }, [x0], #24 2604*9880d681SAndroid Build Coastguard Worker %ld3 = call { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld3r.v1f64.p0f64(double* %A) 2605*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 3 2606*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 2607*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double>, <1 x double> } %ld3 2608*9880d681SAndroid Build Coastguard Worker} 2609*9880d681SAndroid Build Coastguard Worker 2610*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double>, <1 x double> } @test_v1f64_post_reg_ld3r(double* %A, double** %ptr, i64 %inc) nounwind { 2611*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_ld3r: 2612*9880d681SAndroid Build Coastguard Worker;CHECK: ld3r.1d { v0, v1, v2 }, [x0], x{{[0-9]+}} 2613*9880d681SAndroid Build Coastguard Worker %ld3 = call { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld3r.v1f64.p0f64(double* %A) 2614*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 2615*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 2616*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double>, <1 x double> } %ld3 2617*9880d681SAndroid Build Coastguard Worker} 2618*9880d681SAndroid Build Coastguard Worker 2619*9880d681SAndroid Build Coastguard Workerdeclare { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld3r.v1f64.p0f64(double*) nounwind readonly 2620*9880d681SAndroid Build Coastguard Worker 2621*9880d681SAndroid Build Coastguard Worker 2622*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @test_v16i8_post_imm_ld4r(i8* %A, i8** %ptr) nounwind { 2623*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_ld4r: 2624*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.16b { v0, v1, v2, v3 }, [x0], #4 2625*9880d681SAndroid Build Coastguard Worker %ld4 = call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4r.v16i8.p0i8(i8* %A) 2626*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 4 2627*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 2628*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } %ld4 2629*9880d681SAndroid Build Coastguard Worker} 2630*9880d681SAndroid Build Coastguard Worker 2631*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @test_v16i8_post_reg_ld4r(i8* %A, i8** %ptr, i64 %inc) nounwind { 2632*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_ld4r: 2633*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.16b { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2634*9880d681SAndroid Build Coastguard Worker %ld4 = call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4r.v16i8.p0i8(i8* %A) 2635*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 2636*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 2637*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } %ld4 2638*9880d681SAndroid Build Coastguard Worker} 2639*9880d681SAndroid Build Coastguard Worker 2640*9880d681SAndroid Build Coastguard Workerdeclare { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4r.v16i8.p0i8(i8*) nounwind readonly 2641*9880d681SAndroid Build Coastguard Worker 2642*9880d681SAndroid Build Coastguard Worker 2643*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @test_v8i8_post_imm_ld4r(i8* %A, i8** %ptr) nounwind { 2644*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_ld4r: 2645*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.8b { v0, v1, v2, v3 }, [x0], #4 2646*9880d681SAndroid Build Coastguard Worker %ld4 = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4r.v8i8.p0i8(i8* %A) 2647*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 4 2648*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 2649*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } %ld4 2650*9880d681SAndroid Build Coastguard Worker} 2651*9880d681SAndroid Build Coastguard Worker 2652*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @test_v8i8_post_reg_ld4r(i8* %A, i8** %ptr, i64 %inc) nounwind { 2653*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_ld4r: 2654*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.8b { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2655*9880d681SAndroid Build Coastguard Worker %ld4 = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4r.v8i8.p0i8(i8* %A) 2656*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 2657*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 2658*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } %ld4 2659*9880d681SAndroid Build Coastguard Worker} 2660*9880d681SAndroid Build Coastguard Worker 2661*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4r.v8i8.p0i8(i8*) nounwind readonly 2662*9880d681SAndroid Build Coastguard Worker 2663*9880d681SAndroid Build Coastguard Worker 2664*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @test_v8i16_post_imm_ld4r(i16* %A, i16** %ptr) nounwind { 2665*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_ld4r: 2666*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.8h { v0, v1, v2, v3 }, [x0], #8 2667*9880d681SAndroid Build Coastguard Worker %ld4 = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4r.v8i16.p0i16(i16* %A) 2668*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 4 2669*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 2670*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } %ld4 2671*9880d681SAndroid Build Coastguard Worker} 2672*9880d681SAndroid Build Coastguard Worker 2673*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @test_v8i16_post_reg_ld4r(i16* %A, i16** %ptr, i64 %inc) nounwind { 2674*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_ld4r: 2675*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.8h { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2676*9880d681SAndroid Build Coastguard Worker %ld4 = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4r.v8i16.p0i16(i16* %A) 2677*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 2678*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 2679*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } %ld4 2680*9880d681SAndroid Build Coastguard Worker} 2681*9880d681SAndroid Build Coastguard Worker 2682*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4r.v8i16.p0i16(i16*) nounwind readonly 2683*9880d681SAndroid Build Coastguard Worker 2684*9880d681SAndroid Build Coastguard Worker 2685*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @test_v4i16_post_imm_ld4r(i16* %A, i16** %ptr) nounwind { 2686*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_ld4r: 2687*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.4h { v0, v1, v2, v3 }, [x0], #8 2688*9880d681SAndroid Build Coastguard Worker %ld4 = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4r.v4i16.p0i16(i16* %A) 2689*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 4 2690*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 2691*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } %ld4 2692*9880d681SAndroid Build Coastguard Worker} 2693*9880d681SAndroid Build Coastguard Worker 2694*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @test_v4i16_post_reg_ld4r(i16* %A, i16** %ptr, i64 %inc) nounwind { 2695*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_ld4r: 2696*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.4h { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2697*9880d681SAndroid Build Coastguard Worker %ld4 = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4r.v4i16.p0i16(i16* %A) 2698*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 2699*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 2700*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } %ld4 2701*9880d681SAndroid Build Coastguard Worker} 2702*9880d681SAndroid Build Coastguard Worker 2703*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4r.v4i16.p0i16(i16*) nounwind readonly 2704*9880d681SAndroid Build Coastguard Worker 2705*9880d681SAndroid Build Coastguard Worker 2706*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @test_v4i32_post_imm_ld4r(i32* %A, i32** %ptr) nounwind { 2707*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_ld4r: 2708*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.4s { v0, v1, v2, v3 }, [x0], #16 2709*9880d681SAndroid Build Coastguard Worker %ld4 = call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld4r.v4i32.p0i32(i32* %A) 2710*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 4 2711*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 2712*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } %ld4 2713*9880d681SAndroid Build Coastguard Worker} 2714*9880d681SAndroid Build Coastguard Worker 2715*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @test_v4i32_post_reg_ld4r(i32* %A, i32** %ptr, i64 %inc) nounwind { 2716*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_ld4r: 2717*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.4s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2718*9880d681SAndroid Build Coastguard Worker %ld4 = call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld4r.v4i32.p0i32(i32* %A) 2719*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 2720*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 2721*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } %ld4 2722*9880d681SAndroid Build Coastguard Worker} 2723*9880d681SAndroid Build Coastguard Worker 2724*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld4r.v4i32.p0i32(i32*) nounwind readonly 2725*9880d681SAndroid Build Coastguard Worker 2726*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @test_v2i32_post_imm_ld4r(i32* %A, i32** %ptr) nounwind { 2727*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_ld4r: 2728*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.2s { v0, v1, v2, v3 }, [x0], #16 2729*9880d681SAndroid Build Coastguard Worker %ld4 = call { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld4r.v2i32.p0i32(i32* %A) 2730*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 4 2731*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 2732*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } %ld4 2733*9880d681SAndroid Build Coastguard Worker} 2734*9880d681SAndroid Build Coastguard Worker 2735*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @test_v2i32_post_reg_ld4r(i32* %A, i32** %ptr, i64 %inc) nounwind { 2736*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_ld4r: 2737*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.2s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2738*9880d681SAndroid Build Coastguard Worker %ld4 = call { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld4r.v2i32.p0i32(i32* %A) 2739*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 2740*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 2741*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } %ld4 2742*9880d681SAndroid Build Coastguard Worker} 2743*9880d681SAndroid Build Coastguard Worker 2744*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld4r.v2i32.p0i32(i32*) nounwind readonly 2745*9880d681SAndroid Build Coastguard Worker 2746*9880d681SAndroid Build Coastguard Worker 2747*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @test_v2i64_post_imm_ld4r(i64* %A, i64** %ptr) nounwind { 2748*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_ld4r: 2749*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.2d { v0, v1, v2, v3 }, [x0], #32 2750*9880d681SAndroid Build Coastguard Worker %ld4 = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4r.v2i64.p0i64(i64* %A) 2751*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 4 2752*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 2753*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } %ld4 2754*9880d681SAndroid Build Coastguard Worker} 2755*9880d681SAndroid Build Coastguard Worker 2756*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @test_v2i64_post_reg_ld4r(i64* %A, i64** %ptr, i64 %inc) nounwind { 2757*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_ld4r: 2758*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.2d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2759*9880d681SAndroid Build Coastguard Worker %ld4 = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4r.v2i64.p0i64(i64* %A) 2760*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 2761*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 2762*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } %ld4 2763*9880d681SAndroid Build Coastguard Worker} 2764*9880d681SAndroid Build Coastguard Worker 2765*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4r.v2i64.p0i64(i64*) nounwind readonly 2766*9880d681SAndroid Build Coastguard Worker 2767*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @test_v1i64_post_imm_ld4r(i64* %A, i64** %ptr) nounwind { 2768*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_ld4r: 2769*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.1d { v0, v1, v2, v3 }, [x0], #32 2770*9880d681SAndroid Build Coastguard Worker %ld4 = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4r.v1i64.p0i64(i64* %A) 2771*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 4 2772*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 2773*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } %ld4 2774*9880d681SAndroid Build Coastguard Worker} 2775*9880d681SAndroid Build Coastguard Worker 2776*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @test_v1i64_post_reg_ld4r(i64* %A, i64** %ptr, i64 %inc) nounwind { 2777*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_ld4r: 2778*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.1d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2779*9880d681SAndroid Build Coastguard Worker %ld4 = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4r.v1i64.p0i64(i64* %A) 2780*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 2781*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 2782*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } %ld4 2783*9880d681SAndroid Build Coastguard Worker} 2784*9880d681SAndroid Build Coastguard Worker 2785*9880d681SAndroid Build Coastguard Workerdeclare { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4r.v1i64.p0i64(i64*) nounwind readonly 2786*9880d681SAndroid Build Coastguard Worker 2787*9880d681SAndroid Build Coastguard Worker 2788*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @test_v4f32_post_imm_ld4r(float* %A, float** %ptr) nounwind { 2789*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_ld4r: 2790*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.4s { v0, v1, v2, v3 }, [x0], #16 2791*9880d681SAndroid Build Coastguard Worker %ld4 = call { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld4r.v4f32.p0f32(float* %A) 2792*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 4 2793*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 2794*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float>, <4 x float>, <4 x float> } %ld4 2795*9880d681SAndroid Build Coastguard Worker} 2796*9880d681SAndroid Build Coastguard Worker 2797*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @test_v4f32_post_reg_ld4r(float* %A, float** %ptr, i64 %inc) nounwind { 2798*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_ld4r: 2799*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.4s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2800*9880d681SAndroid Build Coastguard Worker %ld4 = call { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld4r.v4f32.p0f32(float* %A) 2801*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 2802*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 2803*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float>, <4 x float>, <4 x float> } %ld4 2804*9880d681SAndroid Build Coastguard Worker} 2805*9880d681SAndroid Build Coastguard Worker 2806*9880d681SAndroid Build Coastguard Workerdeclare { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld4r.v4f32.p0f32(float*) nounwind readonly 2807*9880d681SAndroid Build Coastguard Worker 2808*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @test_v2f32_post_imm_ld4r(float* %A, float** %ptr) nounwind { 2809*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_ld4r: 2810*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.2s { v0, v1, v2, v3 }, [x0], #16 2811*9880d681SAndroid Build Coastguard Worker %ld4 = call { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld4r.v2f32.p0f32(float* %A) 2812*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 4 2813*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 2814*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float>, <2 x float>, <2 x float> } %ld4 2815*9880d681SAndroid Build Coastguard Worker} 2816*9880d681SAndroid Build Coastguard Worker 2817*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @test_v2f32_post_reg_ld4r(float* %A, float** %ptr, i64 %inc) nounwind { 2818*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_ld4r: 2819*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.2s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2820*9880d681SAndroid Build Coastguard Worker %ld4 = call { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld4r.v2f32.p0f32(float* %A) 2821*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 2822*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 2823*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float>, <2 x float>, <2 x float> } %ld4 2824*9880d681SAndroid Build Coastguard Worker} 2825*9880d681SAndroid Build Coastguard Worker 2826*9880d681SAndroid Build Coastguard Workerdeclare { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld4r.v2f32.p0f32(float*) nounwind readonly 2827*9880d681SAndroid Build Coastguard Worker 2828*9880d681SAndroid Build Coastguard Worker 2829*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @test_v2f64_post_imm_ld4r(double* %A, double** %ptr) nounwind { 2830*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_ld4r: 2831*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.2d { v0, v1, v2, v3 }, [x0], #32 2832*9880d681SAndroid Build Coastguard Worker %ld4 = call { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld4r.v2f64.p0f64(double* %A) 2833*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 4 2834*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 2835*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double>, <2 x double>, <2 x double> } %ld4 2836*9880d681SAndroid Build Coastguard Worker} 2837*9880d681SAndroid Build Coastguard Worker 2838*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @test_v2f64_post_reg_ld4r(double* %A, double** %ptr, i64 %inc) nounwind { 2839*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_ld4r: 2840*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.2d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2841*9880d681SAndroid Build Coastguard Worker %ld4 = call { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld4r.v2f64.p0f64(double* %A) 2842*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 2843*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 2844*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double>, <2 x double>, <2 x double> } %ld4 2845*9880d681SAndroid Build Coastguard Worker} 2846*9880d681SAndroid Build Coastguard Worker 2847*9880d681SAndroid Build Coastguard Workerdeclare { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld4r.v2f64.p0f64(double*) nounwind readonly 2848*9880d681SAndroid Build Coastguard Worker 2849*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @test_v1f64_post_imm_ld4r(double* %A, double** %ptr) nounwind { 2850*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_ld4r: 2851*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.1d { v0, v1, v2, v3 }, [x0], #32 2852*9880d681SAndroid Build Coastguard Worker %ld4 = call { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld4r.v1f64.p0f64(double* %A) 2853*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 4 2854*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 2855*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double>, <1 x double>, <1 x double> } %ld4 2856*9880d681SAndroid Build Coastguard Worker} 2857*9880d681SAndroid Build Coastguard Worker 2858*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @test_v1f64_post_reg_ld4r(double* %A, double** %ptr, i64 %inc) nounwind { 2859*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_ld4r: 2860*9880d681SAndroid Build Coastguard Worker;CHECK: ld4r.1d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 2861*9880d681SAndroid Build Coastguard Worker %ld4 = call { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld4r.v1f64.p0f64(double* %A) 2862*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 2863*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 2864*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double>, <1 x double>, <1 x double> } %ld4 2865*9880d681SAndroid Build Coastguard Worker} 2866*9880d681SAndroid Build Coastguard Worker 2867*9880d681SAndroid Build Coastguard Workerdeclare { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld4r.v1f64.p0f64(double*) nounwind readonly 2868*9880d681SAndroid Build Coastguard Worker 2869*9880d681SAndroid Build Coastguard Worker 2870*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8> } @test_v16i8_post_imm_ld2lane(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C) nounwind { 2871*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_ld2lane: 2872*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.b { v0, v1 }[0], [x0], #2 2873*9880d681SAndroid Build Coastguard Worker %ld2 = call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2lane.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, i64 0, i8* %A) 2874*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 2 2875*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 2876*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8> } %ld2 2877*9880d681SAndroid Build Coastguard Worker} 2878*9880d681SAndroid Build Coastguard Worker 2879*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8> } @test_v16i8_post_reg_ld2lane(i8* %A, i8** %ptr, i64 %inc, <16 x i8> %B, <16 x i8> %C) nounwind { 2880*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_ld2lane: 2881*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.b { v0, v1 }[0], [x0], x{{[0-9]+}} 2882*9880d681SAndroid Build Coastguard Worker %ld2 = call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2lane.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, i64 0, i8* %A) 2883*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 2884*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 2885*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8> } %ld2 2886*9880d681SAndroid Build Coastguard Worker} 2887*9880d681SAndroid Build Coastguard Worker 2888*9880d681SAndroid Build Coastguard Workerdeclare { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2lane.v16i8.p0i8(<16 x i8>, <16 x i8>, i64, i8*) nounwind readonly 2889*9880d681SAndroid Build Coastguard Worker 2890*9880d681SAndroid Build Coastguard Worker 2891*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8> } @test_v8i8_post_imm_ld2lane(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C) nounwind { 2892*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_ld2lane: 2893*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.b { v0, v1 }[0], [x0], #2 2894*9880d681SAndroid Build Coastguard Worker %ld2 = call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2lane.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, i64 0, i8* %A) 2895*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 2 2896*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 2897*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8> } %ld2 2898*9880d681SAndroid Build Coastguard Worker} 2899*9880d681SAndroid Build Coastguard Worker 2900*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8> } @test_v8i8_post_reg_ld2lane(i8* %A, i8** %ptr, i64 %inc, <8 x i8> %B, <8 x i8> %C) nounwind { 2901*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_ld2lane: 2902*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.b { v0, v1 }[0], [x0], x{{[0-9]+}} 2903*9880d681SAndroid Build Coastguard Worker %ld2 = call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2lane.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, i64 0, i8* %A) 2904*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 2905*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 2906*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8> } %ld2 2907*9880d681SAndroid Build Coastguard Worker} 2908*9880d681SAndroid Build Coastguard Worker 2909*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2lane.v8i8.p0i8(<8 x i8>, <8 x i8>, i64, i8*) nounwind readonly 2910*9880d681SAndroid Build Coastguard Worker 2911*9880d681SAndroid Build Coastguard Worker 2912*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16> } @test_v8i16_post_imm_ld2lane(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C) nounwind { 2913*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_ld2lane: 2914*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.h { v0, v1 }[0], [x0], #4 2915*9880d681SAndroid Build Coastguard Worker %ld2 = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2lane.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, i64 0, i16* %A) 2916*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 2 2917*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 2918*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16> } %ld2 2919*9880d681SAndroid Build Coastguard Worker} 2920*9880d681SAndroid Build Coastguard Worker 2921*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16> } @test_v8i16_post_reg_ld2lane(i16* %A, i16** %ptr, i64 %inc, <8 x i16> %B, <8 x i16> %C) nounwind { 2922*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_ld2lane: 2923*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.h { v0, v1 }[0], [x0], x{{[0-9]+}} 2924*9880d681SAndroid Build Coastguard Worker %ld2 = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2lane.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, i64 0, i16* %A) 2925*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 2926*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 2927*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16> } %ld2 2928*9880d681SAndroid Build Coastguard Worker} 2929*9880d681SAndroid Build Coastguard Worker 2930*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2lane.v8i16.p0i16(<8 x i16>, <8 x i16>, i64, i16*) nounwind readonly 2931*9880d681SAndroid Build Coastguard Worker 2932*9880d681SAndroid Build Coastguard Worker 2933*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16> } @test_v4i16_post_imm_ld2lane(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C) nounwind { 2934*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_ld2lane: 2935*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.h { v0, v1 }[0], [x0], #4 2936*9880d681SAndroid Build Coastguard Worker %ld2 = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2lane.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, i64 0, i16* %A) 2937*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 2 2938*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 2939*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16> } %ld2 2940*9880d681SAndroid Build Coastguard Worker} 2941*9880d681SAndroid Build Coastguard Worker 2942*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16> } @test_v4i16_post_reg_ld2lane(i16* %A, i16** %ptr, i64 %inc, <4 x i16> %B, <4 x i16> %C) nounwind { 2943*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_ld2lane: 2944*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.h { v0, v1 }[0], [x0], x{{[0-9]+}} 2945*9880d681SAndroid Build Coastguard Worker %ld2 = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2lane.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, i64 0, i16* %A) 2946*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 2947*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 2948*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16> } %ld2 2949*9880d681SAndroid Build Coastguard Worker} 2950*9880d681SAndroid Build Coastguard Worker 2951*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2lane.v4i16.p0i16(<4 x i16>, <4 x i16>, i64, i16*) nounwind readonly 2952*9880d681SAndroid Build Coastguard Worker 2953*9880d681SAndroid Build Coastguard Worker 2954*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32> } @test_v4i32_post_imm_ld2lane(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C) nounwind { 2955*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_ld2lane: 2956*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.s { v0, v1 }[0], [x0], #8 2957*9880d681SAndroid Build Coastguard Worker %ld2 = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2lane.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, i64 0, i32* %A) 2958*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 2 2959*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 2960*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32> } %ld2 2961*9880d681SAndroid Build Coastguard Worker} 2962*9880d681SAndroid Build Coastguard Worker 2963*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32> } @test_v4i32_post_reg_ld2lane(i32* %A, i32** %ptr, i64 %inc, <4 x i32> %B, <4 x i32> %C) nounwind { 2964*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_ld2lane: 2965*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.s { v0, v1 }[0], [x0], x{{[0-9]+}} 2966*9880d681SAndroid Build Coastguard Worker %ld2 = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2lane.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, i64 0, i32* %A) 2967*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 2968*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 2969*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32> } %ld2 2970*9880d681SAndroid Build Coastguard Worker} 2971*9880d681SAndroid Build Coastguard Worker 2972*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2lane.v4i32.p0i32(<4 x i32>, <4 x i32>, i64, i32*) nounwind readonly 2973*9880d681SAndroid Build Coastguard Worker 2974*9880d681SAndroid Build Coastguard Worker 2975*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32> } @test_v2i32_post_imm_ld2lane(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C) nounwind { 2976*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_ld2lane: 2977*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.s { v0, v1 }[0], [x0], #8 2978*9880d681SAndroid Build Coastguard Worker %ld2 = call { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld2lane.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, i64 0, i32* %A) 2979*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 2 2980*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 2981*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32> } %ld2 2982*9880d681SAndroid Build Coastguard Worker} 2983*9880d681SAndroid Build Coastguard Worker 2984*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32> } @test_v2i32_post_reg_ld2lane(i32* %A, i32** %ptr, i64 %inc, <2 x i32> %B, <2 x i32> %C) nounwind { 2985*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_ld2lane: 2986*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.s { v0, v1 }[0], [x0], x{{[0-9]+}} 2987*9880d681SAndroid Build Coastguard Worker %ld2 = call { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld2lane.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, i64 0, i32* %A) 2988*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 2989*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 2990*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32> } %ld2 2991*9880d681SAndroid Build Coastguard Worker} 2992*9880d681SAndroid Build Coastguard Worker 2993*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld2lane.v2i32.p0i32(<2 x i32>, <2 x i32>, i64, i32*) nounwind readonly 2994*9880d681SAndroid Build Coastguard Worker 2995*9880d681SAndroid Build Coastguard Worker 2996*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64> } @test_v2i64_post_imm_ld2lane(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C) nounwind { 2997*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_ld2lane: 2998*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.d { v0, v1 }[0], [x0], #16 2999*9880d681SAndroid Build Coastguard Worker %ld2 = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2lane.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, i64 0, i64* %A) 3000*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 2 3001*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 3002*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64> } %ld2 3003*9880d681SAndroid Build Coastguard Worker} 3004*9880d681SAndroid Build Coastguard Worker 3005*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64> } @test_v2i64_post_reg_ld2lane(i64* %A, i64** %ptr, i64 %inc, <2 x i64> %B, <2 x i64> %C) nounwind { 3006*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_ld2lane: 3007*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.d { v0, v1 }[0], [x0], x{{[0-9]+}} 3008*9880d681SAndroid Build Coastguard Worker %ld2 = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2lane.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, i64 0, i64* %A) 3009*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 3010*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 3011*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64> } %ld2 3012*9880d681SAndroid Build Coastguard Worker} 3013*9880d681SAndroid Build Coastguard Worker 3014*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2lane.v2i64.p0i64(<2 x i64>, <2 x i64>, i64, i64*) nounwind readonly 3015*9880d681SAndroid Build Coastguard Worker 3016*9880d681SAndroid Build Coastguard Worker 3017*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64> } @test_v1i64_post_imm_ld2lane(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C) nounwind { 3018*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_ld2lane: 3019*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.d { v0, v1 }[0], [x0], #16 3020*9880d681SAndroid Build Coastguard Worker %ld2 = call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2lane.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, i64 0, i64* %A) 3021*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 2 3022*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 3023*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64> } %ld2 3024*9880d681SAndroid Build Coastguard Worker} 3025*9880d681SAndroid Build Coastguard Worker 3026*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64> } @test_v1i64_post_reg_ld2lane(i64* %A, i64** %ptr, i64 %inc, <1 x i64> %B, <1 x i64> %C) nounwind { 3027*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_ld2lane: 3028*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.d { v0, v1 }[0], [x0], x{{[0-9]+}} 3029*9880d681SAndroid Build Coastguard Worker %ld2 = call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2lane.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, i64 0, i64* %A) 3030*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 3031*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 3032*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64> } %ld2 3033*9880d681SAndroid Build Coastguard Worker} 3034*9880d681SAndroid Build Coastguard Worker 3035*9880d681SAndroid Build Coastguard Workerdeclare { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2lane.v1i64.p0i64(<1 x i64>, <1 x i64>, i64, i64*) nounwind readonly 3036*9880d681SAndroid Build Coastguard Worker 3037*9880d681SAndroid Build Coastguard Worker 3038*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float> } @test_v4f32_post_imm_ld2lane(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C) nounwind { 3039*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_ld2lane: 3040*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.s { v0, v1 }[0], [x0], #8 3041*9880d681SAndroid Build Coastguard Worker %ld2 = call { <4 x float>, <4 x float> } @llvm.aarch64.neon.ld2lane.v4f32.p0f32(<4 x float> %B, <4 x float> %C, i64 0, float* %A) 3042*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 2 3043*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 3044*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float> } %ld2 3045*9880d681SAndroid Build Coastguard Worker} 3046*9880d681SAndroid Build Coastguard Worker 3047*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float> } @test_v4f32_post_reg_ld2lane(float* %A, float** %ptr, i64 %inc, <4 x float> %B, <4 x float> %C) nounwind { 3048*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_ld2lane: 3049*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.s { v0, v1 }[0], [x0], x{{[0-9]+}} 3050*9880d681SAndroid Build Coastguard Worker %ld2 = call { <4 x float>, <4 x float> } @llvm.aarch64.neon.ld2lane.v4f32.p0f32(<4 x float> %B, <4 x float> %C, i64 0, float* %A) 3051*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 3052*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 3053*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float> } %ld2 3054*9880d681SAndroid Build Coastguard Worker} 3055*9880d681SAndroid Build Coastguard Worker 3056*9880d681SAndroid Build Coastguard Workerdeclare { <4 x float>, <4 x float> } @llvm.aarch64.neon.ld2lane.v4f32.p0f32(<4 x float>, <4 x float>, i64, float*) nounwind readonly 3057*9880d681SAndroid Build Coastguard Worker 3058*9880d681SAndroid Build Coastguard Worker 3059*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float> } @test_v2f32_post_imm_ld2lane(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C) nounwind { 3060*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_ld2lane: 3061*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.s { v0, v1 }[0], [x0], #8 3062*9880d681SAndroid Build Coastguard Worker %ld2 = call { <2 x float>, <2 x float> } @llvm.aarch64.neon.ld2lane.v2f32.p0f32(<2 x float> %B, <2 x float> %C, i64 0, float* %A) 3063*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 2 3064*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 3065*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float> } %ld2 3066*9880d681SAndroid Build Coastguard Worker} 3067*9880d681SAndroid Build Coastguard Worker 3068*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float> } @test_v2f32_post_reg_ld2lane(float* %A, float** %ptr, i64 %inc, <2 x float> %B, <2 x float> %C) nounwind { 3069*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_ld2lane: 3070*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.s { v0, v1 }[0], [x0], x{{[0-9]+}} 3071*9880d681SAndroid Build Coastguard Worker %ld2 = call { <2 x float>, <2 x float> } @llvm.aarch64.neon.ld2lane.v2f32.p0f32(<2 x float> %B, <2 x float> %C, i64 0, float* %A) 3072*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 3073*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 3074*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float> } %ld2 3075*9880d681SAndroid Build Coastguard Worker} 3076*9880d681SAndroid Build Coastguard Worker 3077*9880d681SAndroid Build Coastguard Workerdeclare { <2 x float>, <2 x float> } @llvm.aarch64.neon.ld2lane.v2f32.p0f32(<2 x float>, <2 x float>, i64, float*) nounwind readonly 3078*9880d681SAndroid Build Coastguard Worker 3079*9880d681SAndroid Build Coastguard Worker 3080*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double> } @test_v2f64_post_imm_ld2lane(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C) nounwind { 3081*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_ld2lane: 3082*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.d { v0, v1 }[0], [x0], #16 3083*9880d681SAndroid Build Coastguard Worker %ld2 = call { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld2lane.v2f64.p0f64(<2 x double> %B, <2 x double> %C, i64 0, double* %A) 3084*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 2 3085*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 3086*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double> } %ld2 3087*9880d681SAndroid Build Coastguard Worker} 3088*9880d681SAndroid Build Coastguard Worker 3089*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double> } @test_v2f64_post_reg_ld2lane(double* %A, double** %ptr, i64 %inc, <2 x double> %B, <2 x double> %C) nounwind { 3090*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_ld2lane: 3091*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.d { v0, v1 }[0], [x0], x{{[0-9]+}} 3092*9880d681SAndroid Build Coastguard Worker %ld2 = call { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld2lane.v2f64.p0f64(<2 x double> %B, <2 x double> %C, i64 0, double* %A) 3093*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 3094*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 3095*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double> } %ld2 3096*9880d681SAndroid Build Coastguard Worker} 3097*9880d681SAndroid Build Coastguard Worker 3098*9880d681SAndroid Build Coastguard Workerdeclare { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld2lane.v2f64.p0f64(<2 x double>, <2 x double>, i64, double*) nounwind readonly 3099*9880d681SAndroid Build Coastguard Worker 3100*9880d681SAndroid Build Coastguard Worker 3101*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double> } @test_v1f64_post_imm_ld2lane(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C) nounwind { 3102*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_ld2lane: 3103*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.d { v0, v1 }[0], [x0], #16 3104*9880d681SAndroid Build Coastguard Worker %ld2 = call { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld2lane.v1f64.p0f64(<1 x double> %B, <1 x double> %C, i64 0, double* %A) 3105*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 2 3106*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 3107*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double> } %ld2 3108*9880d681SAndroid Build Coastguard Worker} 3109*9880d681SAndroid Build Coastguard Worker 3110*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double> } @test_v1f64_post_reg_ld2lane(double* %A, double** %ptr, i64 %inc, <1 x double> %B, <1 x double> %C) nounwind { 3111*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_ld2lane: 3112*9880d681SAndroid Build Coastguard Worker;CHECK: ld2.d { v0, v1 }[0], [x0], x{{[0-9]+}} 3113*9880d681SAndroid Build Coastguard Worker %ld2 = call { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld2lane.v1f64.p0f64(<1 x double> %B, <1 x double> %C, i64 0, double* %A) 3114*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 3115*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 3116*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double> } %ld2 3117*9880d681SAndroid Build Coastguard Worker} 3118*9880d681SAndroid Build Coastguard Worker 3119*9880d681SAndroid Build Coastguard Workerdeclare { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld2lane.v1f64.p0f64(<1 x double>, <1 x double>, i64, double*) nounwind readonly 3120*9880d681SAndroid Build Coastguard Worker 3121*9880d681SAndroid Build Coastguard Worker 3122*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8>, <16 x i8> } @test_v16i8_post_imm_ld3lane(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, <16 x i8> %D) nounwind { 3123*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_ld3lane: 3124*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.b { v0, v1, v2 }[0], [x0], #3 3125*9880d681SAndroid Build Coastguard Worker %ld3 = call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3lane.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, <16 x i8> %D, i64 0, i8* %A) 3126*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 3 3127*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 3128*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8>, <16 x i8> } %ld3 3129*9880d681SAndroid Build Coastguard Worker} 3130*9880d681SAndroid Build Coastguard Worker 3131*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8>, <16 x i8> } @test_v16i8_post_reg_ld3lane(i8* %A, i8** %ptr, i64 %inc, <16 x i8> %B, <16 x i8> %C, <16 x i8> %D) nounwind { 3132*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_ld3lane: 3133*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.b { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 3134*9880d681SAndroid Build Coastguard Worker %ld3 = call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3lane.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, <16 x i8> %D, i64 0, i8* %A) 3135*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 3136*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 3137*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8>, <16 x i8> } %ld3 3138*9880d681SAndroid Build Coastguard Worker} 3139*9880d681SAndroid Build Coastguard Worker 3140*9880d681SAndroid Build Coastguard Workerdeclare { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3lane.v16i8.p0i8(<16 x i8>, <16 x i8>, <16 x i8>, i64, i8*) nounwind readonly 3141*9880d681SAndroid Build Coastguard Worker 3142*9880d681SAndroid Build Coastguard Worker 3143*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8>, <8 x i8> } @test_v8i8_post_imm_ld3lane(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C, <8 x i8> %D) nounwind { 3144*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_ld3lane: 3145*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.b { v0, v1, v2 }[0], [x0], #3 3146*9880d681SAndroid Build Coastguard Worker %ld3 = call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3lane.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, <8 x i8> %D, i64 0, i8* %A) 3147*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 3 3148*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 3149*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8>, <8 x i8> } %ld3 3150*9880d681SAndroid Build Coastguard Worker} 3151*9880d681SAndroid Build Coastguard Worker 3152*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8>, <8 x i8> } @test_v8i8_post_reg_ld3lane(i8* %A, i8** %ptr, i64 %inc, <8 x i8> %B, <8 x i8> %C, <8 x i8> %D) nounwind { 3153*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_ld3lane: 3154*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.b { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 3155*9880d681SAndroid Build Coastguard Worker %ld3 = call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3lane.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, <8 x i8> %D, i64 0, i8* %A) 3156*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 3157*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 3158*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8>, <8 x i8> } %ld3 3159*9880d681SAndroid Build Coastguard Worker} 3160*9880d681SAndroid Build Coastguard Worker 3161*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3lane.v8i8.p0i8(<8 x i8>, <8 x i8>, <8 x i8>, i64, i8*) nounwind readonly 3162*9880d681SAndroid Build Coastguard Worker 3163*9880d681SAndroid Build Coastguard Worker 3164*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16>, <8 x i16> } @test_v8i16_post_imm_ld3lane(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C, <8 x i16> %D) nounwind { 3165*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_ld3lane: 3166*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.h { v0, v1, v2 }[0], [x0], #6 3167*9880d681SAndroid Build Coastguard Worker %ld3 = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3lane.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, <8 x i16> %D, i64 0, i16* %A) 3168*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 3 3169*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 3170*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16>, <8 x i16> } %ld3 3171*9880d681SAndroid Build Coastguard Worker} 3172*9880d681SAndroid Build Coastguard Worker 3173*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16>, <8 x i16> } @test_v8i16_post_reg_ld3lane(i16* %A, i16** %ptr, i64 %inc, <8 x i16> %B, <8 x i16> %C, <8 x i16> %D) nounwind { 3174*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_ld3lane: 3175*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.h { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 3176*9880d681SAndroid Build Coastguard Worker %ld3 = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3lane.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, <8 x i16> %D, i64 0, i16* %A) 3177*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 3178*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 3179*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16>, <8 x i16> } %ld3 3180*9880d681SAndroid Build Coastguard Worker} 3181*9880d681SAndroid Build Coastguard Worker 3182*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3lane.v8i16.p0i16(<8 x i16>, <8 x i16>, <8 x i16>, i64, i16*) nounwind readonly 3183*9880d681SAndroid Build Coastguard Worker 3184*9880d681SAndroid Build Coastguard Worker 3185*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16>, <4 x i16> } @test_v4i16_post_imm_ld3lane(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C, <4 x i16> %D) nounwind { 3186*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_ld3lane: 3187*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.h { v0, v1, v2 }[0], [x0], #6 3188*9880d681SAndroid Build Coastguard Worker %ld3 = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3lane.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, <4 x i16> %D, i64 0, i16* %A) 3189*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 3 3190*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 3191*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16>, <4 x i16> } %ld3 3192*9880d681SAndroid Build Coastguard Worker} 3193*9880d681SAndroid Build Coastguard Worker 3194*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16>, <4 x i16> } @test_v4i16_post_reg_ld3lane(i16* %A, i16** %ptr, i64 %inc, <4 x i16> %B, <4 x i16> %C, <4 x i16> %D) nounwind { 3195*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_ld3lane: 3196*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.h { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 3197*9880d681SAndroid Build Coastguard Worker %ld3 = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3lane.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, <4 x i16> %D, i64 0, i16* %A) 3198*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 3199*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 3200*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16>, <4 x i16> } %ld3 3201*9880d681SAndroid Build Coastguard Worker} 3202*9880d681SAndroid Build Coastguard Worker 3203*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3lane.v4i16.p0i16(<4 x i16>, <4 x i16>, <4 x i16>, i64, i16*) nounwind readonly 3204*9880d681SAndroid Build Coastguard Worker 3205*9880d681SAndroid Build Coastguard Worker 3206*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32>, <4 x i32> } @test_v4i32_post_imm_ld3lane(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C, <4 x i32> %D) nounwind { 3207*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_ld3lane: 3208*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.s { v0, v1, v2 }[0], [x0], #12 3209*9880d681SAndroid Build Coastguard Worker %ld3 = call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3lane.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, <4 x i32> %D, i64 0, i32* %A) 3210*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 3 3211*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 3212*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32>, <4 x i32> } %ld3 3213*9880d681SAndroid Build Coastguard Worker} 3214*9880d681SAndroid Build Coastguard Worker 3215*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32>, <4 x i32> } @test_v4i32_post_reg_ld3lane(i32* %A, i32** %ptr, i64 %inc, <4 x i32> %B, <4 x i32> %C, <4 x i32> %D) nounwind { 3216*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_ld3lane: 3217*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.s { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 3218*9880d681SAndroid Build Coastguard Worker %ld3 = call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3lane.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, <4 x i32> %D, i64 0, i32* %A) 3219*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 3220*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 3221*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32>, <4 x i32> } %ld3 3222*9880d681SAndroid Build Coastguard Worker} 3223*9880d681SAndroid Build Coastguard Worker 3224*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3lane.v4i32.p0i32(<4 x i32>, <4 x i32>, <4 x i32>, i64, i32*) nounwind readonly 3225*9880d681SAndroid Build Coastguard Worker 3226*9880d681SAndroid Build Coastguard Worker 3227*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32>, <2 x i32> } @test_v2i32_post_imm_ld3lane(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C, <2 x i32> %D) nounwind { 3228*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_ld3lane: 3229*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.s { v0, v1, v2 }[0], [x0], #12 3230*9880d681SAndroid Build Coastguard Worker %ld3 = call { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld3lane.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, <2 x i32> %D, i64 0, i32* %A) 3231*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 3 3232*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 3233*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32>, <2 x i32> } %ld3 3234*9880d681SAndroid Build Coastguard Worker} 3235*9880d681SAndroid Build Coastguard Worker 3236*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32>, <2 x i32> } @test_v2i32_post_reg_ld3lane(i32* %A, i32** %ptr, i64 %inc, <2 x i32> %B, <2 x i32> %C, <2 x i32> %D) nounwind { 3237*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_ld3lane: 3238*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.s { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 3239*9880d681SAndroid Build Coastguard Worker %ld3 = call { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld3lane.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, <2 x i32> %D, i64 0, i32* %A) 3240*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 3241*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 3242*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32>, <2 x i32> } %ld3 3243*9880d681SAndroid Build Coastguard Worker} 3244*9880d681SAndroid Build Coastguard Worker 3245*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld3lane.v2i32.p0i32(<2 x i32>, <2 x i32>, <2 x i32>, i64, i32*) nounwind readonly 3246*9880d681SAndroid Build Coastguard Worker 3247*9880d681SAndroid Build Coastguard Worker 3248*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64>, <2 x i64> } @test_v2i64_post_imm_ld3lane(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C, <2 x i64> %D) nounwind { 3249*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_ld3lane: 3250*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.d { v0, v1, v2 }[0], [x0], #24 3251*9880d681SAndroid Build Coastguard Worker %ld3 = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3lane.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, <2 x i64> %D, i64 0, i64* %A) 3252*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 3 3253*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 3254*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64>, <2 x i64> } %ld3 3255*9880d681SAndroid Build Coastguard Worker} 3256*9880d681SAndroid Build Coastguard Worker 3257*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64>, <2 x i64> } @test_v2i64_post_reg_ld3lane(i64* %A, i64** %ptr, i64 %inc, <2 x i64> %B, <2 x i64> %C, <2 x i64> %D) nounwind { 3258*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_ld3lane: 3259*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.d { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 3260*9880d681SAndroid Build Coastguard Worker %ld3 = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3lane.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, <2 x i64> %D, i64 0, i64* %A) 3261*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 3262*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 3263*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64>, <2 x i64> } %ld3 3264*9880d681SAndroid Build Coastguard Worker} 3265*9880d681SAndroid Build Coastguard Worker 3266*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3lane.v2i64.p0i64(<2 x i64>, <2 x i64>, <2 x i64>, i64, i64*) nounwind readonly 3267*9880d681SAndroid Build Coastguard Worker 3268*9880d681SAndroid Build Coastguard Worker 3269*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64>, <1 x i64> } @test_v1i64_post_imm_ld3lane(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C, <1 x i64> %D) nounwind { 3270*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_ld3lane: 3271*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.d { v0, v1, v2 }[0], [x0], #24 3272*9880d681SAndroid Build Coastguard Worker %ld3 = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3lane.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, <1 x i64> %D, i64 0, i64* %A) 3273*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 3 3274*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 3275*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64>, <1 x i64> } %ld3 3276*9880d681SAndroid Build Coastguard Worker} 3277*9880d681SAndroid Build Coastguard Worker 3278*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64>, <1 x i64> } @test_v1i64_post_reg_ld3lane(i64* %A, i64** %ptr, i64 %inc, <1 x i64> %B, <1 x i64> %C, <1 x i64> %D) nounwind { 3279*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_ld3lane: 3280*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.d { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 3281*9880d681SAndroid Build Coastguard Worker %ld3 = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3lane.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, <1 x i64> %D, i64 0, i64* %A) 3282*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 3283*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 3284*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64>, <1 x i64> } %ld3 3285*9880d681SAndroid Build Coastguard Worker} 3286*9880d681SAndroid Build Coastguard Worker 3287*9880d681SAndroid Build Coastguard Workerdeclare { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3lane.v1i64.p0i64(<1 x i64>, <1 x i64>, <1 x i64>, i64, i64*) nounwind readonly 3288*9880d681SAndroid Build Coastguard Worker 3289*9880d681SAndroid Build Coastguard Worker 3290*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float>, <4 x float> } @test_v4f32_post_imm_ld3lane(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C, <4 x float> %D) nounwind { 3291*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_ld3lane: 3292*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.s { v0, v1, v2 }[0], [x0], #12 3293*9880d681SAndroid Build Coastguard Worker %ld3 = call { <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld3lane.v4f32.p0f32(<4 x float> %B, <4 x float> %C, <4 x float> %D, i64 0, float* %A) 3294*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 3 3295*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 3296*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float>, <4 x float> } %ld3 3297*9880d681SAndroid Build Coastguard Worker} 3298*9880d681SAndroid Build Coastguard Worker 3299*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float>, <4 x float> } @test_v4f32_post_reg_ld3lane(float* %A, float** %ptr, i64 %inc, <4 x float> %B, <4 x float> %C, <4 x float> %D) nounwind { 3300*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_ld3lane: 3301*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.s { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 3302*9880d681SAndroid Build Coastguard Worker %ld3 = call { <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld3lane.v4f32.p0f32(<4 x float> %B, <4 x float> %C, <4 x float> %D, i64 0, float* %A) 3303*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 3304*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 3305*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float>, <4 x float> } %ld3 3306*9880d681SAndroid Build Coastguard Worker} 3307*9880d681SAndroid Build Coastguard Worker 3308*9880d681SAndroid Build Coastguard Workerdeclare { <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld3lane.v4f32.p0f32(<4 x float>, <4 x float>, <4 x float>, i64, float*) nounwind readonly 3309*9880d681SAndroid Build Coastguard Worker 3310*9880d681SAndroid Build Coastguard Worker 3311*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float>, <2 x float> } @test_v2f32_post_imm_ld3lane(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C, <2 x float> %D) nounwind { 3312*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_ld3lane: 3313*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.s { v0, v1, v2 }[0], [x0], #12 3314*9880d681SAndroid Build Coastguard Worker %ld3 = call { <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld3lane.v2f32.p0f32(<2 x float> %B, <2 x float> %C, <2 x float> %D, i64 0, float* %A) 3315*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 3 3316*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 3317*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float>, <2 x float> } %ld3 3318*9880d681SAndroid Build Coastguard Worker} 3319*9880d681SAndroid Build Coastguard Worker 3320*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float>, <2 x float> } @test_v2f32_post_reg_ld3lane(float* %A, float** %ptr, i64 %inc, <2 x float> %B, <2 x float> %C, <2 x float> %D) nounwind { 3321*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_ld3lane: 3322*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.s { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 3323*9880d681SAndroid Build Coastguard Worker %ld3 = call { <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld3lane.v2f32.p0f32(<2 x float> %B, <2 x float> %C, <2 x float> %D, i64 0, float* %A) 3324*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 3325*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 3326*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float>, <2 x float> } %ld3 3327*9880d681SAndroid Build Coastguard Worker} 3328*9880d681SAndroid Build Coastguard Worker 3329*9880d681SAndroid Build Coastguard Workerdeclare { <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld3lane.v2f32.p0f32(<2 x float>, <2 x float>, <2 x float>, i64, float*) nounwind readonly 3330*9880d681SAndroid Build Coastguard Worker 3331*9880d681SAndroid Build Coastguard Worker 3332*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double>, <2 x double> } @test_v2f64_post_imm_ld3lane(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C, <2 x double> %D) nounwind { 3333*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_ld3lane: 3334*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.d { v0, v1, v2 }[0], [x0], #24 3335*9880d681SAndroid Build Coastguard Worker %ld3 = call { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld3lane.v2f64.p0f64(<2 x double> %B, <2 x double> %C, <2 x double> %D, i64 0, double* %A) 3336*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 3 3337*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 3338*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double>, <2 x double> } %ld3 3339*9880d681SAndroid Build Coastguard Worker} 3340*9880d681SAndroid Build Coastguard Worker 3341*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double>, <2 x double> } @test_v2f64_post_reg_ld3lane(double* %A, double** %ptr, i64 %inc, <2 x double> %B, <2 x double> %C, <2 x double> %D) nounwind { 3342*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_ld3lane: 3343*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.d { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 3344*9880d681SAndroid Build Coastguard Worker %ld3 = call { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld3lane.v2f64.p0f64(<2 x double> %B, <2 x double> %C, <2 x double> %D, i64 0, double* %A) 3345*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 3346*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 3347*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double>, <2 x double> } %ld3 3348*9880d681SAndroid Build Coastguard Worker} 3349*9880d681SAndroid Build Coastguard Worker 3350*9880d681SAndroid Build Coastguard Workerdeclare { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld3lane.v2f64.p0f64(<2 x double>, <2 x double>, <2 x double>, i64, double*) nounwind readonly 3351*9880d681SAndroid Build Coastguard Worker 3352*9880d681SAndroid Build Coastguard Worker 3353*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double>, <1 x double> } @test_v1f64_post_imm_ld3lane(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C, <1 x double> %D) nounwind { 3354*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_ld3lane: 3355*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.d { v0, v1, v2 }[0], [x0], #24 3356*9880d681SAndroid Build Coastguard Worker %ld3 = call { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld3lane.v1f64.p0f64(<1 x double> %B, <1 x double> %C, <1 x double> %D, i64 0, double* %A) 3357*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 3 3358*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 3359*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double>, <1 x double> } %ld3 3360*9880d681SAndroid Build Coastguard Worker} 3361*9880d681SAndroid Build Coastguard Worker 3362*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double>, <1 x double> } @test_v1f64_post_reg_ld3lane(double* %A, double** %ptr, i64 %inc, <1 x double> %B, <1 x double> %C, <1 x double> %D) nounwind { 3363*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_ld3lane: 3364*9880d681SAndroid Build Coastguard Worker;CHECK: ld3.d { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 3365*9880d681SAndroid Build Coastguard Worker %ld3 = call { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld3lane.v1f64.p0f64(<1 x double> %B, <1 x double> %C, <1 x double> %D, i64 0, double* %A) 3366*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 3367*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 3368*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double>, <1 x double> } %ld3 3369*9880d681SAndroid Build Coastguard Worker} 3370*9880d681SAndroid Build Coastguard Worker 3371*9880d681SAndroid Build Coastguard Workerdeclare { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld3lane.v1f64.p0f64(<1 x double>, <1 x double>, <1 x double>, i64, double*) nounwind readonly 3372*9880d681SAndroid Build Coastguard Worker 3373*9880d681SAndroid Build Coastguard Worker 3374*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @test_v16i8_post_imm_ld4lane(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, <16 x i8> %D, <16 x i8> %E) nounwind { 3375*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_ld4lane: 3376*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.b { v0, v1, v2, v3 }[0], [x0], #4 3377*9880d681SAndroid Build Coastguard Worker %ld4 = call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4lane.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, <16 x i8> %D, <16 x i8> %E, i64 0, i8* %A) 3378*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 4 3379*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 3380*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } %ld4 3381*9880d681SAndroid Build Coastguard Worker} 3382*9880d681SAndroid Build Coastguard Worker 3383*9880d681SAndroid Build Coastguard Workerdefine { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @test_v16i8_post_reg_ld4lane(i8* %A, i8** %ptr, i64 %inc, <16 x i8> %B, <16 x i8> %C, <16 x i8> %D, <16 x i8> %E) nounwind { 3384*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_ld4lane: 3385*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.b { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 3386*9880d681SAndroid Build Coastguard Worker %ld4 = call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4lane.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, <16 x i8> %D, <16 x i8> %E, i64 0, i8* %A) 3387*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 3388*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 3389*9880d681SAndroid Build Coastguard Worker ret { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } %ld4 3390*9880d681SAndroid Build Coastguard Worker} 3391*9880d681SAndroid Build Coastguard Worker 3392*9880d681SAndroid Build Coastguard Workerdeclare { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4lane.v16i8.p0i8(<16 x i8>, <16 x i8>, <16 x i8>, <16 x i8>, i64, i8*) nounwind readonly 3393*9880d681SAndroid Build Coastguard Worker 3394*9880d681SAndroid Build Coastguard Worker 3395*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @test_v8i8_post_imm_ld4lane(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C, <8 x i8> %D, <8 x i8> %E) nounwind { 3396*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_ld4lane: 3397*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.b { v0, v1, v2, v3 }[0], [x0], #4 3398*9880d681SAndroid Build Coastguard Worker %ld4 = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4lane.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, <8 x i8> %D, <8 x i8> %E, i64 0, i8* %A) 3399*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 4 3400*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 3401*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } %ld4 3402*9880d681SAndroid Build Coastguard Worker} 3403*9880d681SAndroid Build Coastguard Worker 3404*9880d681SAndroid Build Coastguard Workerdefine { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @test_v8i8_post_reg_ld4lane(i8* %A, i8** %ptr, i64 %inc, <8 x i8> %B, <8 x i8> %C, <8 x i8> %D, <8 x i8> %E) nounwind { 3405*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_ld4lane: 3406*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.b { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 3407*9880d681SAndroid Build Coastguard Worker %ld4 = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4lane.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, <8 x i8> %D, <8 x i8> %E, i64 0, i8* %A) 3408*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 3409*9880d681SAndroid Build Coastguard Worker store i8* %tmp, i8** %ptr 3410*9880d681SAndroid Build Coastguard Worker ret { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } %ld4 3411*9880d681SAndroid Build Coastguard Worker} 3412*9880d681SAndroid Build Coastguard Worker 3413*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4lane.v8i8.p0i8(<8 x i8>, <8 x i8>, <8 x i8>, <8 x i8>, i64, i8*) nounwind readonly 3414*9880d681SAndroid Build Coastguard Worker 3415*9880d681SAndroid Build Coastguard Worker 3416*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @test_v8i16_post_imm_ld4lane(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C, <8 x i16> %D, <8 x i16> %E) nounwind { 3417*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_ld4lane: 3418*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.h { v0, v1, v2, v3 }[0], [x0], #8 3419*9880d681SAndroid Build Coastguard Worker %ld4 = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4lane.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, <8 x i16> %D, <8 x i16> %E, i64 0, i16* %A) 3420*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 4 3421*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 3422*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } %ld4 3423*9880d681SAndroid Build Coastguard Worker} 3424*9880d681SAndroid Build Coastguard Worker 3425*9880d681SAndroid Build Coastguard Workerdefine { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @test_v8i16_post_reg_ld4lane(i16* %A, i16** %ptr, i64 %inc, <8 x i16> %B, <8 x i16> %C, <8 x i16> %D, <8 x i16> %E) nounwind { 3426*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_ld4lane: 3427*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.h { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 3428*9880d681SAndroid Build Coastguard Worker %ld4 = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4lane.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, <8 x i16> %D, <8 x i16> %E, i64 0, i16* %A) 3429*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 3430*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 3431*9880d681SAndroid Build Coastguard Worker ret { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } %ld4 3432*9880d681SAndroid Build Coastguard Worker} 3433*9880d681SAndroid Build Coastguard Worker 3434*9880d681SAndroid Build Coastguard Workerdeclare { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4lane.v8i16.p0i16(<8 x i16>, <8 x i16>, <8 x i16>, <8 x i16>, i64, i16*) nounwind readonly 3435*9880d681SAndroid Build Coastguard Worker 3436*9880d681SAndroid Build Coastguard Worker 3437*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @test_v4i16_post_imm_ld4lane(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C, <4 x i16> %D, <4 x i16> %E) nounwind { 3438*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_ld4lane: 3439*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.h { v0, v1, v2, v3 }[0], [x0], #8 3440*9880d681SAndroid Build Coastguard Worker %ld4 = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4lane.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, <4 x i16> %D, <4 x i16> %E, i64 0, i16* %A) 3441*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 4 3442*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 3443*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } %ld4 3444*9880d681SAndroid Build Coastguard Worker} 3445*9880d681SAndroid Build Coastguard Worker 3446*9880d681SAndroid Build Coastguard Workerdefine { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @test_v4i16_post_reg_ld4lane(i16* %A, i16** %ptr, i64 %inc, <4 x i16> %B, <4 x i16> %C, <4 x i16> %D, <4 x i16> %E) nounwind { 3447*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_ld4lane: 3448*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.h { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 3449*9880d681SAndroid Build Coastguard Worker %ld4 = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4lane.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, <4 x i16> %D, <4 x i16> %E, i64 0, i16* %A) 3450*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 3451*9880d681SAndroid Build Coastguard Worker store i16* %tmp, i16** %ptr 3452*9880d681SAndroid Build Coastguard Worker ret { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } %ld4 3453*9880d681SAndroid Build Coastguard Worker} 3454*9880d681SAndroid Build Coastguard Worker 3455*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4lane.v4i16.p0i16(<4 x i16>, <4 x i16>, <4 x i16>, <4 x i16>, i64, i16*) nounwind readonly 3456*9880d681SAndroid Build Coastguard Worker 3457*9880d681SAndroid Build Coastguard Worker 3458*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @test_v4i32_post_imm_ld4lane(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C, <4 x i32> %D, <4 x i32> %E) nounwind { 3459*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_ld4lane: 3460*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.s { v0, v1, v2, v3 }[0], [x0], #16 3461*9880d681SAndroid Build Coastguard Worker %ld4 = call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld4lane.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, <4 x i32> %D, <4 x i32> %E, i64 0, i32* %A) 3462*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 4 3463*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 3464*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } %ld4 3465*9880d681SAndroid Build Coastguard Worker} 3466*9880d681SAndroid Build Coastguard Worker 3467*9880d681SAndroid Build Coastguard Workerdefine { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @test_v4i32_post_reg_ld4lane(i32* %A, i32** %ptr, i64 %inc, <4 x i32> %B, <4 x i32> %C, <4 x i32> %D, <4 x i32> %E) nounwind { 3468*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_ld4lane: 3469*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.s { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 3470*9880d681SAndroid Build Coastguard Worker %ld4 = call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld4lane.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, <4 x i32> %D, <4 x i32> %E, i64 0, i32* %A) 3471*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 3472*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 3473*9880d681SAndroid Build Coastguard Worker ret { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } %ld4 3474*9880d681SAndroid Build Coastguard Worker} 3475*9880d681SAndroid Build Coastguard Worker 3476*9880d681SAndroid Build Coastguard Workerdeclare { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld4lane.v4i32.p0i32(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i64, i32*) nounwind readonly 3477*9880d681SAndroid Build Coastguard Worker 3478*9880d681SAndroid Build Coastguard Worker 3479*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @test_v2i32_post_imm_ld4lane(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C, <2 x i32> %D, <2 x i32> %E) nounwind { 3480*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_ld4lane: 3481*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.s { v0, v1, v2, v3 }[0], [x0], #16 3482*9880d681SAndroid Build Coastguard Worker %ld4 = call { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld4lane.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, <2 x i32> %D, <2 x i32> %E, i64 0, i32* %A) 3483*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 4 3484*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 3485*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } %ld4 3486*9880d681SAndroid Build Coastguard Worker} 3487*9880d681SAndroid Build Coastguard Worker 3488*9880d681SAndroid Build Coastguard Workerdefine { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @test_v2i32_post_reg_ld4lane(i32* %A, i32** %ptr, i64 %inc, <2 x i32> %B, <2 x i32> %C, <2 x i32> %D, <2 x i32> %E) nounwind { 3489*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_ld4lane: 3490*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.s { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 3491*9880d681SAndroid Build Coastguard Worker %ld4 = call { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld4lane.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, <2 x i32> %D, <2 x i32> %E, i64 0, i32* %A) 3492*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 3493*9880d681SAndroid Build Coastguard Worker store i32* %tmp, i32** %ptr 3494*9880d681SAndroid Build Coastguard Worker ret { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } %ld4 3495*9880d681SAndroid Build Coastguard Worker} 3496*9880d681SAndroid Build Coastguard Worker 3497*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld4lane.v2i32.p0i32(<2 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, i64, i32*) nounwind readonly 3498*9880d681SAndroid Build Coastguard Worker 3499*9880d681SAndroid Build Coastguard Worker 3500*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @test_v2i64_post_imm_ld4lane(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C, <2 x i64> %D, <2 x i64> %E) nounwind { 3501*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_ld4lane: 3502*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.d { v0, v1, v2, v3 }[0], [x0], #32 3503*9880d681SAndroid Build Coastguard Worker %ld4 = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4lane.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, <2 x i64> %D, <2 x i64> %E, i64 0, i64* %A) 3504*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 4 3505*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 3506*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } %ld4 3507*9880d681SAndroid Build Coastguard Worker} 3508*9880d681SAndroid Build Coastguard Worker 3509*9880d681SAndroid Build Coastguard Workerdefine { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @test_v2i64_post_reg_ld4lane(i64* %A, i64** %ptr, i64 %inc, <2 x i64> %B, <2 x i64> %C, <2 x i64> %D, <2 x i64> %E) nounwind { 3510*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_ld4lane: 3511*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.d { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 3512*9880d681SAndroid Build Coastguard Worker %ld4 = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4lane.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, <2 x i64> %D, <2 x i64> %E, i64 0, i64* %A) 3513*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 3514*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 3515*9880d681SAndroid Build Coastguard Worker ret { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } %ld4 3516*9880d681SAndroid Build Coastguard Worker} 3517*9880d681SAndroid Build Coastguard Worker 3518*9880d681SAndroid Build Coastguard Workerdeclare { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4lane.v2i64.p0i64(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64, i64*) nounwind readonly 3519*9880d681SAndroid Build Coastguard Worker 3520*9880d681SAndroid Build Coastguard Worker 3521*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @test_v1i64_post_imm_ld4lane(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C, <1 x i64> %D, <1 x i64> %E) nounwind { 3522*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_ld4lane: 3523*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.d { v0, v1, v2, v3 }[0], [x0], #32 3524*9880d681SAndroid Build Coastguard Worker %ld4 = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4lane.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, <1 x i64> %D, <1 x i64> %E, i64 0, i64* %A) 3525*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i32 4 3526*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 3527*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } %ld4 3528*9880d681SAndroid Build Coastguard Worker} 3529*9880d681SAndroid Build Coastguard Worker 3530*9880d681SAndroid Build Coastguard Workerdefine { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @test_v1i64_post_reg_ld4lane(i64* %A, i64** %ptr, i64 %inc, <1 x i64> %B, <1 x i64> %C, <1 x i64> %D, <1 x i64> %E) nounwind { 3531*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_ld4lane: 3532*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.d { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 3533*9880d681SAndroid Build Coastguard Worker %ld4 = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4lane.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, <1 x i64> %D, <1 x i64> %E, i64 0, i64* %A) 3534*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 3535*9880d681SAndroid Build Coastguard Worker store i64* %tmp, i64** %ptr 3536*9880d681SAndroid Build Coastguard Worker ret { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } %ld4 3537*9880d681SAndroid Build Coastguard Worker} 3538*9880d681SAndroid Build Coastguard Worker 3539*9880d681SAndroid Build Coastguard Workerdeclare { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4lane.v1i64.p0i64(<1 x i64>, <1 x i64>, <1 x i64>, <1 x i64>, i64, i64*) nounwind readonly 3540*9880d681SAndroid Build Coastguard Worker 3541*9880d681SAndroid Build Coastguard Worker 3542*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @test_v4f32_post_imm_ld4lane(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C, <4 x float> %D, <4 x float> %E) nounwind { 3543*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_ld4lane: 3544*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.s { v0, v1, v2, v3 }[0], [x0], #16 3545*9880d681SAndroid Build Coastguard Worker %ld4 = call { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld4lane.v4f32.p0f32(<4 x float> %B, <4 x float> %C, <4 x float> %D, <4 x float> %E, i64 0, float* %A) 3546*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 4 3547*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 3548*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float>, <4 x float>, <4 x float> } %ld4 3549*9880d681SAndroid Build Coastguard Worker} 3550*9880d681SAndroid Build Coastguard Worker 3551*9880d681SAndroid Build Coastguard Workerdefine { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @test_v4f32_post_reg_ld4lane(float* %A, float** %ptr, i64 %inc, <4 x float> %B, <4 x float> %C, <4 x float> %D, <4 x float> %E) nounwind { 3552*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_ld4lane: 3553*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.s { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 3554*9880d681SAndroid Build Coastguard Worker %ld4 = call { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld4lane.v4f32.p0f32(<4 x float> %B, <4 x float> %C, <4 x float> %D, <4 x float> %E, i64 0, float* %A) 3555*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 3556*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 3557*9880d681SAndroid Build Coastguard Worker ret { <4 x float>, <4 x float>, <4 x float>, <4 x float> } %ld4 3558*9880d681SAndroid Build Coastguard Worker} 3559*9880d681SAndroid Build Coastguard Worker 3560*9880d681SAndroid Build Coastguard Workerdeclare { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld4lane.v4f32.p0f32(<4 x float>, <4 x float>, <4 x float>, <4 x float>, i64, float*) nounwind readonly 3561*9880d681SAndroid Build Coastguard Worker 3562*9880d681SAndroid Build Coastguard Worker 3563*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @test_v2f32_post_imm_ld4lane(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C, <2 x float> %D, <2 x float> %E) nounwind { 3564*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_ld4lane: 3565*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.s { v0, v1, v2, v3 }[0], [x0], #16 3566*9880d681SAndroid Build Coastguard Worker %ld4 = call { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld4lane.v2f32.p0f32(<2 x float> %B, <2 x float> %C, <2 x float> %D, <2 x float> %E, i64 0, float* %A) 3567*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 4 3568*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 3569*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float>, <2 x float>, <2 x float> } %ld4 3570*9880d681SAndroid Build Coastguard Worker} 3571*9880d681SAndroid Build Coastguard Worker 3572*9880d681SAndroid Build Coastguard Workerdefine { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @test_v2f32_post_reg_ld4lane(float* %A, float** %ptr, i64 %inc, <2 x float> %B, <2 x float> %C, <2 x float> %D, <2 x float> %E) nounwind { 3573*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_ld4lane: 3574*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.s { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 3575*9880d681SAndroid Build Coastguard Worker %ld4 = call { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld4lane.v2f32.p0f32(<2 x float> %B, <2 x float> %C, <2 x float> %D, <2 x float> %E, i64 0, float* %A) 3576*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 3577*9880d681SAndroid Build Coastguard Worker store float* %tmp, float** %ptr 3578*9880d681SAndroid Build Coastguard Worker ret { <2 x float>, <2 x float>, <2 x float>, <2 x float> } %ld4 3579*9880d681SAndroid Build Coastguard Worker} 3580*9880d681SAndroid Build Coastguard Worker 3581*9880d681SAndroid Build Coastguard Workerdeclare { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld4lane.v2f32.p0f32(<2 x float>, <2 x float>, <2 x float>, <2 x float>, i64, float*) nounwind readonly 3582*9880d681SAndroid Build Coastguard Worker 3583*9880d681SAndroid Build Coastguard Worker 3584*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @test_v2f64_post_imm_ld4lane(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C, <2 x double> %D, <2 x double> %E) nounwind { 3585*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_ld4lane: 3586*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.d { v0, v1, v2, v3 }[0], [x0], #32 3587*9880d681SAndroid Build Coastguard Worker %ld4 = call { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld4lane.v2f64.p0f64(<2 x double> %B, <2 x double> %C, <2 x double> %D, <2 x double> %E, i64 0, double* %A) 3588*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 4 3589*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 3590*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double>, <2 x double>, <2 x double> } %ld4 3591*9880d681SAndroid Build Coastguard Worker} 3592*9880d681SAndroid Build Coastguard Worker 3593*9880d681SAndroid Build Coastguard Workerdefine { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @test_v2f64_post_reg_ld4lane(double* %A, double** %ptr, i64 %inc, <2 x double> %B, <2 x double> %C, <2 x double> %D, <2 x double> %E) nounwind { 3594*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_ld4lane: 3595*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.d { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 3596*9880d681SAndroid Build Coastguard Worker %ld4 = call { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld4lane.v2f64.p0f64(<2 x double> %B, <2 x double> %C, <2 x double> %D, <2 x double> %E, i64 0, double* %A) 3597*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 3598*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 3599*9880d681SAndroid Build Coastguard Worker ret { <2 x double>, <2 x double>, <2 x double>, <2 x double> } %ld4 3600*9880d681SAndroid Build Coastguard Worker} 3601*9880d681SAndroid Build Coastguard Worker 3602*9880d681SAndroid Build Coastguard Workerdeclare { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld4lane.v2f64.p0f64(<2 x double>, <2 x double>, <2 x double>, <2 x double>, i64, double*) nounwind readonly 3603*9880d681SAndroid Build Coastguard Worker 3604*9880d681SAndroid Build Coastguard Worker 3605*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @test_v1f64_post_imm_ld4lane(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C, <1 x double> %D, <1 x double> %E) nounwind { 3606*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_ld4lane: 3607*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.d { v0, v1, v2, v3 }[0], [x0], #32 3608*9880d681SAndroid Build Coastguard Worker %ld4 = call { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld4lane.v1f64.p0f64(<1 x double> %B, <1 x double> %C, <1 x double> %D, <1 x double> %E, i64 0, double* %A) 3609*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i32 4 3610*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 3611*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double>, <1 x double>, <1 x double> } %ld4 3612*9880d681SAndroid Build Coastguard Worker} 3613*9880d681SAndroid Build Coastguard Worker 3614*9880d681SAndroid Build Coastguard Workerdefine { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @test_v1f64_post_reg_ld4lane(double* %A, double** %ptr, i64 %inc, <1 x double> %B, <1 x double> %C, <1 x double> %D, <1 x double> %E) nounwind { 3615*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_ld4lane: 3616*9880d681SAndroid Build Coastguard Worker;CHECK: ld4.d { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 3617*9880d681SAndroid Build Coastguard Worker %ld4 = call { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld4lane.v1f64.p0f64(<1 x double> %B, <1 x double> %C, <1 x double> %D, <1 x double> %E, i64 0, double* %A) 3618*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 3619*9880d681SAndroid Build Coastguard Worker store double* %tmp, double** %ptr 3620*9880d681SAndroid Build Coastguard Worker ret { <1 x double>, <1 x double>, <1 x double>, <1 x double> } %ld4 3621*9880d681SAndroid Build Coastguard Worker} 3622*9880d681SAndroid Build Coastguard Worker 3623*9880d681SAndroid Build Coastguard Workerdeclare { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld4lane.v1f64.p0f64(<1 x double>, <1 x double>, <1 x double>, <1 x double>, i64, double*) nounwind readonly 3624*9880d681SAndroid Build Coastguard Worker 3625*9880d681SAndroid Build Coastguard Worker 3626*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_imm_st2(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C) nounwind { 3627*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_st2: 3628*9880d681SAndroid Build Coastguard Worker;CHECK: st2.16b { v0, v1 }, [x0], #32 3629*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, i8* %A) 3630*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 32 3631*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 3632*9880d681SAndroid Build Coastguard Worker} 3633*9880d681SAndroid Build Coastguard Worker 3634*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_reg_st2(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, i64 %inc) nounwind { 3635*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_st2: 3636*9880d681SAndroid Build Coastguard Worker;CHECK: st2.16b { v0, v1 }, [x0], x{{[0-9]+}} 3637*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, i8* %A) 3638*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 3639*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 3640*9880d681SAndroid Build Coastguard Worker} 3641*9880d681SAndroid Build Coastguard Worker 3642*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2.v16i8.p0i8(<16 x i8>, <16 x i8>, i8*) 3643*9880d681SAndroid Build Coastguard Worker 3644*9880d681SAndroid Build Coastguard Worker 3645*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_imm_st2(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C) nounwind { 3646*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_st2: 3647*9880d681SAndroid Build Coastguard Worker;CHECK: st2.8b { v0, v1 }, [x0], #16 3648*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, i8* %A) 3649*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 16 3650*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 3651*9880d681SAndroid Build Coastguard Worker} 3652*9880d681SAndroid Build Coastguard Worker 3653*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_reg_st2(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C, i64 %inc) nounwind { 3654*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_st2: 3655*9880d681SAndroid Build Coastguard Worker;CHECK: st2.8b { v0, v1 }, [x0], x{{[0-9]+}} 3656*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, i8* %A) 3657*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 3658*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 3659*9880d681SAndroid Build Coastguard Worker} 3660*9880d681SAndroid Build Coastguard Worker 3661*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2.v8i8.p0i8(<8 x i8>, <8 x i8>, i8*) 3662*9880d681SAndroid Build Coastguard Worker 3663*9880d681SAndroid Build Coastguard Worker 3664*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_imm_st2(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C) nounwind { 3665*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_st2: 3666*9880d681SAndroid Build Coastguard Worker;CHECK: st2.8h { v0, v1 }, [x0], #32 3667*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, i16* %A) 3668*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 16 3669*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 3670*9880d681SAndroid Build Coastguard Worker} 3671*9880d681SAndroid Build Coastguard Worker 3672*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_reg_st2(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C, i64 %inc) nounwind { 3673*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_st2: 3674*9880d681SAndroid Build Coastguard Worker;CHECK: st2.8h { v0, v1 }, [x0], x{{[0-9]+}} 3675*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, i16* %A) 3676*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 3677*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 3678*9880d681SAndroid Build Coastguard Worker} 3679*9880d681SAndroid Build Coastguard Worker 3680*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2.v8i16.p0i16(<8 x i16>, <8 x i16>, i16*) 3681*9880d681SAndroid Build Coastguard Worker 3682*9880d681SAndroid Build Coastguard Worker 3683*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_imm_st2(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C) nounwind { 3684*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_st2: 3685*9880d681SAndroid Build Coastguard Worker;CHECK: st2.4h { v0, v1 }, [x0], #16 3686*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, i16* %A) 3687*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 8 3688*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 3689*9880d681SAndroid Build Coastguard Worker} 3690*9880d681SAndroid Build Coastguard Worker 3691*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_reg_st2(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C, i64 %inc) nounwind { 3692*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_st2: 3693*9880d681SAndroid Build Coastguard Worker;CHECK: st2.4h { v0, v1 }, [x0], x{{[0-9]+}} 3694*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, i16* %A) 3695*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 3696*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 3697*9880d681SAndroid Build Coastguard Worker} 3698*9880d681SAndroid Build Coastguard Worker 3699*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2.v4i16.p0i16(<4 x i16>, <4 x i16>, i16*) 3700*9880d681SAndroid Build Coastguard Worker 3701*9880d681SAndroid Build Coastguard Worker 3702*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_imm_st2(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C) nounwind { 3703*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_st2: 3704*9880d681SAndroid Build Coastguard Worker;CHECK: st2.4s { v0, v1 }, [x0], #32 3705*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, i32* %A) 3706*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 8 3707*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 3708*9880d681SAndroid Build Coastguard Worker} 3709*9880d681SAndroid Build Coastguard Worker 3710*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_reg_st2(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C, i64 %inc) nounwind { 3711*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_st2: 3712*9880d681SAndroid Build Coastguard Worker;CHECK: st2.4s { v0, v1 }, [x0], x{{[0-9]+}} 3713*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, i32* %A) 3714*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 3715*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 3716*9880d681SAndroid Build Coastguard Worker} 3717*9880d681SAndroid Build Coastguard Worker 3718*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2.v4i32.p0i32(<4 x i32>, <4 x i32>, i32*) 3719*9880d681SAndroid Build Coastguard Worker 3720*9880d681SAndroid Build Coastguard Worker 3721*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_imm_st2(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C) nounwind { 3722*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_st2: 3723*9880d681SAndroid Build Coastguard Worker;CHECK: st2.2s { v0, v1 }, [x0], #16 3724*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, i32* %A) 3725*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 4 3726*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 3727*9880d681SAndroid Build Coastguard Worker} 3728*9880d681SAndroid Build Coastguard Worker 3729*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_reg_st2(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C, i64 %inc) nounwind { 3730*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_st2: 3731*9880d681SAndroid Build Coastguard Worker;CHECK: st2.2s { v0, v1 }, [x0], x{{[0-9]+}} 3732*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, i32* %A) 3733*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 3734*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 3735*9880d681SAndroid Build Coastguard Worker} 3736*9880d681SAndroid Build Coastguard Worker 3737*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2.v2i32.p0i32(<2 x i32>, <2 x i32>, i32*) 3738*9880d681SAndroid Build Coastguard Worker 3739*9880d681SAndroid Build Coastguard Worker 3740*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_imm_st2(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C) nounwind { 3741*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_st2: 3742*9880d681SAndroid Build Coastguard Worker;CHECK: st2.2d { v0, v1 }, [x0], #32 3743*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, i64* %A) 3744*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 4 3745*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 3746*9880d681SAndroid Build Coastguard Worker} 3747*9880d681SAndroid Build Coastguard Worker 3748*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_reg_st2(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C, i64 %inc) nounwind { 3749*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_st2: 3750*9880d681SAndroid Build Coastguard Worker;CHECK: st2.2d { v0, v1 }, [x0], x{{[0-9]+}} 3751*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, i64* %A) 3752*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 3753*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 3754*9880d681SAndroid Build Coastguard Worker} 3755*9880d681SAndroid Build Coastguard Worker 3756*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2.v2i64.p0i64(<2 x i64>, <2 x i64>, i64*) 3757*9880d681SAndroid Build Coastguard Worker 3758*9880d681SAndroid Build Coastguard Worker 3759*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_imm_st2(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C) nounwind { 3760*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_st2: 3761*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1 }, [x0], #16 3762*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, i64* %A) 3763*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 2 3764*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 3765*9880d681SAndroid Build Coastguard Worker} 3766*9880d681SAndroid Build Coastguard Worker 3767*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_reg_st2(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C, i64 %inc) nounwind { 3768*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_st2: 3769*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1 }, [x0], x{{[0-9]+}} 3770*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, i64* %A) 3771*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 3772*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 3773*9880d681SAndroid Build Coastguard Worker} 3774*9880d681SAndroid Build Coastguard Worker 3775*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2.v1i64.p0i64(<1 x i64>, <1 x i64>, i64*) 3776*9880d681SAndroid Build Coastguard Worker 3777*9880d681SAndroid Build Coastguard Worker 3778*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_imm_st2(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C) nounwind { 3779*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_st2: 3780*9880d681SAndroid Build Coastguard Worker;CHECK: st2.4s { v0, v1 }, [x0], #32 3781*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v4f32.p0f32(<4 x float> %B, <4 x float> %C, float* %A) 3782*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 8 3783*9880d681SAndroid Build Coastguard Worker ret float* %tmp 3784*9880d681SAndroid Build Coastguard Worker} 3785*9880d681SAndroid Build Coastguard Worker 3786*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_reg_st2(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C, i64 %inc) nounwind { 3787*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_st2: 3788*9880d681SAndroid Build Coastguard Worker;CHECK: st2.4s { v0, v1 }, [x0], x{{[0-9]+}} 3789*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v4f32.p0f32(<4 x float> %B, <4 x float> %C, float* %A) 3790*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 3791*9880d681SAndroid Build Coastguard Worker ret float* %tmp 3792*9880d681SAndroid Build Coastguard Worker} 3793*9880d681SAndroid Build Coastguard Worker 3794*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2.v4f32.p0f32(<4 x float>, <4 x float>, float*) 3795*9880d681SAndroid Build Coastguard Worker 3796*9880d681SAndroid Build Coastguard Worker 3797*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_imm_st2(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C) nounwind { 3798*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_st2: 3799*9880d681SAndroid Build Coastguard Worker;CHECK: st2.2s { v0, v1 }, [x0], #16 3800*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v2f32.p0f32(<2 x float> %B, <2 x float> %C, float* %A) 3801*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 4 3802*9880d681SAndroid Build Coastguard Worker ret float* %tmp 3803*9880d681SAndroid Build Coastguard Worker} 3804*9880d681SAndroid Build Coastguard Worker 3805*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_reg_st2(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C, i64 %inc) nounwind { 3806*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_st2: 3807*9880d681SAndroid Build Coastguard Worker;CHECK: st2.2s { v0, v1 }, [x0], x{{[0-9]+}} 3808*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v2f32.p0f32(<2 x float> %B, <2 x float> %C, float* %A) 3809*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 3810*9880d681SAndroid Build Coastguard Worker ret float* %tmp 3811*9880d681SAndroid Build Coastguard Worker} 3812*9880d681SAndroid Build Coastguard Worker 3813*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2.v2f32.p0f32(<2 x float>, <2 x float>, float*) 3814*9880d681SAndroid Build Coastguard Worker 3815*9880d681SAndroid Build Coastguard Worker 3816*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_imm_st2(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C) nounwind { 3817*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_st2: 3818*9880d681SAndroid Build Coastguard Worker;CHECK: st2.2d { v0, v1 }, [x0], #32 3819*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v2f64.p0f64(<2 x double> %B, <2 x double> %C, double* %A) 3820*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 4 3821*9880d681SAndroid Build Coastguard Worker ret double* %tmp 3822*9880d681SAndroid Build Coastguard Worker} 3823*9880d681SAndroid Build Coastguard Worker 3824*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_reg_st2(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C, i64 %inc) nounwind { 3825*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_st2: 3826*9880d681SAndroid Build Coastguard Worker;CHECK: st2.2d { v0, v1 }, [x0], x{{[0-9]+}} 3827*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v2f64.p0f64(<2 x double> %B, <2 x double> %C, double* %A) 3828*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 3829*9880d681SAndroid Build Coastguard Worker ret double* %tmp 3830*9880d681SAndroid Build Coastguard Worker} 3831*9880d681SAndroid Build Coastguard Worker 3832*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2.v2f64.p0f64(<2 x double>, <2 x double>, double*) 3833*9880d681SAndroid Build Coastguard Worker 3834*9880d681SAndroid Build Coastguard Worker 3835*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_imm_st2(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C) nounwind { 3836*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_st2: 3837*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1 }, [x0], #16 3838*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v1f64.p0f64(<1 x double> %B, <1 x double> %C, double* %A) 3839*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 2 3840*9880d681SAndroid Build Coastguard Worker ret double* %tmp 3841*9880d681SAndroid Build Coastguard Worker} 3842*9880d681SAndroid Build Coastguard Worker 3843*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_reg_st2(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C, i64 %inc) nounwind { 3844*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_st2: 3845*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1 }, [x0], x{{[0-9]+}} 3846*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2.v1f64.p0f64(<1 x double> %B, <1 x double> %C, double* %A) 3847*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 3848*9880d681SAndroid Build Coastguard Worker ret double* %tmp 3849*9880d681SAndroid Build Coastguard Worker} 3850*9880d681SAndroid Build Coastguard Worker 3851*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2.v1f64.p0f64(<1 x double>, <1 x double>, double*) 3852*9880d681SAndroid Build Coastguard Worker 3853*9880d681SAndroid Build Coastguard Worker 3854*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_imm_st3(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, <16 x i8> %D) nounwind { 3855*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_st3: 3856*9880d681SAndroid Build Coastguard Worker;CHECK: st3.16b { v0, v1, v2 }, [x0], #48 3857*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, <16 x i8> %D, i8* %A) 3858*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 48 3859*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 3860*9880d681SAndroid Build Coastguard Worker} 3861*9880d681SAndroid Build Coastguard Worker 3862*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_reg_st3(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, <16 x i8> %D, i64 %inc) nounwind { 3863*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_st3: 3864*9880d681SAndroid Build Coastguard Worker;CHECK: st3.16b { v0, v1, v2 }, [x0], x{{[0-9]+}} 3865*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, <16 x i8> %D, i8* %A) 3866*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 3867*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 3868*9880d681SAndroid Build Coastguard Worker} 3869*9880d681SAndroid Build Coastguard Worker 3870*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3.v16i8.p0i8(<16 x i8>, <16 x i8>, <16 x i8>, i8*) 3871*9880d681SAndroid Build Coastguard Worker 3872*9880d681SAndroid Build Coastguard Worker 3873*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_imm_st3(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C, <8 x i8> %D) nounwind { 3874*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_st3: 3875*9880d681SAndroid Build Coastguard Worker;CHECK: st3.8b { v0, v1, v2 }, [x0], #24 3876*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, <8 x i8> %D, i8* %A) 3877*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 24 3878*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 3879*9880d681SAndroid Build Coastguard Worker} 3880*9880d681SAndroid Build Coastguard Worker 3881*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_reg_st3(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C, <8 x i8> %D, i64 %inc) nounwind { 3882*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_st3: 3883*9880d681SAndroid Build Coastguard Worker;CHECK: st3.8b { v0, v1, v2 }, [x0], x{{[0-9]+}} 3884*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, <8 x i8> %D, i8* %A) 3885*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 3886*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 3887*9880d681SAndroid Build Coastguard Worker} 3888*9880d681SAndroid Build Coastguard Worker 3889*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3.v8i8.p0i8(<8 x i8>, <8 x i8>, <8 x i8>, i8*) 3890*9880d681SAndroid Build Coastguard Worker 3891*9880d681SAndroid Build Coastguard Worker 3892*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_imm_st3(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C, <8 x i16> %D) nounwind { 3893*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_st3: 3894*9880d681SAndroid Build Coastguard Worker;CHECK: st3.8h { v0, v1, v2 }, [x0], #48 3895*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, <8 x i16> %D, i16* %A) 3896*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 24 3897*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 3898*9880d681SAndroid Build Coastguard Worker} 3899*9880d681SAndroid Build Coastguard Worker 3900*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_reg_st3(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C, <8 x i16> %D, i64 %inc) nounwind { 3901*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_st3: 3902*9880d681SAndroid Build Coastguard Worker;CHECK: st3.8h { v0, v1, v2 }, [x0], x{{[0-9]+}} 3903*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, <8 x i16> %D, i16* %A) 3904*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 3905*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 3906*9880d681SAndroid Build Coastguard Worker} 3907*9880d681SAndroid Build Coastguard Worker 3908*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3.v8i16.p0i16(<8 x i16>, <8 x i16>, <8 x i16>, i16*) 3909*9880d681SAndroid Build Coastguard Worker 3910*9880d681SAndroid Build Coastguard Worker 3911*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_imm_st3(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C, <4 x i16> %D) nounwind { 3912*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_st3: 3913*9880d681SAndroid Build Coastguard Worker;CHECK: st3.4h { v0, v1, v2 }, [x0], #24 3914*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, <4 x i16> %D, i16* %A) 3915*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 12 3916*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 3917*9880d681SAndroid Build Coastguard Worker} 3918*9880d681SAndroid Build Coastguard Worker 3919*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_reg_st3(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C, <4 x i16> %D, i64 %inc) nounwind { 3920*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_st3: 3921*9880d681SAndroid Build Coastguard Worker;CHECK: st3.4h { v0, v1, v2 }, [x0], x{{[0-9]+}} 3922*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, <4 x i16> %D, i16* %A) 3923*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 3924*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 3925*9880d681SAndroid Build Coastguard Worker} 3926*9880d681SAndroid Build Coastguard Worker 3927*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3.v4i16.p0i16(<4 x i16>, <4 x i16>, <4 x i16>, i16*) 3928*9880d681SAndroid Build Coastguard Worker 3929*9880d681SAndroid Build Coastguard Worker 3930*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_imm_st3(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C, <4 x i32> %D) nounwind { 3931*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_st3: 3932*9880d681SAndroid Build Coastguard Worker;CHECK: st3.4s { v0, v1, v2 }, [x0], #48 3933*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, <4 x i32> %D, i32* %A) 3934*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 12 3935*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 3936*9880d681SAndroid Build Coastguard Worker} 3937*9880d681SAndroid Build Coastguard Worker 3938*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_reg_st3(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C, <4 x i32> %D, i64 %inc) nounwind { 3939*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_st3: 3940*9880d681SAndroid Build Coastguard Worker;CHECK: st3.4s { v0, v1, v2 }, [x0], x{{[0-9]+}} 3941*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, <4 x i32> %D, i32* %A) 3942*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 3943*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 3944*9880d681SAndroid Build Coastguard Worker} 3945*9880d681SAndroid Build Coastguard Worker 3946*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3.v4i32.p0i32(<4 x i32>, <4 x i32>, <4 x i32>, i32*) 3947*9880d681SAndroid Build Coastguard Worker 3948*9880d681SAndroid Build Coastguard Worker 3949*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_imm_st3(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C, <2 x i32> %D) nounwind { 3950*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_st3: 3951*9880d681SAndroid Build Coastguard Worker;CHECK: st3.2s { v0, v1, v2 }, [x0], #24 3952*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, <2 x i32> %D, i32* %A) 3953*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 6 3954*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 3955*9880d681SAndroid Build Coastguard Worker} 3956*9880d681SAndroid Build Coastguard Worker 3957*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_reg_st3(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C, <2 x i32> %D, i64 %inc) nounwind { 3958*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_st3: 3959*9880d681SAndroid Build Coastguard Worker;CHECK: st3.2s { v0, v1, v2 }, [x0], x{{[0-9]+}} 3960*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, <2 x i32> %D, i32* %A) 3961*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 3962*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 3963*9880d681SAndroid Build Coastguard Worker} 3964*9880d681SAndroid Build Coastguard Worker 3965*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3.v2i32.p0i32(<2 x i32>, <2 x i32>, <2 x i32>, i32*) 3966*9880d681SAndroid Build Coastguard Worker 3967*9880d681SAndroid Build Coastguard Worker 3968*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_imm_st3(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C, <2 x i64> %D) nounwind { 3969*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_st3: 3970*9880d681SAndroid Build Coastguard Worker;CHECK: st3.2d { v0, v1, v2 }, [x0], #48 3971*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, <2 x i64> %D, i64* %A) 3972*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 6 3973*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 3974*9880d681SAndroid Build Coastguard Worker} 3975*9880d681SAndroid Build Coastguard Worker 3976*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_reg_st3(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C, <2 x i64> %D, i64 %inc) nounwind { 3977*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_st3: 3978*9880d681SAndroid Build Coastguard Worker;CHECK: st3.2d { v0, v1, v2 }, [x0], x{{[0-9]+}} 3979*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, <2 x i64> %D, i64* %A) 3980*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 3981*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 3982*9880d681SAndroid Build Coastguard Worker} 3983*9880d681SAndroid Build Coastguard Worker 3984*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3.v2i64.p0i64(<2 x i64>, <2 x i64>, <2 x i64>, i64*) 3985*9880d681SAndroid Build Coastguard Worker 3986*9880d681SAndroid Build Coastguard Worker 3987*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_imm_st3(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C, <1 x i64> %D) nounwind { 3988*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_st3: 3989*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1, v2 }, [x0], #24 3990*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, <1 x i64> %D, i64* %A) 3991*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 3 3992*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 3993*9880d681SAndroid Build Coastguard Worker} 3994*9880d681SAndroid Build Coastguard Worker 3995*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_reg_st3(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C, <1 x i64> %D, i64 %inc) nounwind { 3996*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_st3: 3997*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1, v2 }, [x0], x{{[0-9]+}} 3998*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, <1 x i64> %D, i64* %A) 3999*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 4000*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 4001*9880d681SAndroid Build Coastguard Worker} 4002*9880d681SAndroid Build Coastguard Worker 4003*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3.v1i64.p0i64(<1 x i64>, <1 x i64>, <1 x i64>, i64*) 4004*9880d681SAndroid Build Coastguard Worker 4005*9880d681SAndroid Build Coastguard Worker 4006*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_imm_st3(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C, <4 x float> %D) nounwind { 4007*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_st3: 4008*9880d681SAndroid Build Coastguard Worker;CHECK: st3.4s { v0, v1, v2 }, [x0], #48 4009*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v4f32.p0f32(<4 x float> %B, <4 x float> %C, <4 x float> %D, float* %A) 4010*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 12 4011*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4012*9880d681SAndroid Build Coastguard Worker} 4013*9880d681SAndroid Build Coastguard Worker 4014*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_reg_st3(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C, <4 x float> %D, i64 %inc) nounwind { 4015*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_st3: 4016*9880d681SAndroid Build Coastguard Worker;CHECK: st3.4s { v0, v1, v2 }, [x0], x{{[0-9]+}} 4017*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v4f32.p0f32(<4 x float> %B, <4 x float> %C, <4 x float> %D, float* %A) 4018*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 4019*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4020*9880d681SAndroid Build Coastguard Worker} 4021*9880d681SAndroid Build Coastguard Worker 4022*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3.v4f32.p0f32(<4 x float>, <4 x float>, <4 x float>, float*) 4023*9880d681SAndroid Build Coastguard Worker 4024*9880d681SAndroid Build Coastguard Worker 4025*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_imm_st3(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C, <2 x float> %D) nounwind { 4026*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_st3: 4027*9880d681SAndroid Build Coastguard Worker;CHECK: st3.2s { v0, v1, v2 }, [x0], #24 4028*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v2f32.p0f32(<2 x float> %B, <2 x float> %C, <2 x float> %D, float* %A) 4029*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 6 4030*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4031*9880d681SAndroid Build Coastguard Worker} 4032*9880d681SAndroid Build Coastguard Worker 4033*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_reg_st3(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C, <2 x float> %D, i64 %inc) nounwind { 4034*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_st3: 4035*9880d681SAndroid Build Coastguard Worker;CHECK: st3.2s { v0, v1, v2 }, [x0], x{{[0-9]+}} 4036*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v2f32.p0f32(<2 x float> %B, <2 x float> %C, <2 x float> %D, float* %A) 4037*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 4038*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4039*9880d681SAndroid Build Coastguard Worker} 4040*9880d681SAndroid Build Coastguard Worker 4041*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3.v2f32.p0f32(<2 x float>, <2 x float>, <2 x float>, float*) 4042*9880d681SAndroid Build Coastguard Worker 4043*9880d681SAndroid Build Coastguard Worker 4044*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_imm_st3(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C, <2 x double> %D) nounwind { 4045*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_st3: 4046*9880d681SAndroid Build Coastguard Worker;CHECK: st3.2d { v0, v1, v2 }, [x0], #48 4047*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v2f64.p0f64(<2 x double> %B, <2 x double> %C, <2 x double> %D, double* %A) 4048*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 6 4049*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4050*9880d681SAndroid Build Coastguard Worker} 4051*9880d681SAndroid Build Coastguard Worker 4052*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_reg_st3(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C, <2 x double> %D, i64 %inc) nounwind { 4053*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_st3: 4054*9880d681SAndroid Build Coastguard Worker;CHECK: st3.2d { v0, v1, v2 }, [x0], x{{[0-9]+}} 4055*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v2f64.p0f64(<2 x double> %B, <2 x double> %C, <2 x double> %D, double* %A) 4056*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 4057*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4058*9880d681SAndroid Build Coastguard Worker} 4059*9880d681SAndroid Build Coastguard Worker 4060*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3.v2f64.p0f64(<2 x double>, <2 x double>, <2 x double>, double*) 4061*9880d681SAndroid Build Coastguard Worker 4062*9880d681SAndroid Build Coastguard Worker 4063*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_imm_st3(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C, <1 x double> %D) nounwind { 4064*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_st3: 4065*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1, v2 }, [x0], #24 4066*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v1f64.p0f64(<1 x double> %B, <1 x double> %C, <1 x double> %D, double* %A) 4067*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 3 4068*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4069*9880d681SAndroid Build Coastguard Worker} 4070*9880d681SAndroid Build Coastguard Worker 4071*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_reg_st3(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C, <1 x double> %D, i64 %inc) nounwind { 4072*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_st3: 4073*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1, v2 }, [x0], x{{[0-9]+}} 4074*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3.v1f64.p0f64(<1 x double> %B, <1 x double> %C, <1 x double> %D, double* %A) 4075*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 4076*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4077*9880d681SAndroid Build Coastguard Worker} 4078*9880d681SAndroid Build Coastguard Worker 4079*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3.v1f64.p0f64(<1 x double>, <1 x double>, <1 x double>, double*) 4080*9880d681SAndroid Build Coastguard Worker 4081*9880d681SAndroid Build Coastguard Worker 4082*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_imm_st4(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, <16 x i8> %D, <16 x i8> %E) nounwind { 4083*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_st4: 4084*9880d681SAndroid Build Coastguard Worker;CHECK: st4.16b { v0, v1, v2, v3 }, [x0], #64 4085*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, <16 x i8> %D, <16 x i8> %E, i8* %A) 4086*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 64 4087*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 4088*9880d681SAndroid Build Coastguard Worker} 4089*9880d681SAndroid Build Coastguard Worker 4090*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_reg_st4(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, <16 x i8> %D, <16 x i8> %E, i64 %inc) nounwind { 4091*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_st4: 4092*9880d681SAndroid Build Coastguard Worker;CHECK: st4.16b { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4093*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, <16 x i8> %D, <16 x i8> %E, i8* %A) 4094*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 4095*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 4096*9880d681SAndroid Build Coastguard Worker} 4097*9880d681SAndroid Build Coastguard Worker 4098*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4.v16i8.p0i8(<16 x i8>, <16 x i8>, <16 x i8>, <16 x i8>, i8*) 4099*9880d681SAndroid Build Coastguard Worker 4100*9880d681SAndroid Build Coastguard Worker 4101*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_imm_st4(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C, <8 x i8> %D, <8 x i8> %E) nounwind { 4102*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_st4: 4103*9880d681SAndroid Build Coastguard Worker;CHECK: st4.8b { v0, v1, v2, v3 }, [x0], #32 4104*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, <8 x i8> %D, <8 x i8> %E, i8* %A) 4105*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 32 4106*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 4107*9880d681SAndroid Build Coastguard Worker} 4108*9880d681SAndroid Build Coastguard Worker 4109*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_reg_st4(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C, <8 x i8> %D, <8 x i8> %E, i64 %inc) nounwind { 4110*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_st4: 4111*9880d681SAndroid Build Coastguard Worker;CHECK: st4.8b { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4112*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, <8 x i8> %D, <8 x i8> %E, i8* %A) 4113*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 4114*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 4115*9880d681SAndroid Build Coastguard Worker} 4116*9880d681SAndroid Build Coastguard Worker 4117*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4.v8i8.p0i8(<8 x i8>, <8 x i8>, <8 x i8>, <8 x i8>, i8*) 4118*9880d681SAndroid Build Coastguard Worker 4119*9880d681SAndroid Build Coastguard Worker 4120*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_imm_st4(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C, <8 x i16> %D, <8 x i16> %E) nounwind { 4121*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_st4: 4122*9880d681SAndroid Build Coastguard Worker;CHECK: st4.8h { v0, v1, v2, v3 }, [x0], #64 4123*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, <8 x i16> %D, <8 x i16> %E, i16* %A) 4124*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 32 4125*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 4126*9880d681SAndroid Build Coastguard Worker} 4127*9880d681SAndroid Build Coastguard Worker 4128*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_reg_st4(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C, <8 x i16> %D, <8 x i16> %E, i64 %inc) nounwind { 4129*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_st4: 4130*9880d681SAndroid Build Coastguard Worker;CHECK: st4.8h { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4131*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, <8 x i16> %D, <8 x i16> %E, i16* %A) 4132*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 4133*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 4134*9880d681SAndroid Build Coastguard Worker} 4135*9880d681SAndroid Build Coastguard Worker 4136*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4.v8i16.p0i16(<8 x i16>, <8 x i16>, <8 x i16>, <8 x i16>, i16*) 4137*9880d681SAndroid Build Coastguard Worker 4138*9880d681SAndroid Build Coastguard Worker 4139*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_imm_st4(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C, <4 x i16> %D, <4 x i16> %E) nounwind { 4140*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_st4: 4141*9880d681SAndroid Build Coastguard Worker;CHECK: st4.4h { v0, v1, v2, v3 }, [x0], #32 4142*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, <4 x i16> %D, <4 x i16> %E, i16* %A) 4143*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 16 4144*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 4145*9880d681SAndroid Build Coastguard Worker} 4146*9880d681SAndroid Build Coastguard Worker 4147*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_reg_st4(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C, <4 x i16> %D, <4 x i16> %E, i64 %inc) nounwind { 4148*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_st4: 4149*9880d681SAndroid Build Coastguard Worker;CHECK: st4.4h { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4150*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, <4 x i16> %D, <4 x i16> %E, i16* %A) 4151*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 4152*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 4153*9880d681SAndroid Build Coastguard Worker} 4154*9880d681SAndroid Build Coastguard Worker 4155*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4.v4i16.p0i16(<4 x i16>, <4 x i16>, <4 x i16>,<4 x i16>, i16*) 4156*9880d681SAndroid Build Coastguard Worker 4157*9880d681SAndroid Build Coastguard Worker 4158*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_imm_st4(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C, <4 x i32> %D, <4 x i32> %E) nounwind { 4159*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_st4: 4160*9880d681SAndroid Build Coastguard Worker;CHECK: st4.4s { v0, v1, v2, v3 }, [x0], #64 4161*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, <4 x i32> %D, <4 x i32> %E, i32* %A) 4162*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 16 4163*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 4164*9880d681SAndroid Build Coastguard Worker} 4165*9880d681SAndroid Build Coastguard Worker 4166*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_reg_st4(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C, <4 x i32> %D, <4 x i32> %E, i64 %inc) nounwind { 4167*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_st4: 4168*9880d681SAndroid Build Coastguard Worker;CHECK: st4.4s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4169*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, <4 x i32> %D, <4 x i32> %E, i32* %A) 4170*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 4171*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 4172*9880d681SAndroid Build Coastguard Worker} 4173*9880d681SAndroid Build Coastguard Worker 4174*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4.v4i32.p0i32(<4 x i32>, <4 x i32>, <4 x i32>,<4 x i32>, i32*) 4175*9880d681SAndroid Build Coastguard Worker 4176*9880d681SAndroid Build Coastguard Worker 4177*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_imm_st4(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C, <2 x i32> %D, <2 x i32> %E) nounwind { 4178*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_st4: 4179*9880d681SAndroid Build Coastguard Worker;CHECK: st4.2s { v0, v1, v2, v3 }, [x0], #32 4180*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, <2 x i32> %D, <2 x i32> %E, i32* %A) 4181*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 8 4182*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 4183*9880d681SAndroid Build Coastguard Worker} 4184*9880d681SAndroid Build Coastguard Worker 4185*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_reg_st4(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C, <2 x i32> %D, <2 x i32> %E, i64 %inc) nounwind { 4186*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_st4: 4187*9880d681SAndroid Build Coastguard Worker;CHECK: st4.2s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4188*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, <2 x i32> %D, <2 x i32> %E, i32* %A) 4189*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 4190*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 4191*9880d681SAndroid Build Coastguard Worker} 4192*9880d681SAndroid Build Coastguard Worker 4193*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4.v2i32.p0i32(<2 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, i32*) 4194*9880d681SAndroid Build Coastguard Worker 4195*9880d681SAndroid Build Coastguard Worker 4196*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_imm_st4(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C, <2 x i64> %D, <2 x i64> %E) nounwind { 4197*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_st4: 4198*9880d681SAndroid Build Coastguard Worker;CHECK: st4.2d { v0, v1, v2, v3 }, [x0], #64 4199*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, <2 x i64> %D, <2 x i64> %E, i64* %A) 4200*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 8 4201*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 4202*9880d681SAndroid Build Coastguard Worker} 4203*9880d681SAndroid Build Coastguard Worker 4204*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_reg_st4(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C, <2 x i64> %D, <2 x i64> %E, i64 %inc) nounwind { 4205*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_st4: 4206*9880d681SAndroid Build Coastguard Worker;CHECK: st4.2d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4207*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, <2 x i64> %D, <2 x i64> %E, i64* %A) 4208*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 4209*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 4210*9880d681SAndroid Build Coastguard Worker} 4211*9880d681SAndroid Build Coastguard Worker 4212*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4.v2i64.p0i64(<2 x i64>, <2 x i64>, <2 x i64>,<2 x i64>, i64*) 4213*9880d681SAndroid Build Coastguard Worker 4214*9880d681SAndroid Build Coastguard Worker 4215*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_imm_st4(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C, <1 x i64> %D, <1 x i64> %E) nounwind { 4216*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_st4: 4217*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1, v2, v3 }, [x0], #32 4218*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, <1 x i64> %D, <1 x i64> %E, i64* %A) 4219*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 4 4220*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 4221*9880d681SAndroid Build Coastguard Worker} 4222*9880d681SAndroid Build Coastguard Worker 4223*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_reg_st4(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C, <1 x i64> %D, <1 x i64> %E, i64 %inc) nounwind { 4224*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_st4: 4225*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4226*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, <1 x i64> %D, <1 x i64> %E, i64* %A) 4227*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 4228*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 4229*9880d681SAndroid Build Coastguard Worker} 4230*9880d681SAndroid Build Coastguard Worker 4231*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4.v1i64.p0i64(<1 x i64>, <1 x i64>, <1 x i64>,<1 x i64>, i64*) 4232*9880d681SAndroid Build Coastguard Worker 4233*9880d681SAndroid Build Coastguard Worker 4234*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_imm_st4(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C, <4 x float> %D, <4 x float> %E) nounwind { 4235*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_st4: 4236*9880d681SAndroid Build Coastguard Worker;CHECK: st4.4s { v0, v1, v2, v3 }, [x0], #64 4237*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v4f32.p0f32(<4 x float> %B, <4 x float> %C, <4 x float> %D, <4 x float> %E, float* %A) 4238*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 16 4239*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4240*9880d681SAndroid Build Coastguard Worker} 4241*9880d681SAndroid Build Coastguard Worker 4242*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_reg_st4(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C, <4 x float> %D, <4 x float> %E, i64 %inc) nounwind { 4243*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_st4: 4244*9880d681SAndroid Build Coastguard Worker;CHECK: st4.4s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4245*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v4f32.p0f32(<4 x float> %B, <4 x float> %C, <4 x float> %D, <4 x float> %E, float* %A) 4246*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 4247*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4248*9880d681SAndroid Build Coastguard Worker} 4249*9880d681SAndroid Build Coastguard Worker 4250*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4.v4f32.p0f32(<4 x float>, <4 x float>, <4 x float>, <4 x float>, float*) 4251*9880d681SAndroid Build Coastguard Worker 4252*9880d681SAndroid Build Coastguard Worker 4253*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_imm_st4(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C, <2 x float> %D, <2 x float> %E) nounwind { 4254*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_st4: 4255*9880d681SAndroid Build Coastguard Worker;CHECK: st4.2s { v0, v1, v2, v3 }, [x0], #32 4256*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v2f32.p0f32(<2 x float> %B, <2 x float> %C, <2 x float> %D, <2 x float> %E, float* %A) 4257*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 8 4258*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4259*9880d681SAndroid Build Coastguard Worker} 4260*9880d681SAndroid Build Coastguard Worker 4261*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_reg_st4(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C, <2 x float> %D, <2 x float> %E, i64 %inc) nounwind { 4262*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_st4: 4263*9880d681SAndroid Build Coastguard Worker;CHECK: st4.2s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4264*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v2f32.p0f32(<2 x float> %B, <2 x float> %C, <2 x float> %D, <2 x float> %E, float* %A) 4265*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 4266*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4267*9880d681SAndroid Build Coastguard Worker} 4268*9880d681SAndroid Build Coastguard Worker 4269*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4.v2f32.p0f32(<2 x float>, <2 x float>, <2 x float>, <2 x float>, float*) 4270*9880d681SAndroid Build Coastguard Worker 4271*9880d681SAndroid Build Coastguard Worker 4272*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_imm_st4(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C, <2 x double> %D, <2 x double> %E) nounwind { 4273*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_st4: 4274*9880d681SAndroid Build Coastguard Worker;CHECK: st4.2d { v0, v1, v2, v3 }, [x0], #64 4275*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v2f64.p0f64(<2 x double> %B, <2 x double> %C, <2 x double> %D, <2 x double> %E, double* %A) 4276*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 8 4277*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4278*9880d681SAndroid Build Coastguard Worker} 4279*9880d681SAndroid Build Coastguard Worker 4280*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_reg_st4(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C, <2 x double> %D, <2 x double> %E, i64 %inc) nounwind { 4281*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_st4: 4282*9880d681SAndroid Build Coastguard Worker;CHECK: st4.2d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4283*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v2f64.p0f64(<2 x double> %B, <2 x double> %C, <2 x double> %D, <2 x double> %E, double* %A) 4284*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 4285*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4286*9880d681SAndroid Build Coastguard Worker} 4287*9880d681SAndroid Build Coastguard Worker 4288*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4.v2f64.p0f64(<2 x double>, <2 x double>, <2 x double>,<2 x double>, double*) 4289*9880d681SAndroid Build Coastguard Worker 4290*9880d681SAndroid Build Coastguard Worker 4291*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_imm_st4(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C, <1 x double> %D, <1 x double> %E) nounwind { 4292*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_st4: 4293*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1, v2, v3 }, [x0], #32 4294*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v1f64.p0f64(<1 x double> %B, <1 x double> %C, <1 x double> %D, <1 x double> %E, double* %A) 4295*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 4 4296*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4297*9880d681SAndroid Build Coastguard Worker} 4298*9880d681SAndroid Build Coastguard Worker 4299*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_reg_st4(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C, <1 x double> %D, <1 x double> %E, i64 %inc) nounwind { 4300*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_st4: 4301*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4302*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4.v1f64.p0f64(<1 x double> %B, <1 x double> %C, <1 x double> %D, <1 x double> %E, double* %A) 4303*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 4304*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4305*9880d681SAndroid Build Coastguard Worker} 4306*9880d681SAndroid Build Coastguard Worker 4307*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4.v1f64.p0f64(<1 x double>, <1 x double>, <1 x double>, <1 x double>, double*) 4308*9880d681SAndroid Build Coastguard Worker 4309*9880d681SAndroid Build Coastguard Worker 4310*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_imm_st1x2(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C) nounwind { 4311*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_st1x2: 4312*9880d681SAndroid Build Coastguard Worker;CHECK: st1.16b { v0, v1 }, [x0], #32 4313*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, i8* %A) 4314*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 32 4315*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 4316*9880d681SAndroid Build Coastguard Worker} 4317*9880d681SAndroid Build Coastguard Worker 4318*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_reg_st1x2(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, i64 %inc) nounwind { 4319*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_st1x2: 4320*9880d681SAndroid Build Coastguard Worker;CHECK: st1.16b { v0, v1 }, [x0], x{{[0-9]+}} 4321*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, i8* %A) 4322*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 4323*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 4324*9880d681SAndroid Build Coastguard Worker} 4325*9880d681SAndroid Build Coastguard Worker 4326*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x2.v16i8.p0i8(<16 x i8>, <16 x i8>, i8*) 4327*9880d681SAndroid Build Coastguard Worker 4328*9880d681SAndroid Build Coastguard Worker 4329*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_imm_st1x2(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C) nounwind { 4330*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_st1x2: 4331*9880d681SAndroid Build Coastguard Worker;CHECK: st1.8b { v0, v1 }, [x0], #16 4332*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, i8* %A) 4333*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 16 4334*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 4335*9880d681SAndroid Build Coastguard Worker} 4336*9880d681SAndroid Build Coastguard Worker 4337*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_reg_st1x2(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C, i64 %inc) nounwind { 4338*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_st1x2: 4339*9880d681SAndroid Build Coastguard Worker;CHECK: st1.8b { v0, v1 }, [x0], x{{[0-9]+}} 4340*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, i8* %A) 4341*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 4342*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 4343*9880d681SAndroid Build Coastguard Worker} 4344*9880d681SAndroid Build Coastguard Worker 4345*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x2.v8i8.p0i8(<8 x i8>, <8 x i8>, i8*) 4346*9880d681SAndroid Build Coastguard Worker 4347*9880d681SAndroid Build Coastguard Worker 4348*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_imm_st1x2(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C) nounwind { 4349*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_st1x2: 4350*9880d681SAndroid Build Coastguard Worker;CHECK: st1.8h { v0, v1 }, [x0], #32 4351*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, i16* %A) 4352*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 16 4353*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 4354*9880d681SAndroid Build Coastguard Worker} 4355*9880d681SAndroid Build Coastguard Worker 4356*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_reg_st1x2(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C, i64 %inc) nounwind { 4357*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_st1x2: 4358*9880d681SAndroid Build Coastguard Worker;CHECK: st1.8h { v0, v1 }, [x0], x{{[0-9]+}} 4359*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, i16* %A) 4360*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 4361*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 4362*9880d681SAndroid Build Coastguard Worker} 4363*9880d681SAndroid Build Coastguard Worker 4364*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x2.v8i16.p0i16(<8 x i16>, <8 x i16>, i16*) 4365*9880d681SAndroid Build Coastguard Worker 4366*9880d681SAndroid Build Coastguard Worker 4367*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_imm_st1x2(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C) nounwind { 4368*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_st1x2: 4369*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4h { v0, v1 }, [x0], #16 4370*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, i16* %A) 4371*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 8 4372*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 4373*9880d681SAndroid Build Coastguard Worker} 4374*9880d681SAndroid Build Coastguard Worker 4375*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_reg_st1x2(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C, i64 %inc) nounwind { 4376*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_st1x2: 4377*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4h { v0, v1 }, [x0], x{{[0-9]+}} 4378*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, i16* %A) 4379*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 4380*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 4381*9880d681SAndroid Build Coastguard Worker} 4382*9880d681SAndroid Build Coastguard Worker 4383*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x2.v4i16.p0i16(<4 x i16>, <4 x i16>, i16*) 4384*9880d681SAndroid Build Coastguard Worker 4385*9880d681SAndroid Build Coastguard Worker 4386*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_imm_st1x2(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C) nounwind { 4387*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_st1x2: 4388*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4s { v0, v1 }, [x0], #32 4389*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, i32* %A) 4390*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 8 4391*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 4392*9880d681SAndroid Build Coastguard Worker} 4393*9880d681SAndroid Build Coastguard Worker 4394*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_reg_st1x2(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C, i64 %inc) nounwind { 4395*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_st1x2: 4396*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4s { v0, v1 }, [x0], x{{[0-9]+}} 4397*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, i32* %A) 4398*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 4399*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 4400*9880d681SAndroid Build Coastguard Worker} 4401*9880d681SAndroid Build Coastguard Worker 4402*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x2.v4i32.p0i32(<4 x i32>, <4 x i32>, i32*) 4403*9880d681SAndroid Build Coastguard Worker 4404*9880d681SAndroid Build Coastguard Worker 4405*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_imm_st1x2(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C) nounwind { 4406*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_st1x2: 4407*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2s { v0, v1 }, [x0], #16 4408*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, i32* %A) 4409*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 4 4410*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 4411*9880d681SAndroid Build Coastguard Worker} 4412*9880d681SAndroid Build Coastguard Worker 4413*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_reg_st1x2(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C, i64 %inc) nounwind { 4414*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_st1x2: 4415*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2s { v0, v1 }, [x0], x{{[0-9]+}} 4416*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, i32* %A) 4417*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 4418*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 4419*9880d681SAndroid Build Coastguard Worker} 4420*9880d681SAndroid Build Coastguard Worker 4421*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x2.v2i32.p0i32(<2 x i32>, <2 x i32>, i32*) 4422*9880d681SAndroid Build Coastguard Worker 4423*9880d681SAndroid Build Coastguard Worker 4424*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_imm_st1x2(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C) nounwind { 4425*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_st1x2: 4426*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2d { v0, v1 }, [x0], #32 4427*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, i64* %A) 4428*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 4 4429*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 4430*9880d681SAndroid Build Coastguard Worker} 4431*9880d681SAndroid Build Coastguard Worker 4432*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_reg_st1x2(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C, i64 %inc) nounwind { 4433*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_st1x2: 4434*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2d { v0, v1 }, [x0], x{{[0-9]+}} 4435*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, i64* %A) 4436*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 4437*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 4438*9880d681SAndroid Build Coastguard Worker} 4439*9880d681SAndroid Build Coastguard Worker 4440*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x2.v2i64.p0i64(<2 x i64>, <2 x i64>, i64*) 4441*9880d681SAndroid Build Coastguard Worker 4442*9880d681SAndroid Build Coastguard Worker 4443*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_imm_st1x2(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C) nounwind { 4444*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_st1x2: 4445*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1 }, [x0], #16 4446*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, i64* %A) 4447*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 2 4448*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 4449*9880d681SAndroid Build Coastguard Worker} 4450*9880d681SAndroid Build Coastguard Worker 4451*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_reg_st1x2(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C, i64 %inc) nounwind { 4452*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_st1x2: 4453*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1 }, [x0], x{{[0-9]+}} 4454*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, i64* %A) 4455*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 4456*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 4457*9880d681SAndroid Build Coastguard Worker} 4458*9880d681SAndroid Build Coastguard Worker 4459*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x2.v1i64.p0i64(<1 x i64>, <1 x i64>, i64*) 4460*9880d681SAndroid Build Coastguard Worker 4461*9880d681SAndroid Build Coastguard Worker 4462*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_imm_st1x2(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C) nounwind { 4463*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_st1x2: 4464*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4s { v0, v1 }, [x0], #32 4465*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v4f32.p0f32(<4 x float> %B, <4 x float> %C, float* %A) 4466*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 8 4467*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4468*9880d681SAndroid Build Coastguard Worker} 4469*9880d681SAndroid Build Coastguard Worker 4470*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_reg_st1x2(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C, i64 %inc) nounwind { 4471*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_st1x2: 4472*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4s { v0, v1 }, [x0], x{{[0-9]+}} 4473*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v4f32.p0f32(<4 x float> %B, <4 x float> %C, float* %A) 4474*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 4475*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4476*9880d681SAndroid Build Coastguard Worker} 4477*9880d681SAndroid Build Coastguard Worker 4478*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x2.v4f32.p0f32(<4 x float>, <4 x float>, float*) 4479*9880d681SAndroid Build Coastguard Worker 4480*9880d681SAndroid Build Coastguard Worker 4481*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_imm_st1x2(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C) nounwind { 4482*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_st1x2: 4483*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2s { v0, v1 }, [x0], #16 4484*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v2f32.p0f32(<2 x float> %B, <2 x float> %C, float* %A) 4485*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 4 4486*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4487*9880d681SAndroid Build Coastguard Worker} 4488*9880d681SAndroid Build Coastguard Worker 4489*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_reg_st1x2(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C, i64 %inc) nounwind { 4490*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_st1x2: 4491*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2s { v0, v1 }, [x0], x{{[0-9]+}} 4492*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v2f32.p0f32(<2 x float> %B, <2 x float> %C, float* %A) 4493*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 4494*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4495*9880d681SAndroid Build Coastguard Worker} 4496*9880d681SAndroid Build Coastguard Worker 4497*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x2.v2f32.p0f32(<2 x float>, <2 x float>, float*) 4498*9880d681SAndroid Build Coastguard Worker 4499*9880d681SAndroid Build Coastguard Worker 4500*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_imm_st1x2(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C) nounwind { 4501*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_st1x2: 4502*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2d { v0, v1 }, [x0], #32 4503*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v2f64.p0f64(<2 x double> %B, <2 x double> %C, double* %A) 4504*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 4 4505*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4506*9880d681SAndroid Build Coastguard Worker} 4507*9880d681SAndroid Build Coastguard Worker 4508*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_reg_st1x2(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C, i64 %inc) nounwind { 4509*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_st1x2: 4510*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2d { v0, v1 }, [x0], x{{[0-9]+}} 4511*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v2f64.p0f64(<2 x double> %B, <2 x double> %C, double* %A) 4512*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 4513*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4514*9880d681SAndroid Build Coastguard Worker} 4515*9880d681SAndroid Build Coastguard Worker 4516*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x2.v2f64.p0f64(<2 x double>, <2 x double>, double*) 4517*9880d681SAndroid Build Coastguard Worker 4518*9880d681SAndroid Build Coastguard Worker 4519*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_imm_st1x2(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C) nounwind { 4520*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_st1x2: 4521*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1 }, [x0], #16 4522*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v1f64.p0f64(<1 x double> %B, <1 x double> %C, double* %A) 4523*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 2 4524*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4525*9880d681SAndroid Build Coastguard Worker} 4526*9880d681SAndroid Build Coastguard Worker 4527*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_reg_st1x2(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C, i64 %inc) nounwind { 4528*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_st1x2: 4529*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1 }, [x0], x{{[0-9]+}} 4530*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x2.v1f64.p0f64(<1 x double> %B, <1 x double> %C, double* %A) 4531*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 4532*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4533*9880d681SAndroid Build Coastguard Worker} 4534*9880d681SAndroid Build Coastguard Worker 4535*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x2.v1f64.p0f64(<1 x double>, <1 x double>, double*) 4536*9880d681SAndroid Build Coastguard Worker 4537*9880d681SAndroid Build Coastguard Worker 4538*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_imm_st1x3(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, <16 x i8> %D) nounwind { 4539*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_st1x3: 4540*9880d681SAndroid Build Coastguard Worker;CHECK: st1.16b { v0, v1, v2 }, [x0], #48 4541*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, <16 x i8> %D, i8* %A) 4542*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 48 4543*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 4544*9880d681SAndroid Build Coastguard Worker} 4545*9880d681SAndroid Build Coastguard Worker 4546*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_reg_st1x3(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, <16 x i8> %D, i64 %inc) nounwind { 4547*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_st1x3: 4548*9880d681SAndroid Build Coastguard Worker;CHECK: st1.16b { v0, v1, v2 }, [x0], x{{[0-9]+}} 4549*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, <16 x i8> %D, i8* %A) 4550*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 4551*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 4552*9880d681SAndroid Build Coastguard Worker} 4553*9880d681SAndroid Build Coastguard Worker 4554*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x3.v16i8.p0i8(<16 x i8>, <16 x i8>, <16 x i8>, i8*) 4555*9880d681SAndroid Build Coastguard Worker 4556*9880d681SAndroid Build Coastguard Worker 4557*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_imm_st1x3(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C, <8 x i8> %D) nounwind { 4558*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_st1x3: 4559*9880d681SAndroid Build Coastguard Worker;CHECK: st1.8b { v0, v1, v2 }, [x0], #24 4560*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, <8 x i8> %D, i8* %A) 4561*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 24 4562*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 4563*9880d681SAndroid Build Coastguard Worker} 4564*9880d681SAndroid Build Coastguard Worker 4565*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_reg_st1x3(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C, <8 x i8> %D, i64 %inc) nounwind { 4566*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_st1x3: 4567*9880d681SAndroid Build Coastguard Worker;CHECK: st1.8b { v0, v1, v2 }, [x0], x{{[0-9]+}} 4568*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, <8 x i8> %D, i8* %A) 4569*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 4570*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 4571*9880d681SAndroid Build Coastguard Worker} 4572*9880d681SAndroid Build Coastguard Worker 4573*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x3.v8i8.p0i8(<8 x i8>, <8 x i8>, <8 x i8>, i8*) 4574*9880d681SAndroid Build Coastguard Worker 4575*9880d681SAndroid Build Coastguard Worker 4576*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_imm_st1x3(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C, <8 x i16> %D) nounwind { 4577*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_st1x3: 4578*9880d681SAndroid Build Coastguard Worker;CHECK: st1.8h { v0, v1, v2 }, [x0], #48 4579*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, <8 x i16> %D, i16* %A) 4580*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 24 4581*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 4582*9880d681SAndroid Build Coastguard Worker} 4583*9880d681SAndroid Build Coastguard Worker 4584*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_reg_st1x3(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C, <8 x i16> %D, i64 %inc) nounwind { 4585*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_st1x3: 4586*9880d681SAndroid Build Coastguard Worker;CHECK: st1.8h { v0, v1, v2 }, [x0], x{{[0-9]+}} 4587*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, <8 x i16> %D, i16* %A) 4588*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 4589*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 4590*9880d681SAndroid Build Coastguard Worker} 4591*9880d681SAndroid Build Coastguard Worker 4592*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x3.v8i16.p0i16(<8 x i16>, <8 x i16>, <8 x i16>, i16*) 4593*9880d681SAndroid Build Coastguard Worker 4594*9880d681SAndroid Build Coastguard Worker 4595*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_imm_st1x3(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C, <4 x i16> %D) nounwind { 4596*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_st1x3: 4597*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4h { v0, v1, v2 }, [x0], #24 4598*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, <4 x i16> %D, i16* %A) 4599*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 12 4600*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 4601*9880d681SAndroid Build Coastguard Worker} 4602*9880d681SAndroid Build Coastguard Worker 4603*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_reg_st1x3(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C, <4 x i16> %D, i64 %inc) nounwind { 4604*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_st1x3: 4605*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4h { v0, v1, v2 }, [x0], x{{[0-9]+}} 4606*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, <4 x i16> %D, i16* %A) 4607*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 4608*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 4609*9880d681SAndroid Build Coastguard Worker} 4610*9880d681SAndroid Build Coastguard Worker 4611*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x3.v4i16.p0i16(<4 x i16>, <4 x i16>, <4 x i16>, i16*) 4612*9880d681SAndroid Build Coastguard Worker 4613*9880d681SAndroid Build Coastguard Worker 4614*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_imm_st1x3(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C, <4 x i32> %D) nounwind { 4615*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_st1x3: 4616*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4s { v0, v1, v2 }, [x0], #48 4617*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, <4 x i32> %D, i32* %A) 4618*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 12 4619*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 4620*9880d681SAndroid Build Coastguard Worker} 4621*9880d681SAndroid Build Coastguard Worker 4622*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_reg_st1x3(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C, <4 x i32> %D, i64 %inc) nounwind { 4623*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_st1x3: 4624*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4s { v0, v1, v2 }, [x0], x{{[0-9]+}} 4625*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, <4 x i32> %D, i32* %A) 4626*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 4627*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 4628*9880d681SAndroid Build Coastguard Worker} 4629*9880d681SAndroid Build Coastguard Worker 4630*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x3.v4i32.p0i32(<4 x i32>, <4 x i32>, <4 x i32>, i32*) 4631*9880d681SAndroid Build Coastguard Worker 4632*9880d681SAndroid Build Coastguard Worker 4633*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_imm_st1x3(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C, <2 x i32> %D) nounwind { 4634*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_st1x3: 4635*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2s { v0, v1, v2 }, [x0], #24 4636*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, <2 x i32> %D, i32* %A) 4637*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 6 4638*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 4639*9880d681SAndroid Build Coastguard Worker} 4640*9880d681SAndroid Build Coastguard Worker 4641*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_reg_st1x3(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C, <2 x i32> %D, i64 %inc) nounwind { 4642*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_st1x3: 4643*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2s { v0, v1, v2 }, [x0], x{{[0-9]+}} 4644*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, <2 x i32> %D, i32* %A) 4645*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 4646*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 4647*9880d681SAndroid Build Coastguard Worker} 4648*9880d681SAndroid Build Coastguard Worker 4649*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x3.v2i32.p0i32(<2 x i32>, <2 x i32>, <2 x i32>, i32*) 4650*9880d681SAndroid Build Coastguard Worker 4651*9880d681SAndroid Build Coastguard Worker 4652*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_imm_st1x3(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C, <2 x i64> %D) nounwind { 4653*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_st1x3: 4654*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2d { v0, v1, v2 }, [x0], #48 4655*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, <2 x i64> %D, i64* %A) 4656*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 6 4657*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 4658*9880d681SAndroid Build Coastguard Worker} 4659*9880d681SAndroid Build Coastguard Worker 4660*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_reg_st1x3(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C, <2 x i64> %D, i64 %inc) nounwind { 4661*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_st1x3: 4662*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2d { v0, v1, v2 }, [x0], x{{[0-9]+}} 4663*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, <2 x i64> %D, i64* %A) 4664*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 4665*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 4666*9880d681SAndroid Build Coastguard Worker} 4667*9880d681SAndroid Build Coastguard Worker 4668*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x3.v2i64.p0i64(<2 x i64>, <2 x i64>, <2 x i64>, i64*) 4669*9880d681SAndroid Build Coastguard Worker 4670*9880d681SAndroid Build Coastguard Worker 4671*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_imm_st1x3(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C, <1 x i64> %D) nounwind { 4672*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_st1x3: 4673*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1, v2 }, [x0], #24 4674*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, <1 x i64> %D, i64* %A) 4675*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 3 4676*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 4677*9880d681SAndroid Build Coastguard Worker} 4678*9880d681SAndroid Build Coastguard Worker 4679*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_reg_st1x3(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C, <1 x i64> %D, i64 %inc) nounwind { 4680*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_st1x3: 4681*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1, v2 }, [x0], x{{[0-9]+}} 4682*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, <1 x i64> %D, i64* %A) 4683*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 4684*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 4685*9880d681SAndroid Build Coastguard Worker} 4686*9880d681SAndroid Build Coastguard Worker 4687*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x3.v1i64.p0i64(<1 x i64>, <1 x i64>, <1 x i64>, i64*) 4688*9880d681SAndroid Build Coastguard Worker 4689*9880d681SAndroid Build Coastguard Worker 4690*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_imm_st1x3(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C, <4 x float> %D) nounwind { 4691*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_st1x3: 4692*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4s { v0, v1, v2 }, [x0], #48 4693*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v4f32.p0f32(<4 x float> %B, <4 x float> %C, <4 x float> %D, float* %A) 4694*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 12 4695*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4696*9880d681SAndroid Build Coastguard Worker} 4697*9880d681SAndroid Build Coastguard Worker 4698*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_reg_st1x3(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C, <4 x float> %D, i64 %inc) nounwind { 4699*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_st1x3: 4700*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4s { v0, v1, v2 }, [x0], x{{[0-9]+}} 4701*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v4f32.p0f32(<4 x float> %B, <4 x float> %C, <4 x float> %D, float* %A) 4702*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 4703*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4704*9880d681SAndroid Build Coastguard Worker} 4705*9880d681SAndroid Build Coastguard Worker 4706*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x3.v4f32.p0f32(<4 x float>, <4 x float>, <4 x float>, float*) 4707*9880d681SAndroid Build Coastguard Worker 4708*9880d681SAndroid Build Coastguard Worker 4709*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_imm_st1x3(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C, <2 x float> %D) nounwind { 4710*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_st1x3: 4711*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2s { v0, v1, v2 }, [x0], #24 4712*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v2f32.p0f32(<2 x float> %B, <2 x float> %C, <2 x float> %D, float* %A) 4713*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 6 4714*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4715*9880d681SAndroid Build Coastguard Worker} 4716*9880d681SAndroid Build Coastguard Worker 4717*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_reg_st1x3(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C, <2 x float> %D, i64 %inc) nounwind { 4718*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_st1x3: 4719*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2s { v0, v1, v2 }, [x0], x{{[0-9]+}} 4720*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v2f32.p0f32(<2 x float> %B, <2 x float> %C, <2 x float> %D, float* %A) 4721*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 4722*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4723*9880d681SAndroid Build Coastguard Worker} 4724*9880d681SAndroid Build Coastguard Worker 4725*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x3.v2f32.p0f32(<2 x float>, <2 x float>, <2 x float>, float*) 4726*9880d681SAndroid Build Coastguard Worker 4727*9880d681SAndroid Build Coastguard Worker 4728*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_imm_st1x3(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C, <2 x double> %D) nounwind { 4729*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_st1x3: 4730*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2d { v0, v1, v2 }, [x0], #48 4731*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v2f64.p0f64(<2 x double> %B, <2 x double> %C, <2 x double> %D, double* %A) 4732*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 6 4733*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4734*9880d681SAndroid Build Coastguard Worker} 4735*9880d681SAndroid Build Coastguard Worker 4736*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_reg_st1x3(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C, <2 x double> %D, i64 %inc) nounwind { 4737*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_st1x3: 4738*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2d { v0, v1, v2 }, [x0], x{{[0-9]+}} 4739*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v2f64.p0f64(<2 x double> %B, <2 x double> %C, <2 x double> %D, double* %A) 4740*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 4741*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4742*9880d681SAndroid Build Coastguard Worker} 4743*9880d681SAndroid Build Coastguard Worker 4744*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x3.v2f64.p0f64(<2 x double>, <2 x double>, <2 x double>, double*) 4745*9880d681SAndroid Build Coastguard Worker 4746*9880d681SAndroid Build Coastguard Worker 4747*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_imm_st1x3(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C, <1 x double> %D) nounwind { 4748*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_st1x3: 4749*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1, v2 }, [x0], #24 4750*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v1f64.p0f64(<1 x double> %B, <1 x double> %C, <1 x double> %D, double* %A) 4751*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 3 4752*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4753*9880d681SAndroid Build Coastguard Worker} 4754*9880d681SAndroid Build Coastguard Worker 4755*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_reg_st1x3(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C, <1 x double> %D, i64 %inc) nounwind { 4756*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_st1x3: 4757*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1, v2 }, [x0], x{{[0-9]+}} 4758*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x3.v1f64.p0f64(<1 x double> %B, <1 x double> %C, <1 x double> %D, double* %A) 4759*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 4760*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4761*9880d681SAndroid Build Coastguard Worker} 4762*9880d681SAndroid Build Coastguard Worker 4763*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x3.v1f64.p0f64(<1 x double>, <1 x double>, <1 x double>, double*) 4764*9880d681SAndroid Build Coastguard Worker 4765*9880d681SAndroid Build Coastguard Worker 4766*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_imm_st1x4(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, <16 x i8> %D, <16 x i8> %E) nounwind { 4767*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_st1x4: 4768*9880d681SAndroid Build Coastguard Worker;CHECK: st1.16b { v0, v1, v2, v3 }, [x0], #64 4769*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, <16 x i8> %D, <16 x i8> %E, i8* %A) 4770*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 64 4771*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 4772*9880d681SAndroid Build Coastguard Worker} 4773*9880d681SAndroid Build Coastguard Worker 4774*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_reg_st1x4(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, <16 x i8> %D, <16 x i8> %E, i64 %inc) nounwind { 4775*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_st1x4: 4776*9880d681SAndroid Build Coastguard Worker;CHECK: st1.16b { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4777*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, <16 x i8> %D, <16 x i8> %E, i8* %A) 4778*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 4779*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 4780*9880d681SAndroid Build Coastguard Worker} 4781*9880d681SAndroid Build Coastguard Worker 4782*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x4.v16i8.p0i8(<16 x i8>, <16 x i8>, <16 x i8>, <16 x i8>, i8*) 4783*9880d681SAndroid Build Coastguard Worker 4784*9880d681SAndroid Build Coastguard Worker 4785*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_imm_st1x4(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C, <8 x i8> %D, <8 x i8> %E) nounwind { 4786*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_st1x4: 4787*9880d681SAndroid Build Coastguard Worker;CHECK: st1.8b { v0, v1, v2, v3 }, [x0], #32 4788*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, <8 x i8> %D, <8 x i8> %E, i8* %A) 4789*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 32 4790*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 4791*9880d681SAndroid Build Coastguard Worker} 4792*9880d681SAndroid Build Coastguard Worker 4793*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_reg_st1x4(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C, <8 x i8> %D, <8 x i8> %E, i64 %inc) nounwind { 4794*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_st1x4: 4795*9880d681SAndroid Build Coastguard Worker;CHECK: st1.8b { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4796*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, <8 x i8> %D, <8 x i8> %E, i8* %A) 4797*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 4798*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 4799*9880d681SAndroid Build Coastguard Worker} 4800*9880d681SAndroid Build Coastguard Worker 4801*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x4.v8i8.p0i8(<8 x i8>, <8 x i8>, <8 x i8>, <8 x i8>, i8*) 4802*9880d681SAndroid Build Coastguard Worker 4803*9880d681SAndroid Build Coastguard Worker 4804*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_imm_st1x4(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C, <8 x i16> %D, <8 x i16> %E) nounwind { 4805*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_st1x4: 4806*9880d681SAndroid Build Coastguard Worker;CHECK: st1.8h { v0, v1, v2, v3 }, [x0], #64 4807*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, <8 x i16> %D, <8 x i16> %E, i16* %A) 4808*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 32 4809*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 4810*9880d681SAndroid Build Coastguard Worker} 4811*9880d681SAndroid Build Coastguard Worker 4812*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_reg_st1x4(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C, <8 x i16> %D, <8 x i16> %E, i64 %inc) nounwind { 4813*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_st1x4: 4814*9880d681SAndroid Build Coastguard Worker;CHECK: st1.8h { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4815*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, <8 x i16> %D, <8 x i16> %E, i16* %A) 4816*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 4817*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 4818*9880d681SAndroid Build Coastguard Worker} 4819*9880d681SAndroid Build Coastguard Worker 4820*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x4.v8i16.p0i16(<8 x i16>, <8 x i16>, <8 x i16>, <8 x i16>, i16*) 4821*9880d681SAndroid Build Coastguard Worker 4822*9880d681SAndroid Build Coastguard Worker 4823*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_imm_st1x4(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C, <4 x i16> %D, <4 x i16> %E) nounwind { 4824*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_st1x4: 4825*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4h { v0, v1, v2, v3 }, [x0], #32 4826*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, <4 x i16> %D, <4 x i16> %E, i16* %A) 4827*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 16 4828*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 4829*9880d681SAndroid Build Coastguard Worker} 4830*9880d681SAndroid Build Coastguard Worker 4831*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_reg_st1x4(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C, <4 x i16> %D, <4 x i16> %E, i64 %inc) nounwind { 4832*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_st1x4: 4833*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4h { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4834*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, <4 x i16> %D, <4 x i16> %E, i16* %A) 4835*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 4836*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 4837*9880d681SAndroid Build Coastguard Worker} 4838*9880d681SAndroid Build Coastguard Worker 4839*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x4.v4i16.p0i16(<4 x i16>, <4 x i16>, <4 x i16>,<4 x i16>, i16*) 4840*9880d681SAndroid Build Coastguard Worker 4841*9880d681SAndroid Build Coastguard Worker 4842*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_imm_st1x4(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C, <4 x i32> %D, <4 x i32> %E) nounwind { 4843*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_st1x4: 4844*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4s { v0, v1, v2, v3 }, [x0], #64 4845*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, <4 x i32> %D, <4 x i32> %E, i32* %A) 4846*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 16 4847*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 4848*9880d681SAndroid Build Coastguard Worker} 4849*9880d681SAndroid Build Coastguard Worker 4850*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_reg_st1x4(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C, <4 x i32> %D, <4 x i32> %E, i64 %inc) nounwind { 4851*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_st1x4: 4852*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4853*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, <4 x i32> %D, <4 x i32> %E, i32* %A) 4854*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 4855*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 4856*9880d681SAndroid Build Coastguard Worker} 4857*9880d681SAndroid Build Coastguard Worker 4858*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x4.v4i32.p0i32(<4 x i32>, <4 x i32>, <4 x i32>,<4 x i32>, i32*) 4859*9880d681SAndroid Build Coastguard Worker 4860*9880d681SAndroid Build Coastguard Worker 4861*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_imm_st1x4(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C, <2 x i32> %D, <2 x i32> %E) nounwind { 4862*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_st1x4: 4863*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2s { v0, v1, v2, v3 }, [x0], #32 4864*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, <2 x i32> %D, <2 x i32> %E, i32* %A) 4865*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 8 4866*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 4867*9880d681SAndroid Build Coastguard Worker} 4868*9880d681SAndroid Build Coastguard Worker 4869*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_reg_st1x4(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C, <2 x i32> %D, <2 x i32> %E, i64 %inc) nounwind { 4870*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_st1x4: 4871*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4872*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, <2 x i32> %D, <2 x i32> %E, i32* %A) 4873*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 4874*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 4875*9880d681SAndroid Build Coastguard Worker} 4876*9880d681SAndroid Build Coastguard Worker 4877*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x4.v2i32.p0i32(<2 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, i32*) 4878*9880d681SAndroid Build Coastguard Worker 4879*9880d681SAndroid Build Coastguard Worker 4880*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_imm_st1x4(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C, <2 x i64> %D, <2 x i64> %E) nounwind { 4881*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_st1x4: 4882*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2d { v0, v1, v2, v3 }, [x0], #64 4883*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, <2 x i64> %D, <2 x i64> %E, i64* %A) 4884*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 8 4885*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 4886*9880d681SAndroid Build Coastguard Worker} 4887*9880d681SAndroid Build Coastguard Worker 4888*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_reg_st1x4(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C, <2 x i64> %D, <2 x i64> %E, i64 %inc) nounwind { 4889*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_st1x4: 4890*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4891*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, <2 x i64> %D, <2 x i64> %E, i64* %A) 4892*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 4893*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 4894*9880d681SAndroid Build Coastguard Worker} 4895*9880d681SAndroid Build Coastguard Worker 4896*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x4.v2i64.p0i64(<2 x i64>, <2 x i64>, <2 x i64>,<2 x i64>, i64*) 4897*9880d681SAndroid Build Coastguard Worker 4898*9880d681SAndroid Build Coastguard Worker 4899*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_imm_st1x4(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C, <1 x i64> %D, <1 x i64> %E) nounwind { 4900*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_st1x4: 4901*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1, v2, v3 }, [x0], #32 4902*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, <1 x i64> %D, <1 x i64> %E, i64* %A) 4903*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 4 4904*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 4905*9880d681SAndroid Build Coastguard Worker} 4906*9880d681SAndroid Build Coastguard Worker 4907*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_reg_st1x4(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C, <1 x i64> %D, <1 x i64> %E, i64 %inc) nounwind { 4908*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_st1x4: 4909*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4910*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, <1 x i64> %D, <1 x i64> %E, i64* %A) 4911*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 4912*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 4913*9880d681SAndroid Build Coastguard Worker} 4914*9880d681SAndroid Build Coastguard Worker 4915*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x4.v1i64.p0i64(<1 x i64>, <1 x i64>, <1 x i64>,<1 x i64>, i64*) 4916*9880d681SAndroid Build Coastguard Worker 4917*9880d681SAndroid Build Coastguard Worker 4918*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_imm_st1x4(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C, <4 x float> %D, <4 x float> %E) nounwind { 4919*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_st1x4: 4920*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4s { v0, v1, v2, v3 }, [x0], #64 4921*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v4f32.p0f32(<4 x float> %B, <4 x float> %C, <4 x float> %D, <4 x float> %E, float* %A) 4922*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 16 4923*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4924*9880d681SAndroid Build Coastguard Worker} 4925*9880d681SAndroid Build Coastguard Worker 4926*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_reg_st1x4(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C, <4 x float> %D, <4 x float> %E, i64 %inc) nounwind { 4927*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_st1x4: 4928*9880d681SAndroid Build Coastguard Worker;CHECK: st1.4s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4929*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v4f32.p0f32(<4 x float> %B, <4 x float> %C, <4 x float> %D, <4 x float> %E, float* %A) 4930*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 4931*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4932*9880d681SAndroid Build Coastguard Worker} 4933*9880d681SAndroid Build Coastguard Worker 4934*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x4.v4f32.p0f32(<4 x float>, <4 x float>, <4 x float>, <4 x float>, float*) 4935*9880d681SAndroid Build Coastguard Worker 4936*9880d681SAndroid Build Coastguard Worker 4937*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_imm_st1x4(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C, <2 x float> %D, <2 x float> %E) nounwind { 4938*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_st1x4: 4939*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2s { v0, v1, v2, v3 }, [x0], #32 4940*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v2f32.p0f32(<2 x float> %B, <2 x float> %C, <2 x float> %D, <2 x float> %E, float* %A) 4941*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 8 4942*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4943*9880d681SAndroid Build Coastguard Worker} 4944*9880d681SAndroid Build Coastguard Worker 4945*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_reg_st1x4(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C, <2 x float> %D, <2 x float> %E, i64 %inc) nounwind { 4946*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_st1x4: 4947*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2s { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4948*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v2f32.p0f32(<2 x float> %B, <2 x float> %C, <2 x float> %D, <2 x float> %E, float* %A) 4949*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 4950*9880d681SAndroid Build Coastguard Worker ret float* %tmp 4951*9880d681SAndroid Build Coastguard Worker} 4952*9880d681SAndroid Build Coastguard Worker 4953*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x4.v2f32.p0f32(<2 x float>, <2 x float>, <2 x float>, <2 x float>, float*) 4954*9880d681SAndroid Build Coastguard Worker 4955*9880d681SAndroid Build Coastguard Worker 4956*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_imm_st1x4(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C, <2 x double> %D, <2 x double> %E) nounwind { 4957*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_st1x4: 4958*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2d { v0, v1, v2, v3 }, [x0], #64 4959*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v2f64.p0f64(<2 x double> %B, <2 x double> %C, <2 x double> %D, <2 x double> %E, double* %A) 4960*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 8 4961*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4962*9880d681SAndroid Build Coastguard Worker} 4963*9880d681SAndroid Build Coastguard Worker 4964*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_reg_st1x4(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C, <2 x double> %D, <2 x double> %E, i64 %inc) nounwind { 4965*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_st1x4: 4966*9880d681SAndroid Build Coastguard Worker;CHECK: st1.2d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4967*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v2f64.p0f64(<2 x double> %B, <2 x double> %C, <2 x double> %D, <2 x double> %E, double* %A) 4968*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 4969*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4970*9880d681SAndroid Build Coastguard Worker} 4971*9880d681SAndroid Build Coastguard Worker 4972*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x4.v2f64.p0f64(<2 x double>, <2 x double>, <2 x double>,<2 x double>, double*) 4973*9880d681SAndroid Build Coastguard Worker 4974*9880d681SAndroid Build Coastguard Worker 4975*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_imm_st1x4(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C, <1 x double> %D, <1 x double> %E) nounwind { 4976*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_st1x4: 4977*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1, v2, v3 }, [x0], #32 4978*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v1f64.p0f64(<1 x double> %B, <1 x double> %C, <1 x double> %D, <1 x double> %E, double* %A) 4979*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 4 4980*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4981*9880d681SAndroid Build Coastguard Worker} 4982*9880d681SAndroid Build Coastguard Worker 4983*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_reg_st1x4(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C, <1 x double> %D, <1 x double> %E, i64 %inc) nounwind { 4984*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_st1x4: 4985*9880d681SAndroid Build Coastguard Worker;CHECK: st1.1d { v0, v1, v2, v3 }, [x0], x{{[0-9]+}} 4986*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st1x4.v1f64.p0f64(<1 x double> %B, <1 x double> %C, <1 x double> %D, <1 x double> %E, double* %A) 4987*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 4988*9880d681SAndroid Build Coastguard Worker ret double* %tmp 4989*9880d681SAndroid Build Coastguard Worker} 4990*9880d681SAndroid Build Coastguard Worker 4991*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st1x4.v1f64.p0f64(<1 x double>, <1 x double>, <1 x double>, <1 x double>, double*) 4992*9880d681SAndroid Build Coastguard Worker 4993*9880d681SAndroid Build Coastguard Worker 4994*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_imm_st2lanelane(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C) { 4995*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lanelane.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, i64 0, i64 1, i8* %A) 4996*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 2 4997*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 4998*9880d681SAndroid Build Coastguard Worker} 4999*9880d681SAndroid Build Coastguard Worker 5000*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_reg_st2lanelane(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, i64 %inc) { 5001*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lanelane.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, i64 0, i64 1, i8* %A) 5002*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 5003*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 5004*9880d681SAndroid Build Coastguard Worker} 5005*9880d681SAndroid Build Coastguard Worker 5006*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2lanelane.v16i8.p0i8(<16 x i8>, <16 x i8>, i64, i64, i8*) nounwind readnone 5007*9880d681SAndroid Build Coastguard Worker 5008*9880d681SAndroid Build Coastguard Worker 5009*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_imm_st2lane(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C) nounwind { 5010*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_st2lane: 5011*9880d681SAndroid Build Coastguard Worker;CHECK: st2.b { v0, v1 }[0], [x0], #2 5012*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, i64 0, i8* %A) 5013*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 2 5014*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 5015*9880d681SAndroid Build Coastguard Worker} 5016*9880d681SAndroid Build Coastguard Worker 5017*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_reg_st2lane(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, i64 %inc) nounwind { 5018*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_st2lane: 5019*9880d681SAndroid Build Coastguard Worker;CHECK: st2.b { v0, v1 }[0], [x0], x{{[0-9]+}} 5020*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, i64 0, i8* %A) 5021*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 5022*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 5023*9880d681SAndroid Build Coastguard Worker} 5024*9880d681SAndroid Build Coastguard Worker 5025*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2lane.v16i8.p0i8(<16 x i8>, <16 x i8>, i64, i8*) 5026*9880d681SAndroid Build Coastguard Worker 5027*9880d681SAndroid Build Coastguard Worker 5028*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_imm_st2lane(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C) nounwind { 5029*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_st2lane: 5030*9880d681SAndroid Build Coastguard Worker;CHECK: st2.b { v0, v1 }[0], [x0], #2 5031*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, i64 0, i8* %A) 5032*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 2 5033*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 5034*9880d681SAndroid Build Coastguard Worker} 5035*9880d681SAndroid Build Coastguard Worker 5036*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_reg_st2lane(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C, i64 %inc) nounwind { 5037*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_st2lane: 5038*9880d681SAndroid Build Coastguard Worker;CHECK: st2.b { v0, v1 }[0], [x0], x{{[0-9]+}} 5039*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, i64 0, i8* %A) 5040*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 5041*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 5042*9880d681SAndroid Build Coastguard Worker} 5043*9880d681SAndroid Build Coastguard Worker 5044*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2lane.v8i8.p0i8(<8 x i8>, <8 x i8>, i64, i8*) 5045*9880d681SAndroid Build Coastguard Worker 5046*9880d681SAndroid Build Coastguard Worker 5047*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_imm_st2lane(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C) nounwind { 5048*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_st2lane: 5049*9880d681SAndroid Build Coastguard Worker;CHECK: st2.h { v0, v1 }[0], [x0], #4 5050*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, i64 0, i16* %A) 5051*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 2 5052*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 5053*9880d681SAndroid Build Coastguard Worker} 5054*9880d681SAndroid Build Coastguard Worker 5055*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_reg_st2lane(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C, i64 %inc) nounwind { 5056*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_st2lane: 5057*9880d681SAndroid Build Coastguard Worker;CHECK: st2.h { v0, v1 }[0], [x0], x{{[0-9]+}} 5058*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, i64 0, i16* %A) 5059*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 5060*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 5061*9880d681SAndroid Build Coastguard Worker} 5062*9880d681SAndroid Build Coastguard Worker 5063*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2lane.v8i16.p0i16(<8 x i16>, <8 x i16>, i64, i16*) 5064*9880d681SAndroid Build Coastguard Worker 5065*9880d681SAndroid Build Coastguard Worker 5066*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_imm_st2lane(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C) nounwind { 5067*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_st2lane: 5068*9880d681SAndroid Build Coastguard Worker;CHECK: st2.h { v0, v1 }[0], [x0], #4 5069*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, i64 0, i16* %A) 5070*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 2 5071*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 5072*9880d681SAndroid Build Coastguard Worker} 5073*9880d681SAndroid Build Coastguard Worker 5074*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_reg_st2lane(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C, i64 %inc) nounwind { 5075*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_st2lane: 5076*9880d681SAndroid Build Coastguard Worker;CHECK: st2.h { v0, v1 }[0], [x0], x{{[0-9]+}} 5077*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, i64 0, i16* %A) 5078*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 5079*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 5080*9880d681SAndroid Build Coastguard Worker} 5081*9880d681SAndroid Build Coastguard Worker 5082*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2lane.v4i16.p0i16(<4 x i16>, <4 x i16>, i64, i16*) 5083*9880d681SAndroid Build Coastguard Worker 5084*9880d681SAndroid Build Coastguard Worker 5085*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_imm_st2lane(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C) nounwind { 5086*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_st2lane: 5087*9880d681SAndroid Build Coastguard Worker;CHECK: st2.s { v0, v1 }[0], [x0], #8 5088*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, i64 0, i32* %A) 5089*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 2 5090*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 5091*9880d681SAndroid Build Coastguard Worker} 5092*9880d681SAndroid Build Coastguard Worker 5093*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_reg_st2lane(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C, i64 %inc) nounwind { 5094*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_st2lane: 5095*9880d681SAndroid Build Coastguard Worker;CHECK: st2.s { v0, v1 }[0], [x0], x{{[0-9]+}} 5096*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, i64 0, i32* %A) 5097*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 5098*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 5099*9880d681SAndroid Build Coastguard Worker} 5100*9880d681SAndroid Build Coastguard Worker 5101*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2lane.v4i32.p0i32(<4 x i32>, <4 x i32>, i64, i32*) 5102*9880d681SAndroid Build Coastguard Worker 5103*9880d681SAndroid Build Coastguard Worker 5104*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_imm_st2lane(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C) nounwind { 5105*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_st2lane: 5106*9880d681SAndroid Build Coastguard Worker;CHECK: st2.s { v0, v1 }[0], [x0], #8 5107*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, i64 0, i32* %A) 5108*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 2 5109*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 5110*9880d681SAndroid Build Coastguard Worker} 5111*9880d681SAndroid Build Coastguard Worker 5112*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_reg_st2lane(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C, i64 %inc) nounwind { 5113*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_st2lane: 5114*9880d681SAndroid Build Coastguard Worker;CHECK: st2.s { v0, v1 }[0], [x0], x{{[0-9]+}} 5115*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, i64 0, i32* %A) 5116*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 5117*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 5118*9880d681SAndroid Build Coastguard Worker} 5119*9880d681SAndroid Build Coastguard Worker 5120*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2lane.v2i32.p0i32(<2 x i32>, <2 x i32>, i64, i32*) 5121*9880d681SAndroid Build Coastguard Worker 5122*9880d681SAndroid Build Coastguard Worker 5123*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_imm_st2lane(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C) nounwind { 5124*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_st2lane: 5125*9880d681SAndroid Build Coastguard Worker;CHECK: st2.d { v0, v1 }[0], [x0], #16 5126*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, i64 0, i64* %A) 5127*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 2 5128*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 5129*9880d681SAndroid Build Coastguard Worker} 5130*9880d681SAndroid Build Coastguard Worker 5131*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_reg_st2lane(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C, i64 %inc) nounwind { 5132*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_st2lane: 5133*9880d681SAndroid Build Coastguard Worker;CHECK: st2.d { v0, v1 }[0], [x0], x{{[0-9]+}} 5134*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, i64 0, i64* %A) 5135*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 5136*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 5137*9880d681SAndroid Build Coastguard Worker} 5138*9880d681SAndroid Build Coastguard Worker 5139*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2lane.v2i64.p0i64(<2 x i64>, <2 x i64>, i64, i64*) 5140*9880d681SAndroid Build Coastguard Worker 5141*9880d681SAndroid Build Coastguard Worker 5142*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_imm_st2lane(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C) nounwind { 5143*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_st2lane: 5144*9880d681SAndroid Build Coastguard Worker;CHECK: st2.d { v0, v1 }[0], [x0], #16 5145*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, i64 0, i64* %A) 5146*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 2 5147*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 5148*9880d681SAndroid Build Coastguard Worker} 5149*9880d681SAndroid Build Coastguard Worker 5150*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_reg_st2lane(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C, i64 %inc) nounwind { 5151*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_st2lane: 5152*9880d681SAndroid Build Coastguard Worker;CHECK: st2.d { v0, v1 }[0], [x0], x{{[0-9]+}} 5153*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, i64 0, i64* %A) 5154*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 5155*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 5156*9880d681SAndroid Build Coastguard Worker} 5157*9880d681SAndroid Build Coastguard Worker 5158*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2lane.v1i64.p0i64(<1 x i64>, <1 x i64>, i64, i64*) 5159*9880d681SAndroid Build Coastguard Worker 5160*9880d681SAndroid Build Coastguard Worker 5161*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_imm_st2lane(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C) nounwind { 5162*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_st2lane: 5163*9880d681SAndroid Build Coastguard Worker;CHECK: st2.s { v0, v1 }[0], [x0], #8 5164*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v4f32.p0f32(<4 x float> %B, <4 x float> %C, i64 0, float* %A) 5165*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 2 5166*9880d681SAndroid Build Coastguard Worker ret float* %tmp 5167*9880d681SAndroid Build Coastguard Worker} 5168*9880d681SAndroid Build Coastguard Worker 5169*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_reg_st2lane(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C, i64 %inc) nounwind { 5170*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_st2lane: 5171*9880d681SAndroid Build Coastguard Worker;CHECK: st2.s { v0, v1 }[0], [x0], x{{[0-9]+}} 5172*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v4f32.p0f32(<4 x float> %B, <4 x float> %C, i64 0, float* %A) 5173*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 5174*9880d681SAndroid Build Coastguard Worker ret float* %tmp 5175*9880d681SAndroid Build Coastguard Worker} 5176*9880d681SAndroid Build Coastguard Worker 5177*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2lane.v4f32.p0f32(<4 x float>, <4 x float>, i64, float*) 5178*9880d681SAndroid Build Coastguard Worker 5179*9880d681SAndroid Build Coastguard Worker 5180*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_imm_st2lane(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C) nounwind { 5181*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_st2lane: 5182*9880d681SAndroid Build Coastguard Worker;CHECK: st2.s { v0, v1 }[0], [x0], #8 5183*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v2f32.p0f32(<2 x float> %B, <2 x float> %C, i64 0, float* %A) 5184*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 2 5185*9880d681SAndroid Build Coastguard Worker ret float* %tmp 5186*9880d681SAndroid Build Coastguard Worker} 5187*9880d681SAndroid Build Coastguard Worker 5188*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_reg_st2lane(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C, i64 %inc) nounwind { 5189*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_st2lane: 5190*9880d681SAndroid Build Coastguard Worker;CHECK: st2.s { v0, v1 }[0], [x0], x{{[0-9]+}} 5191*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v2f32.p0f32(<2 x float> %B, <2 x float> %C, i64 0, float* %A) 5192*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 5193*9880d681SAndroid Build Coastguard Worker ret float* %tmp 5194*9880d681SAndroid Build Coastguard Worker} 5195*9880d681SAndroid Build Coastguard Worker 5196*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2lane.v2f32.p0f32(<2 x float>, <2 x float>, i64, float*) 5197*9880d681SAndroid Build Coastguard Worker 5198*9880d681SAndroid Build Coastguard Worker 5199*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_imm_st2lane(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C) nounwind { 5200*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_st2lane: 5201*9880d681SAndroid Build Coastguard Worker;CHECK: st2.d { v0, v1 }[0], [x0], #16 5202*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v2f64.p0f64(<2 x double> %B, <2 x double> %C, i64 0, double* %A) 5203*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 2 5204*9880d681SAndroid Build Coastguard Worker ret double* %tmp 5205*9880d681SAndroid Build Coastguard Worker} 5206*9880d681SAndroid Build Coastguard Worker 5207*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_reg_st2lane(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C, i64 %inc) nounwind { 5208*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_st2lane: 5209*9880d681SAndroid Build Coastguard Worker;CHECK: st2.d { v0, v1 }[0], [x0], x{{[0-9]+}} 5210*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v2f64.p0f64(<2 x double> %B, <2 x double> %C, i64 0, double* %A) 5211*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 5212*9880d681SAndroid Build Coastguard Worker ret double* %tmp 5213*9880d681SAndroid Build Coastguard Worker} 5214*9880d681SAndroid Build Coastguard Worker 5215*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2lane.v2f64.p0f64(<2 x double>, <2 x double>, i64, double*) 5216*9880d681SAndroid Build Coastguard Worker 5217*9880d681SAndroid Build Coastguard Worker 5218*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_imm_st2lane(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C) nounwind { 5219*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_st2lane: 5220*9880d681SAndroid Build Coastguard Worker;CHECK: st2.d { v0, v1 }[0], [x0], #16 5221*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v1f64.p0f64(<1 x double> %B, <1 x double> %C, i64 0, double* %A) 5222*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 2 5223*9880d681SAndroid Build Coastguard Worker ret double* %tmp 5224*9880d681SAndroid Build Coastguard Worker} 5225*9880d681SAndroid Build Coastguard Worker 5226*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_reg_st2lane(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C, i64 %inc) nounwind { 5227*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_st2lane: 5228*9880d681SAndroid Build Coastguard Worker;CHECK: st2.d { v0, v1 }[0], [x0], x{{[0-9]+}} 5229*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st2lane.v1f64.p0f64(<1 x double> %B, <1 x double> %C, i64 0, double* %A) 5230*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 5231*9880d681SAndroid Build Coastguard Worker ret double* %tmp 5232*9880d681SAndroid Build Coastguard Worker} 5233*9880d681SAndroid Build Coastguard Worker 5234*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st2lane.v1f64.p0f64(<1 x double>, <1 x double>, i64, double*) 5235*9880d681SAndroid Build Coastguard Worker 5236*9880d681SAndroid Build Coastguard Worker 5237*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_imm_st3lane(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, <16 x i8> %D) nounwind { 5238*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_st3lane: 5239*9880d681SAndroid Build Coastguard Worker;CHECK: st3.b { v0, v1, v2 }[0], [x0], #3 5240*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, <16 x i8> %D, i64 0, i8* %A) 5241*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 3 5242*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 5243*9880d681SAndroid Build Coastguard Worker} 5244*9880d681SAndroid Build Coastguard Worker 5245*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_reg_st3lane(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, <16 x i8> %D, i64 %inc) nounwind { 5246*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_st3lane: 5247*9880d681SAndroid Build Coastguard Worker;CHECK: st3.b { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 5248*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, <16 x i8> %D, i64 0, i8* %A) 5249*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 5250*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 5251*9880d681SAndroid Build Coastguard Worker} 5252*9880d681SAndroid Build Coastguard Worker 5253*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3lane.v16i8.p0i8(<16 x i8>, <16 x i8>, <16 x i8>, i64, i8*) 5254*9880d681SAndroid Build Coastguard Worker 5255*9880d681SAndroid Build Coastguard Worker 5256*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_imm_st3lane(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C, <8 x i8> %D) nounwind { 5257*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_st3lane: 5258*9880d681SAndroid Build Coastguard Worker;CHECK: st3.b { v0, v1, v2 }[0], [x0], #3 5259*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, <8 x i8> %D, i64 0, i8* %A) 5260*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 3 5261*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 5262*9880d681SAndroid Build Coastguard Worker} 5263*9880d681SAndroid Build Coastguard Worker 5264*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_reg_st3lane(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C, <8 x i8> %D, i64 %inc) nounwind { 5265*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_st3lane: 5266*9880d681SAndroid Build Coastguard Worker;CHECK: st3.b { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 5267*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, <8 x i8> %D, i64 0, i8* %A) 5268*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 5269*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 5270*9880d681SAndroid Build Coastguard Worker} 5271*9880d681SAndroid Build Coastguard Worker 5272*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3lane.v8i8.p0i8(<8 x i8>, <8 x i8>, <8 x i8>, i64, i8*) 5273*9880d681SAndroid Build Coastguard Worker 5274*9880d681SAndroid Build Coastguard Worker 5275*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_imm_st3lane(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C, <8 x i16> %D) nounwind { 5276*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_st3lane: 5277*9880d681SAndroid Build Coastguard Worker;CHECK: st3.h { v0, v1, v2 }[0], [x0], #6 5278*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, <8 x i16> %D, i64 0, i16* %A) 5279*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 3 5280*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 5281*9880d681SAndroid Build Coastguard Worker} 5282*9880d681SAndroid Build Coastguard Worker 5283*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_reg_st3lane(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C, <8 x i16> %D, i64 %inc) nounwind { 5284*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_st3lane: 5285*9880d681SAndroid Build Coastguard Worker;CHECK: st3.h { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 5286*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, <8 x i16> %D, i64 0, i16* %A) 5287*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 5288*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 5289*9880d681SAndroid Build Coastguard Worker} 5290*9880d681SAndroid Build Coastguard Worker 5291*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3lane.v8i16.p0i16(<8 x i16>, <8 x i16>, <8 x i16>, i64, i16*) 5292*9880d681SAndroid Build Coastguard Worker 5293*9880d681SAndroid Build Coastguard Worker 5294*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_imm_st3lane(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C, <4 x i16> %D) nounwind { 5295*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_st3lane: 5296*9880d681SAndroid Build Coastguard Worker;CHECK: st3.h { v0, v1, v2 }[0], [x0], #6 5297*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, <4 x i16> %D, i64 0, i16* %A) 5298*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 3 5299*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 5300*9880d681SAndroid Build Coastguard Worker} 5301*9880d681SAndroid Build Coastguard Worker 5302*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_reg_st3lane(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C, <4 x i16> %D, i64 %inc) nounwind { 5303*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_st3lane: 5304*9880d681SAndroid Build Coastguard Worker;CHECK: st3.h { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 5305*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, <4 x i16> %D, i64 0, i16* %A) 5306*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 5307*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 5308*9880d681SAndroid Build Coastguard Worker} 5309*9880d681SAndroid Build Coastguard Worker 5310*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3lane.v4i16.p0i16(<4 x i16>, <4 x i16>, <4 x i16>, i64, i16*) 5311*9880d681SAndroid Build Coastguard Worker 5312*9880d681SAndroid Build Coastguard Worker 5313*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_imm_st3lane(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C, <4 x i32> %D) nounwind { 5314*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_st3lane: 5315*9880d681SAndroid Build Coastguard Worker;CHECK: st3.s { v0, v1, v2 }[0], [x0], #12 5316*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, <4 x i32> %D, i64 0, i32* %A) 5317*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 3 5318*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 5319*9880d681SAndroid Build Coastguard Worker} 5320*9880d681SAndroid Build Coastguard Worker 5321*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_reg_st3lane(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C, <4 x i32> %D, i64 %inc) nounwind { 5322*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_st3lane: 5323*9880d681SAndroid Build Coastguard Worker;CHECK: st3.s { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 5324*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, <4 x i32> %D, i64 0, i32* %A) 5325*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 5326*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 5327*9880d681SAndroid Build Coastguard Worker} 5328*9880d681SAndroid Build Coastguard Worker 5329*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3lane.v4i32.p0i32(<4 x i32>, <4 x i32>, <4 x i32>, i64, i32*) 5330*9880d681SAndroid Build Coastguard Worker 5331*9880d681SAndroid Build Coastguard Worker 5332*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_imm_st3lane(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C, <2 x i32> %D) nounwind { 5333*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_st3lane: 5334*9880d681SAndroid Build Coastguard Worker;CHECK: st3.s { v0, v1, v2 }[0], [x0], #12 5335*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, <2 x i32> %D, i64 0, i32* %A) 5336*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 3 5337*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 5338*9880d681SAndroid Build Coastguard Worker} 5339*9880d681SAndroid Build Coastguard Worker 5340*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_reg_st3lane(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C, <2 x i32> %D, i64 %inc) nounwind { 5341*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_st3lane: 5342*9880d681SAndroid Build Coastguard Worker;CHECK: st3.s { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 5343*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, <2 x i32> %D, i64 0, i32* %A) 5344*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 5345*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 5346*9880d681SAndroid Build Coastguard Worker} 5347*9880d681SAndroid Build Coastguard Worker 5348*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3lane.v2i32.p0i32(<2 x i32>, <2 x i32>, <2 x i32>, i64, i32*) 5349*9880d681SAndroid Build Coastguard Worker 5350*9880d681SAndroid Build Coastguard Worker 5351*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_imm_st3lane(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C, <2 x i64> %D) nounwind { 5352*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_st3lane: 5353*9880d681SAndroid Build Coastguard Worker;CHECK: st3.d { v0, v1, v2 }[0], [x0], #24 5354*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, <2 x i64> %D, i64 0, i64* %A) 5355*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 3 5356*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 5357*9880d681SAndroid Build Coastguard Worker} 5358*9880d681SAndroid Build Coastguard Worker 5359*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_reg_st3lane(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C, <2 x i64> %D, i64 %inc) nounwind { 5360*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_st3lane: 5361*9880d681SAndroid Build Coastguard Worker;CHECK: st3.d { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 5362*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, <2 x i64> %D, i64 0, i64* %A) 5363*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 5364*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 5365*9880d681SAndroid Build Coastguard Worker} 5366*9880d681SAndroid Build Coastguard Worker 5367*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3lane.v2i64.p0i64(<2 x i64>, <2 x i64>, <2 x i64>, i64, i64*) 5368*9880d681SAndroid Build Coastguard Worker 5369*9880d681SAndroid Build Coastguard Worker 5370*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_imm_st3lane(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C, <1 x i64> %D) nounwind { 5371*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_st3lane: 5372*9880d681SAndroid Build Coastguard Worker;CHECK: st3.d { v0, v1, v2 }[0], [x0], #24 5373*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, <1 x i64> %D, i64 0, i64* %A) 5374*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 3 5375*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 5376*9880d681SAndroid Build Coastguard Worker} 5377*9880d681SAndroid Build Coastguard Worker 5378*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_reg_st3lane(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C, <1 x i64> %D, i64 %inc) nounwind { 5379*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_st3lane: 5380*9880d681SAndroid Build Coastguard Worker;CHECK: st3.d { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 5381*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, <1 x i64> %D, i64 0, i64* %A) 5382*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 5383*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 5384*9880d681SAndroid Build Coastguard Worker} 5385*9880d681SAndroid Build Coastguard Worker 5386*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3lane.v1i64.p0i64(<1 x i64>, <1 x i64>, <1 x i64>, i64, i64*) 5387*9880d681SAndroid Build Coastguard Worker 5388*9880d681SAndroid Build Coastguard Worker 5389*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_imm_st3lane(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C, <4 x float> %D) nounwind { 5390*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_st3lane: 5391*9880d681SAndroid Build Coastguard Worker;CHECK: st3.s { v0, v1, v2 }[0], [x0], #12 5392*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v4f32.p0f32(<4 x float> %B, <4 x float> %C, <4 x float> %D, i64 0, float* %A) 5393*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 3 5394*9880d681SAndroid Build Coastguard Worker ret float* %tmp 5395*9880d681SAndroid Build Coastguard Worker} 5396*9880d681SAndroid Build Coastguard Worker 5397*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_reg_st3lane(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C, <4 x float> %D, i64 %inc) nounwind { 5398*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_st3lane: 5399*9880d681SAndroid Build Coastguard Worker;CHECK: st3.s { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 5400*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v4f32.p0f32(<4 x float> %B, <4 x float> %C, <4 x float> %D, i64 0, float* %A) 5401*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 5402*9880d681SAndroid Build Coastguard Worker ret float* %tmp 5403*9880d681SAndroid Build Coastguard Worker} 5404*9880d681SAndroid Build Coastguard Worker 5405*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3lane.v4f32.p0f32(<4 x float>, <4 x float>, <4 x float>, i64, float*) 5406*9880d681SAndroid Build Coastguard Worker 5407*9880d681SAndroid Build Coastguard Worker 5408*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_imm_st3lane(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C, <2 x float> %D) nounwind { 5409*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_st3lane: 5410*9880d681SAndroid Build Coastguard Worker;CHECK: st3.s { v0, v1, v2 }[0], [x0], #12 5411*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v2f32.p0f32(<2 x float> %B, <2 x float> %C, <2 x float> %D, i64 0, float* %A) 5412*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 3 5413*9880d681SAndroid Build Coastguard Worker ret float* %tmp 5414*9880d681SAndroid Build Coastguard Worker} 5415*9880d681SAndroid Build Coastguard Worker 5416*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_reg_st3lane(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C, <2 x float> %D, i64 %inc) nounwind { 5417*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_st3lane: 5418*9880d681SAndroid Build Coastguard Worker;CHECK: st3.s { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 5419*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v2f32.p0f32(<2 x float> %B, <2 x float> %C, <2 x float> %D, i64 0, float* %A) 5420*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 5421*9880d681SAndroid Build Coastguard Worker ret float* %tmp 5422*9880d681SAndroid Build Coastguard Worker} 5423*9880d681SAndroid Build Coastguard Worker 5424*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3lane.v2f32.p0f32(<2 x float>, <2 x float>, <2 x float>, i64, float*) 5425*9880d681SAndroid Build Coastguard Worker 5426*9880d681SAndroid Build Coastguard Worker 5427*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_imm_st3lane(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C, <2 x double> %D) nounwind { 5428*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_st3lane: 5429*9880d681SAndroid Build Coastguard Worker;CHECK: st3.d { v0, v1, v2 }[0], [x0], #24 5430*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v2f64.p0f64(<2 x double> %B, <2 x double> %C, <2 x double> %D, i64 0, double* %A) 5431*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 3 5432*9880d681SAndroid Build Coastguard Worker ret double* %tmp 5433*9880d681SAndroid Build Coastguard Worker} 5434*9880d681SAndroid Build Coastguard Worker 5435*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_reg_st3lane(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C, <2 x double> %D, i64 %inc) nounwind { 5436*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_st3lane: 5437*9880d681SAndroid Build Coastguard Worker;CHECK: st3.d { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 5438*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v2f64.p0f64(<2 x double> %B, <2 x double> %C, <2 x double> %D, i64 0, double* %A) 5439*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 5440*9880d681SAndroid Build Coastguard Worker ret double* %tmp 5441*9880d681SAndroid Build Coastguard Worker} 5442*9880d681SAndroid Build Coastguard Worker 5443*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3lane.v2f64.p0f64(<2 x double>, <2 x double>, <2 x double>, i64, double*) 5444*9880d681SAndroid Build Coastguard Worker 5445*9880d681SAndroid Build Coastguard Worker 5446*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_imm_st3lane(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C, <1 x double> %D) nounwind { 5447*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_st3lane: 5448*9880d681SAndroid Build Coastguard Worker;CHECK: st3.d { v0, v1, v2 }[0], [x0], #24 5449*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v1f64.p0f64(<1 x double> %B, <1 x double> %C, <1 x double> %D, i64 0, double* %A) 5450*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 3 5451*9880d681SAndroid Build Coastguard Worker ret double* %tmp 5452*9880d681SAndroid Build Coastguard Worker} 5453*9880d681SAndroid Build Coastguard Worker 5454*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_reg_st3lane(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C, <1 x double> %D, i64 %inc) nounwind { 5455*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_st3lane: 5456*9880d681SAndroid Build Coastguard Worker;CHECK: st3.d { v0, v1, v2 }[0], [x0], x{{[0-9]+}} 5457*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st3lane.v1f64.p0f64(<1 x double> %B, <1 x double> %C, <1 x double> %D, i64 0, double* %A) 5458*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 5459*9880d681SAndroid Build Coastguard Worker ret double* %tmp 5460*9880d681SAndroid Build Coastguard Worker} 5461*9880d681SAndroid Build Coastguard Worker 5462*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st3lane.v1f64.p0f64(<1 x double>, <1 x double>, <1 x double>, i64, double*) 5463*9880d681SAndroid Build Coastguard Worker 5464*9880d681SAndroid Build Coastguard Worker 5465*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_imm_st4lane(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, <16 x i8> %D, <16 x i8> %E) nounwind { 5466*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_imm_st4lane: 5467*9880d681SAndroid Build Coastguard Worker;CHECK: st4.b { v0, v1, v2, v3 }[0], [x0], #4 5468*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, <16 x i8> %D, <16 x i8> %E, i64 0, i8* %A) 5469*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 4 5470*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 5471*9880d681SAndroid Build Coastguard Worker} 5472*9880d681SAndroid Build Coastguard Worker 5473*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v16i8_post_reg_st4lane(i8* %A, i8** %ptr, <16 x i8> %B, <16 x i8> %C, <16 x i8> %D, <16 x i8> %E, i64 %inc) nounwind { 5474*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v16i8_post_reg_st4lane: 5475*9880d681SAndroid Build Coastguard Worker;CHECK: st4.b { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 5476*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v16i8.p0i8(<16 x i8> %B, <16 x i8> %C, <16 x i8> %D, <16 x i8> %E, i64 0, i8* %A) 5477*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 5478*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 5479*9880d681SAndroid Build Coastguard Worker} 5480*9880d681SAndroid Build Coastguard Worker 5481*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4lane.v16i8.p0i8(<16 x i8>, <16 x i8>, <16 x i8>, <16 x i8>, i64, i8*) 5482*9880d681SAndroid Build Coastguard Worker 5483*9880d681SAndroid Build Coastguard Worker 5484*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_imm_st4lane(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C, <8 x i8> %D, <8 x i8> %E) nounwind { 5485*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_imm_st4lane: 5486*9880d681SAndroid Build Coastguard Worker;CHECK: st4.b { v0, v1, v2, v3 }[0], [x0], #4 5487*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, <8 x i8> %D, <8 x i8> %E, i64 0, i8* %A) 5488*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i32 4 5489*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 5490*9880d681SAndroid Build Coastguard Worker} 5491*9880d681SAndroid Build Coastguard Worker 5492*9880d681SAndroid Build Coastguard Workerdefine i8* @test_v8i8_post_reg_st4lane(i8* %A, i8** %ptr, <8 x i8> %B, <8 x i8> %C, <8 x i8> %D, <8 x i8> %E, i64 %inc) nounwind { 5493*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i8_post_reg_st4lane: 5494*9880d681SAndroid Build Coastguard Worker;CHECK: st4.b { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 5495*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v8i8.p0i8(<8 x i8> %B, <8 x i8> %C, <8 x i8> %D, <8 x i8> %E, i64 0, i8* %A) 5496*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i8, i8* %A, i64 %inc 5497*9880d681SAndroid Build Coastguard Worker ret i8* %tmp 5498*9880d681SAndroid Build Coastguard Worker} 5499*9880d681SAndroid Build Coastguard Worker 5500*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4lane.v8i8.p0i8(<8 x i8>, <8 x i8>, <8 x i8>, <8 x i8>, i64, i8*) 5501*9880d681SAndroid Build Coastguard Worker 5502*9880d681SAndroid Build Coastguard Worker 5503*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_imm_st4lane(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C, <8 x i16> %D, <8 x i16> %E) nounwind { 5504*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_imm_st4lane: 5505*9880d681SAndroid Build Coastguard Worker;CHECK: st4.h { v0, v1, v2, v3 }[0], [x0], #8 5506*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, <8 x i16> %D, <8 x i16> %E, i64 0, i16* %A) 5507*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 4 5508*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 5509*9880d681SAndroid Build Coastguard Worker} 5510*9880d681SAndroid Build Coastguard Worker 5511*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v8i16_post_reg_st4lane(i16* %A, i16** %ptr, <8 x i16> %B, <8 x i16> %C, <8 x i16> %D, <8 x i16> %E, i64 %inc) nounwind { 5512*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v8i16_post_reg_st4lane: 5513*9880d681SAndroid Build Coastguard Worker;CHECK: st4.h { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 5514*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v8i16.p0i16(<8 x i16> %B, <8 x i16> %C, <8 x i16> %D, <8 x i16> %E, i64 0, i16* %A) 5515*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 5516*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 5517*9880d681SAndroid Build Coastguard Worker} 5518*9880d681SAndroid Build Coastguard Worker 5519*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4lane.v8i16.p0i16(<8 x i16>, <8 x i16>, <8 x i16>, <8 x i16>, i64, i16*) 5520*9880d681SAndroid Build Coastguard Worker 5521*9880d681SAndroid Build Coastguard Worker 5522*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_imm_st4lane(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C, <4 x i16> %D, <4 x i16> %E) nounwind { 5523*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_imm_st4lane: 5524*9880d681SAndroid Build Coastguard Worker;CHECK: st4.h { v0, v1, v2, v3 }[0], [x0], #8 5525*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, <4 x i16> %D, <4 x i16> %E, i64 0, i16* %A) 5526*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i32 4 5527*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 5528*9880d681SAndroid Build Coastguard Worker} 5529*9880d681SAndroid Build Coastguard Worker 5530*9880d681SAndroid Build Coastguard Workerdefine i16* @test_v4i16_post_reg_st4lane(i16* %A, i16** %ptr, <4 x i16> %B, <4 x i16> %C, <4 x i16> %D, <4 x i16> %E, i64 %inc) nounwind { 5531*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i16_post_reg_st4lane: 5532*9880d681SAndroid Build Coastguard Worker;CHECK: st4.h { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 5533*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v4i16.p0i16(<4 x i16> %B, <4 x i16> %C, <4 x i16> %D, <4 x i16> %E, i64 0, i16* %A) 5534*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i16, i16* %A, i64 %inc 5535*9880d681SAndroid Build Coastguard Worker ret i16* %tmp 5536*9880d681SAndroid Build Coastguard Worker} 5537*9880d681SAndroid Build Coastguard Worker 5538*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4lane.v4i16.p0i16(<4 x i16>, <4 x i16>, <4 x i16>, <4 x i16>, i64, i16*) 5539*9880d681SAndroid Build Coastguard Worker 5540*9880d681SAndroid Build Coastguard Worker 5541*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_imm_st4lane(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C, <4 x i32> %D, <4 x i32> %E) nounwind { 5542*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_imm_st4lane: 5543*9880d681SAndroid Build Coastguard Worker;CHECK: st4.s { v0, v1, v2, v3 }[0], [x0], #16 5544*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, <4 x i32> %D, <4 x i32> %E, i64 0, i32* %A) 5545*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 4 5546*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 5547*9880d681SAndroid Build Coastguard Worker} 5548*9880d681SAndroid Build Coastguard Worker 5549*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v4i32_post_reg_st4lane(i32* %A, i32** %ptr, <4 x i32> %B, <4 x i32> %C, <4 x i32> %D, <4 x i32> %E, i64 %inc) nounwind { 5550*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4i32_post_reg_st4lane: 5551*9880d681SAndroid Build Coastguard Worker;CHECK: st4.s { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 5552*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v4i32.p0i32(<4 x i32> %B, <4 x i32> %C, <4 x i32> %D, <4 x i32> %E, i64 0, i32* %A) 5553*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 5554*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 5555*9880d681SAndroid Build Coastguard Worker} 5556*9880d681SAndroid Build Coastguard Worker 5557*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4lane.v4i32.p0i32(<4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i64, i32*) 5558*9880d681SAndroid Build Coastguard Worker 5559*9880d681SAndroid Build Coastguard Worker 5560*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_imm_st4lane(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C, <2 x i32> %D, <2 x i32> %E) nounwind { 5561*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_imm_st4lane: 5562*9880d681SAndroid Build Coastguard Worker;CHECK: st4.s { v0, v1, v2, v3 }[0], [x0], #16 5563*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, <2 x i32> %D, <2 x i32> %E, i64 0, i32* %A) 5564*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i32 4 5565*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 5566*9880d681SAndroid Build Coastguard Worker} 5567*9880d681SAndroid Build Coastguard Worker 5568*9880d681SAndroid Build Coastguard Workerdefine i32* @test_v2i32_post_reg_st4lane(i32* %A, i32** %ptr, <2 x i32> %B, <2 x i32> %C, <2 x i32> %D, <2 x i32> %E, i64 %inc) nounwind { 5569*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i32_post_reg_st4lane: 5570*9880d681SAndroid Build Coastguard Worker;CHECK: st4.s { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 5571*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v2i32.p0i32(<2 x i32> %B, <2 x i32> %C, <2 x i32> %D, <2 x i32> %E, i64 0, i32* %A) 5572*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i32, i32* %A, i64 %inc 5573*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 5574*9880d681SAndroid Build Coastguard Worker} 5575*9880d681SAndroid Build Coastguard Worker 5576*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4lane.v2i32.p0i32(<2 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, i64, i32*) 5577*9880d681SAndroid Build Coastguard Worker 5578*9880d681SAndroid Build Coastguard Worker 5579*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_imm_st4lane(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C, <2 x i64> %D, <2 x i64> %E) nounwind { 5580*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_imm_st4lane: 5581*9880d681SAndroid Build Coastguard Worker;CHECK: st4.d { v0, v1, v2, v3 }[0], [x0], #32 5582*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, <2 x i64> %D, <2 x i64> %E, i64 0, i64* %A) 5583*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 4 5584*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 5585*9880d681SAndroid Build Coastguard Worker} 5586*9880d681SAndroid Build Coastguard Worker 5587*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v2i64_post_reg_st4lane(i64* %A, i64** %ptr, <2 x i64> %B, <2 x i64> %C, <2 x i64> %D, <2 x i64> %E, i64 %inc) nounwind { 5588*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2i64_post_reg_st4lane: 5589*9880d681SAndroid Build Coastguard Worker;CHECK: st4.d { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 5590*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v2i64.p0i64(<2 x i64> %B, <2 x i64> %C, <2 x i64> %D, <2 x i64> %E, i64 0, i64* %A) 5591*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 5592*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 5593*9880d681SAndroid Build Coastguard Worker} 5594*9880d681SAndroid Build Coastguard Worker 5595*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4lane.v2i64.p0i64(<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>, i64, i64*) 5596*9880d681SAndroid Build Coastguard Worker 5597*9880d681SAndroid Build Coastguard Worker 5598*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_imm_st4lane(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C, <1 x i64> %D, <1 x i64> %E) nounwind { 5599*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_imm_st4lane: 5600*9880d681SAndroid Build Coastguard Worker;CHECK: st4.d { v0, v1, v2, v3 }[0], [x0], #32 5601*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, <1 x i64> %D, <1 x i64> %E, i64 0, i64* %A) 5602*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 4 5603*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 5604*9880d681SAndroid Build Coastguard Worker} 5605*9880d681SAndroid Build Coastguard Worker 5606*9880d681SAndroid Build Coastguard Workerdefine i64* @test_v1i64_post_reg_st4lane(i64* %A, i64** %ptr, <1 x i64> %B, <1 x i64> %C, <1 x i64> %D, <1 x i64> %E, i64 %inc) nounwind { 5607*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1i64_post_reg_st4lane: 5608*9880d681SAndroid Build Coastguard Worker;CHECK: st4.d { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 5609*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v1i64.p0i64(<1 x i64> %B, <1 x i64> %C, <1 x i64> %D, <1 x i64> %E, i64 0, i64* %A) 5610*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr i64, i64* %A, i64 %inc 5611*9880d681SAndroid Build Coastguard Worker ret i64* %tmp 5612*9880d681SAndroid Build Coastguard Worker} 5613*9880d681SAndroid Build Coastguard Worker 5614*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4lane.v1i64.p0i64(<1 x i64>, <1 x i64>, <1 x i64>, <1 x i64>, i64, i64*) 5615*9880d681SAndroid Build Coastguard Worker 5616*9880d681SAndroid Build Coastguard Worker 5617*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_imm_st4lane(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C, <4 x float> %D, <4 x float> %E) nounwind { 5618*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_imm_st4lane: 5619*9880d681SAndroid Build Coastguard Worker;CHECK: st4.s { v0, v1, v2, v3 }[0], [x0], #16 5620*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v4f32.p0f32(<4 x float> %B, <4 x float> %C, <4 x float> %D, <4 x float> %E, i64 0, float* %A) 5621*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 4 5622*9880d681SAndroid Build Coastguard Worker ret float* %tmp 5623*9880d681SAndroid Build Coastguard Worker} 5624*9880d681SAndroid Build Coastguard Worker 5625*9880d681SAndroid Build Coastguard Workerdefine float* @test_v4f32_post_reg_st4lane(float* %A, float** %ptr, <4 x float> %B, <4 x float> %C, <4 x float> %D, <4 x float> %E, i64 %inc) nounwind { 5626*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v4f32_post_reg_st4lane: 5627*9880d681SAndroid Build Coastguard Worker;CHECK: st4.s { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 5628*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v4f32.p0f32(<4 x float> %B, <4 x float> %C, <4 x float> %D, <4 x float> %E, i64 0, float* %A) 5629*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 5630*9880d681SAndroid Build Coastguard Worker ret float* %tmp 5631*9880d681SAndroid Build Coastguard Worker} 5632*9880d681SAndroid Build Coastguard Worker 5633*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4lane.v4f32.p0f32(<4 x float>, <4 x float>, <4 x float>, <4 x float>, i64, float*) 5634*9880d681SAndroid Build Coastguard Worker 5635*9880d681SAndroid Build Coastguard Worker 5636*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_imm_st4lane(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C, <2 x float> %D, <2 x float> %E) nounwind { 5637*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_imm_st4lane: 5638*9880d681SAndroid Build Coastguard Worker;CHECK: st4.s { v0, v1, v2, v3 }[0], [x0], #16 5639*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v2f32.p0f32(<2 x float> %B, <2 x float> %C, <2 x float> %D, <2 x float> %E, i64 0, float* %A) 5640*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i32 4 5641*9880d681SAndroid Build Coastguard Worker ret float* %tmp 5642*9880d681SAndroid Build Coastguard Worker} 5643*9880d681SAndroid Build Coastguard Worker 5644*9880d681SAndroid Build Coastguard Workerdefine float* @test_v2f32_post_reg_st4lane(float* %A, float** %ptr, <2 x float> %B, <2 x float> %C, <2 x float> %D, <2 x float> %E, i64 %inc) nounwind { 5645*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f32_post_reg_st4lane: 5646*9880d681SAndroid Build Coastguard Worker;CHECK: st4.s { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 5647*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v2f32.p0f32(<2 x float> %B, <2 x float> %C, <2 x float> %D, <2 x float> %E, i64 0, float* %A) 5648*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr float, float* %A, i64 %inc 5649*9880d681SAndroid Build Coastguard Worker ret float* %tmp 5650*9880d681SAndroid Build Coastguard Worker} 5651*9880d681SAndroid Build Coastguard Worker 5652*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4lane.v2f32.p0f32(<2 x float>, <2 x float>, <2 x float>, <2 x float>, i64, float*) 5653*9880d681SAndroid Build Coastguard Worker 5654*9880d681SAndroid Build Coastguard Worker 5655*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_imm_st4lane(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C, <2 x double> %D, <2 x double> %E) nounwind { 5656*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_imm_st4lane: 5657*9880d681SAndroid Build Coastguard Worker;CHECK: st4.d { v0, v1, v2, v3 }[0], [x0], #32 5658*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v2f64.p0f64(<2 x double> %B, <2 x double> %C, <2 x double> %D, <2 x double> %E, i64 0, double* %A) 5659*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 4 5660*9880d681SAndroid Build Coastguard Worker ret double* %tmp 5661*9880d681SAndroid Build Coastguard Worker} 5662*9880d681SAndroid Build Coastguard Worker 5663*9880d681SAndroid Build Coastguard Workerdefine double* @test_v2f64_post_reg_st4lane(double* %A, double** %ptr, <2 x double> %B, <2 x double> %C, <2 x double> %D, <2 x double> %E, i64 %inc) nounwind { 5664*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v2f64_post_reg_st4lane: 5665*9880d681SAndroid Build Coastguard Worker;CHECK: st4.d { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 5666*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v2f64.p0f64(<2 x double> %B, <2 x double> %C, <2 x double> %D, <2 x double> %E, i64 0, double* %A) 5667*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 5668*9880d681SAndroid Build Coastguard Worker ret double* %tmp 5669*9880d681SAndroid Build Coastguard Worker} 5670*9880d681SAndroid Build Coastguard Worker 5671*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4lane.v2f64.p0f64(<2 x double>, <2 x double>, <2 x double>, <2 x double>, i64, double*) 5672*9880d681SAndroid Build Coastguard Worker 5673*9880d681SAndroid Build Coastguard Worker 5674*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_imm_st4lane(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C, <1 x double> %D, <1 x double> %E) nounwind { 5675*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_imm_st4lane: 5676*9880d681SAndroid Build Coastguard Worker;CHECK: st4.d { v0, v1, v2, v3 }[0], [x0], #32 5677*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v1f64.p0f64(<1 x double> %B, <1 x double> %C, <1 x double> %D, <1 x double> %E, i64 0, double* %A) 5678*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 4 5679*9880d681SAndroid Build Coastguard Worker ret double* %tmp 5680*9880d681SAndroid Build Coastguard Worker} 5681*9880d681SAndroid Build Coastguard Worker 5682*9880d681SAndroid Build Coastguard Workerdefine double* @test_v1f64_post_reg_st4lane(double* %A, double** %ptr, <1 x double> %B, <1 x double> %C, <1 x double> %D, <1 x double> %E, i64 %inc) nounwind { 5683*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: test_v1f64_post_reg_st4lane: 5684*9880d681SAndroid Build Coastguard Worker;CHECK: st4.d { v0, v1, v2, v3 }[0], [x0], x{{[0-9]+}} 5685*9880d681SAndroid Build Coastguard Worker call void @llvm.aarch64.neon.st4lane.v1f64.p0f64(<1 x double> %B, <1 x double> %C, <1 x double> %D, <1 x double> %E, i64 0, double* %A) 5686*9880d681SAndroid Build Coastguard Worker %tmp = getelementptr double, double* %A, i64 %inc 5687*9880d681SAndroid Build Coastguard Worker ret double* %tmp 5688*9880d681SAndroid Build Coastguard Worker} 5689*9880d681SAndroid Build Coastguard Worker 5690*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.aarch64.neon.st4lane.v1f64.p0f64(<1 x double>, <1 x double>, <1 x double>, <1 x double>, i64, double*) 5691*9880d681SAndroid Build Coastguard Worker 5692*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_v16i8_post_imm_ld1r(i8* %bar, i8** %ptr) { 5693*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v16i8_post_imm_ld1r: 5694*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.16b { v0 }, [x0], #1 5695*9880d681SAndroid Build Coastguard Worker %tmp1 = load i8, i8* %bar 5696*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <16 x i8> <i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef>, i8 %tmp1, i32 0 5697*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <16 x i8> %tmp2, i8 %tmp1, i32 1 5698*9880d681SAndroid Build Coastguard Worker %tmp4 = insertelement <16 x i8> %tmp3, i8 %tmp1, i32 2 5699*9880d681SAndroid Build Coastguard Worker %tmp5 = insertelement <16 x i8> %tmp4, i8 %tmp1, i32 3 5700*9880d681SAndroid Build Coastguard Worker %tmp6 = insertelement <16 x i8> %tmp5, i8 %tmp1, i32 4 5701*9880d681SAndroid Build Coastguard Worker %tmp7 = insertelement <16 x i8> %tmp6, i8 %tmp1, i32 5 5702*9880d681SAndroid Build Coastguard Worker %tmp8 = insertelement <16 x i8> %tmp7, i8 %tmp1, i32 6 5703*9880d681SAndroid Build Coastguard Worker %tmp9 = insertelement <16 x i8> %tmp8, i8 %tmp1, i32 7 5704*9880d681SAndroid Build Coastguard Worker %tmp10 = insertelement <16 x i8> %tmp9, i8 %tmp1, i32 8 5705*9880d681SAndroid Build Coastguard Worker %tmp11 = insertelement <16 x i8> %tmp10, i8 %tmp1, i32 9 5706*9880d681SAndroid Build Coastguard Worker %tmp12 = insertelement <16 x i8> %tmp11, i8 %tmp1, i32 10 5707*9880d681SAndroid Build Coastguard Worker %tmp13 = insertelement <16 x i8> %tmp12, i8 %tmp1, i32 11 5708*9880d681SAndroid Build Coastguard Worker %tmp14 = insertelement <16 x i8> %tmp13, i8 %tmp1, i32 12 5709*9880d681SAndroid Build Coastguard Worker %tmp15 = insertelement <16 x i8> %tmp14, i8 %tmp1, i32 13 5710*9880d681SAndroid Build Coastguard Worker %tmp16 = insertelement <16 x i8> %tmp15, i8 %tmp1, i32 14 5711*9880d681SAndroid Build Coastguard Worker %tmp17 = insertelement <16 x i8> %tmp16, i8 %tmp1, i32 15 5712*9880d681SAndroid Build Coastguard Worker %tmp18 = getelementptr i8, i8* %bar, i64 1 5713*9880d681SAndroid Build Coastguard Worker store i8* %tmp18, i8** %ptr 5714*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp17 5715*9880d681SAndroid Build Coastguard Worker} 5716*9880d681SAndroid Build Coastguard Worker 5717*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_v16i8_post_reg_ld1r(i8* %bar, i8** %ptr, i64 %inc) { 5718*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v16i8_post_reg_ld1r: 5719*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.16b { v0 }, [x0], x{{[0-9]+}} 5720*9880d681SAndroid Build Coastguard Worker %tmp1 = load i8, i8* %bar 5721*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <16 x i8> <i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef>, i8 %tmp1, i32 0 5722*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <16 x i8> %tmp2, i8 %tmp1, i32 1 5723*9880d681SAndroid Build Coastguard Worker %tmp4 = insertelement <16 x i8> %tmp3, i8 %tmp1, i32 2 5724*9880d681SAndroid Build Coastguard Worker %tmp5 = insertelement <16 x i8> %tmp4, i8 %tmp1, i32 3 5725*9880d681SAndroid Build Coastguard Worker %tmp6 = insertelement <16 x i8> %tmp5, i8 %tmp1, i32 4 5726*9880d681SAndroid Build Coastguard Worker %tmp7 = insertelement <16 x i8> %tmp6, i8 %tmp1, i32 5 5727*9880d681SAndroid Build Coastguard Worker %tmp8 = insertelement <16 x i8> %tmp7, i8 %tmp1, i32 6 5728*9880d681SAndroid Build Coastguard Worker %tmp9 = insertelement <16 x i8> %tmp8, i8 %tmp1, i32 7 5729*9880d681SAndroid Build Coastguard Worker %tmp10 = insertelement <16 x i8> %tmp9, i8 %tmp1, i32 8 5730*9880d681SAndroid Build Coastguard Worker %tmp11 = insertelement <16 x i8> %tmp10, i8 %tmp1, i32 9 5731*9880d681SAndroid Build Coastguard Worker %tmp12 = insertelement <16 x i8> %tmp11, i8 %tmp1, i32 10 5732*9880d681SAndroid Build Coastguard Worker %tmp13 = insertelement <16 x i8> %tmp12, i8 %tmp1, i32 11 5733*9880d681SAndroid Build Coastguard Worker %tmp14 = insertelement <16 x i8> %tmp13, i8 %tmp1, i32 12 5734*9880d681SAndroid Build Coastguard Worker %tmp15 = insertelement <16 x i8> %tmp14, i8 %tmp1, i32 13 5735*9880d681SAndroid Build Coastguard Worker %tmp16 = insertelement <16 x i8> %tmp15, i8 %tmp1, i32 14 5736*9880d681SAndroid Build Coastguard Worker %tmp17 = insertelement <16 x i8> %tmp16, i8 %tmp1, i32 15 5737*9880d681SAndroid Build Coastguard Worker %tmp18 = getelementptr i8, i8* %bar, i64 %inc 5738*9880d681SAndroid Build Coastguard Worker store i8* %tmp18, i8** %ptr 5739*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp17 5740*9880d681SAndroid Build Coastguard Worker} 5741*9880d681SAndroid Build Coastguard Worker 5742*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_v8i8_post_imm_ld1r(i8* %bar, i8** %ptr) { 5743*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i8_post_imm_ld1r: 5744*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.8b { v0 }, [x0], #1 5745*9880d681SAndroid Build Coastguard Worker %tmp1 = load i8, i8* %bar 5746*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <8 x i8> <i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef>, i8 %tmp1, i32 0 5747*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <8 x i8> %tmp2, i8 %tmp1, i32 1 5748*9880d681SAndroid Build Coastguard Worker %tmp4 = insertelement <8 x i8> %tmp3, i8 %tmp1, i32 2 5749*9880d681SAndroid Build Coastguard Worker %tmp5 = insertelement <8 x i8> %tmp4, i8 %tmp1, i32 3 5750*9880d681SAndroid Build Coastguard Worker %tmp6 = insertelement <8 x i8> %tmp5, i8 %tmp1, i32 4 5751*9880d681SAndroid Build Coastguard Worker %tmp7 = insertelement <8 x i8> %tmp6, i8 %tmp1, i32 5 5752*9880d681SAndroid Build Coastguard Worker %tmp8 = insertelement <8 x i8> %tmp7, i8 %tmp1, i32 6 5753*9880d681SAndroid Build Coastguard Worker %tmp9 = insertelement <8 x i8> %tmp8, i8 %tmp1, i32 7 5754*9880d681SAndroid Build Coastguard Worker %tmp10 = getelementptr i8, i8* %bar, i64 1 5755*9880d681SAndroid Build Coastguard Worker store i8* %tmp10, i8** %ptr 5756*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp9 5757*9880d681SAndroid Build Coastguard Worker} 5758*9880d681SAndroid Build Coastguard Worker 5759*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_v8i8_post_reg_ld1r(i8* %bar, i8** %ptr, i64 %inc) { 5760*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i8_post_reg_ld1r: 5761*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.8b { v0 }, [x0], x{{[0-9]+}} 5762*9880d681SAndroid Build Coastguard Worker %tmp1 = load i8, i8* %bar 5763*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <8 x i8> <i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef, i8 undef>, i8 %tmp1, i32 0 5764*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <8 x i8> %tmp2, i8 %tmp1, i32 1 5765*9880d681SAndroid Build Coastguard Worker %tmp4 = insertelement <8 x i8> %tmp3, i8 %tmp1, i32 2 5766*9880d681SAndroid Build Coastguard Worker %tmp5 = insertelement <8 x i8> %tmp4, i8 %tmp1, i32 3 5767*9880d681SAndroid Build Coastguard Worker %tmp6 = insertelement <8 x i8> %tmp5, i8 %tmp1, i32 4 5768*9880d681SAndroid Build Coastguard Worker %tmp7 = insertelement <8 x i8> %tmp6, i8 %tmp1, i32 5 5769*9880d681SAndroid Build Coastguard Worker %tmp8 = insertelement <8 x i8> %tmp7, i8 %tmp1, i32 6 5770*9880d681SAndroid Build Coastguard Worker %tmp9 = insertelement <8 x i8> %tmp8, i8 %tmp1, i32 7 5771*9880d681SAndroid Build Coastguard Worker %tmp10 = getelementptr i8, i8* %bar, i64 %inc 5772*9880d681SAndroid Build Coastguard Worker store i8* %tmp10, i8** %ptr 5773*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp9 5774*9880d681SAndroid Build Coastguard Worker} 5775*9880d681SAndroid Build Coastguard Worker 5776*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_v8i16_post_imm_ld1r(i16* %bar, i16** %ptr) { 5777*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i16_post_imm_ld1r: 5778*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.8h { v0 }, [x0], #2 5779*9880d681SAndroid Build Coastguard Worker %tmp1 = load i16, i16* %bar 5780*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <8 x i16> <i16 undef, i16 undef, i16 undef, i16 undef, i16 undef, i16 undef, i16 undef, i16 undef>, i16 %tmp1, i32 0 5781*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <8 x i16> %tmp2, i16 %tmp1, i32 1 5782*9880d681SAndroid Build Coastguard Worker %tmp4 = insertelement <8 x i16> %tmp3, i16 %tmp1, i32 2 5783*9880d681SAndroid Build Coastguard Worker %tmp5 = insertelement <8 x i16> %tmp4, i16 %tmp1, i32 3 5784*9880d681SAndroid Build Coastguard Worker %tmp6 = insertelement <8 x i16> %tmp5, i16 %tmp1, i32 4 5785*9880d681SAndroid Build Coastguard Worker %tmp7 = insertelement <8 x i16> %tmp6, i16 %tmp1, i32 5 5786*9880d681SAndroid Build Coastguard Worker %tmp8 = insertelement <8 x i16> %tmp7, i16 %tmp1, i32 6 5787*9880d681SAndroid Build Coastguard Worker %tmp9 = insertelement <8 x i16> %tmp8, i16 %tmp1, i32 7 5788*9880d681SAndroid Build Coastguard Worker %tmp10 = getelementptr i16, i16* %bar, i64 1 5789*9880d681SAndroid Build Coastguard Worker store i16* %tmp10, i16** %ptr 5790*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp9 5791*9880d681SAndroid Build Coastguard Worker} 5792*9880d681SAndroid Build Coastguard Worker 5793*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_v8i16_post_reg_ld1r(i16* %bar, i16** %ptr, i64 %inc) { 5794*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i16_post_reg_ld1r: 5795*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.8h { v0 }, [x0], x{{[0-9]+}} 5796*9880d681SAndroid Build Coastguard Worker %tmp1 = load i16, i16* %bar 5797*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <8 x i16> <i16 undef, i16 undef, i16 undef, i16 undef, i16 undef, i16 undef, i16 undef, i16 undef>, i16 %tmp1, i32 0 5798*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <8 x i16> %tmp2, i16 %tmp1, i32 1 5799*9880d681SAndroid Build Coastguard Worker %tmp4 = insertelement <8 x i16> %tmp3, i16 %tmp1, i32 2 5800*9880d681SAndroid Build Coastguard Worker %tmp5 = insertelement <8 x i16> %tmp4, i16 %tmp1, i32 3 5801*9880d681SAndroid Build Coastguard Worker %tmp6 = insertelement <8 x i16> %tmp5, i16 %tmp1, i32 4 5802*9880d681SAndroid Build Coastguard Worker %tmp7 = insertelement <8 x i16> %tmp6, i16 %tmp1, i32 5 5803*9880d681SAndroid Build Coastguard Worker %tmp8 = insertelement <8 x i16> %tmp7, i16 %tmp1, i32 6 5804*9880d681SAndroid Build Coastguard Worker %tmp9 = insertelement <8 x i16> %tmp8, i16 %tmp1, i32 7 5805*9880d681SAndroid Build Coastguard Worker %tmp10 = getelementptr i16, i16* %bar, i64 %inc 5806*9880d681SAndroid Build Coastguard Worker store i16* %tmp10, i16** %ptr 5807*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp9 5808*9880d681SAndroid Build Coastguard Worker} 5809*9880d681SAndroid Build Coastguard Worker 5810*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_v4i16_post_imm_ld1r(i16* %bar, i16** %ptr) { 5811*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i16_post_imm_ld1r: 5812*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.4h { v0 }, [x0], #2 5813*9880d681SAndroid Build Coastguard Worker %tmp1 = load i16, i16* %bar 5814*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <4 x i16> <i16 undef, i16 undef, i16 undef, i16 undef>, i16 %tmp1, i32 0 5815*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <4 x i16> %tmp2, i16 %tmp1, i32 1 5816*9880d681SAndroid Build Coastguard Worker %tmp4 = insertelement <4 x i16> %tmp3, i16 %tmp1, i32 2 5817*9880d681SAndroid Build Coastguard Worker %tmp5 = insertelement <4 x i16> %tmp4, i16 %tmp1, i32 3 5818*9880d681SAndroid Build Coastguard Worker %tmp6 = getelementptr i16, i16* %bar, i64 1 5819*9880d681SAndroid Build Coastguard Worker store i16* %tmp6, i16** %ptr 5820*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp5 5821*9880d681SAndroid Build Coastguard Worker} 5822*9880d681SAndroid Build Coastguard Worker 5823*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_v4i16_post_reg_ld1r(i16* %bar, i16** %ptr, i64 %inc) { 5824*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i16_post_reg_ld1r: 5825*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.4h { v0 }, [x0], x{{[0-9]+}} 5826*9880d681SAndroid Build Coastguard Worker %tmp1 = load i16, i16* %bar 5827*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <4 x i16> <i16 undef, i16 undef, i16 undef, i16 undef>, i16 %tmp1, i32 0 5828*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <4 x i16> %tmp2, i16 %tmp1, i32 1 5829*9880d681SAndroid Build Coastguard Worker %tmp4 = insertelement <4 x i16> %tmp3, i16 %tmp1, i32 2 5830*9880d681SAndroid Build Coastguard Worker %tmp5 = insertelement <4 x i16> %tmp4, i16 %tmp1, i32 3 5831*9880d681SAndroid Build Coastguard Worker %tmp6 = getelementptr i16, i16* %bar, i64 %inc 5832*9880d681SAndroid Build Coastguard Worker store i16* %tmp6, i16** %ptr 5833*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp5 5834*9880d681SAndroid Build Coastguard Worker} 5835*9880d681SAndroid Build Coastguard Worker 5836*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_v4i32_post_imm_ld1r(i32* %bar, i32** %ptr) { 5837*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i32_post_imm_ld1r: 5838*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.4s { v0 }, [x0], #4 5839*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32* %bar 5840*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <4 x i32> <i32 undef, i32 undef, i32 undef, i32 undef>, i32 %tmp1, i32 0 5841*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <4 x i32> %tmp2, i32 %tmp1, i32 1 5842*9880d681SAndroid Build Coastguard Worker %tmp4 = insertelement <4 x i32> %tmp3, i32 %tmp1, i32 2 5843*9880d681SAndroid Build Coastguard Worker %tmp5 = insertelement <4 x i32> %tmp4, i32 %tmp1, i32 3 5844*9880d681SAndroid Build Coastguard Worker %tmp6 = getelementptr i32, i32* %bar, i64 1 5845*9880d681SAndroid Build Coastguard Worker store i32* %tmp6, i32** %ptr 5846*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp5 5847*9880d681SAndroid Build Coastguard Worker} 5848*9880d681SAndroid Build Coastguard Worker 5849*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_v4i32_post_reg_ld1r(i32* %bar, i32** %ptr, i64 %inc) { 5850*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i32_post_reg_ld1r: 5851*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.4s { v0 }, [x0], x{{[0-9]+}} 5852*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32* %bar 5853*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <4 x i32> <i32 undef, i32 undef, i32 undef, i32 undef>, i32 %tmp1, i32 0 5854*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <4 x i32> %tmp2, i32 %tmp1, i32 1 5855*9880d681SAndroid Build Coastguard Worker %tmp4 = insertelement <4 x i32> %tmp3, i32 %tmp1, i32 2 5856*9880d681SAndroid Build Coastguard Worker %tmp5 = insertelement <4 x i32> %tmp4, i32 %tmp1, i32 3 5857*9880d681SAndroid Build Coastguard Worker %tmp6 = getelementptr i32, i32* %bar, i64 %inc 5858*9880d681SAndroid Build Coastguard Worker store i32* %tmp6, i32** %ptr 5859*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp5 5860*9880d681SAndroid Build Coastguard Worker} 5861*9880d681SAndroid Build Coastguard Worker 5862*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_v2i32_post_imm_ld1r(i32* %bar, i32** %ptr) { 5863*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i32_post_imm_ld1r: 5864*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.2s { v0 }, [x0], #4 5865*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32* %bar 5866*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <2 x i32> <i32 undef, i32 undef>, i32 %tmp1, i32 0 5867*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <2 x i32> %tmp2, i32 %tmp1, i32 1 5868*9880d681SAndroid Build Coastguard Worker %tmp4 = getelementptr i32, i32* %bar, i64 1 5869*9880d681SAndroid Build Coastguard Worker store i32* %tmp4, i32** %ptr 5870*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 5871*9880d681SAndroid Build Coastguard Worker} 5872*9880d681SAndroid Build Coastguard Worker 5873*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_v2i32_post_reg_ld1r(i32* %bar, i32** %ptr, i64 %inc) { 5874*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i32_post_reg_ld1r: 5875*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.2s { v0 }, [x0], x{{[0-9]+}} 5876*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32* %bar 5877*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <2 x i32> <i32 undef, i32 undef>, i32 %tmp1, i32 0 5878*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <2 x i32> %tmp2, i32 %tmp1, i32 1 5879*9880d681SAndroid Build Coastguard Worker %tmp4 = getelementptr i32, i32* %bar, i64 %inc 5880*9880d681SAndroid Build Coastguard Worker store i32* %tmp4, i32** %ptr 5881*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 5882*9880d681SAndroid Build Coastguard Worker} 5883*9880d681SAndroid Build Coastguard Worker 5884*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_v2i64_post_imm_ld1r(i64* %bar, i64** %ptr) { 5885*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i64_post_imm_ld1r: 5886*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.2d { v0 }, [x0], #8 5887*9880d681SAndroid Build Coastguard Worker %tmp1 = load i64, i64* %bar 5888*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <2 x i64> <i64 undef, i64 undef>, i64 %tmp1, i32 0 5889*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <2 x i64> %tmp2, i64 %tmp1, i32 1 5890*9880d681SAndroid Build Coastguard Worker %tmp4 = getelementptr i64, i64* %bar, i64 1 5891*9880d681SAndroid Build Coastguard Worker store i64* %tmp4, i64** %ptr 5892*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 5893*9880d681SAndroid Build Coastguard Worker} 5894*9880d681SAndroid Build Coastguard Worker 5895*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_v2i64_post_reg_ld1r(i64* %bar, i64** %ptr, i64 %inc) { 5896*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i64_post_reg_ld1r: 5897*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.2d { v0 }, [x0], x{{[0-9]+}} 5898*9880d681SAndroid Build Coastguard Worker %tmp1 = load i64, i64* %bar 5899*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <2 x i64> <i64 undef, i64 undef>, i64 %tmp1, i32 0 5900*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <2 x i64> %tmp2, i64 %tmp1, i32 1 5901*9880d681SAndroid Build Coastguard Worker %tmp4 = getelementptr i64, i64* %bar, i64 %inc 5902*9880d681SAndroid Build Coastguard Worker store i64* %tmp4, i64** %ptr 5903*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 5904*9880d681SAndroid Build Coastguard Worker} 5905*9880d681SAndroid Build Coastguard Worker 5906*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_v4f32_post_imm_ld1r(float* %bar, float** %ptr) { 5907*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_post_imm_ld1r: 5908*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.4s { v0 }, [x0], #4 5909*9880d681SAndroid Build Coastguard Worker %tmp1 = load float, float* %bar 5910*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <4 x float> <float undef, float undef, float undef, float undef>, float %tmp1, i32 0 5911*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <4 x float> %tmp2, float %tmp1, i32 1 5912*9880d681SAndroid Build Coastguard Worker %tmp4 = insertelement <4 x float> %tmp3, float %tmp1, i32 2 5913*9880d681SAndroid Build Coastguard Worker %tmp5 = insertelement <4 x float> %tmp4, float %tmp1, i32 3 5914*9880d681SAndroid Build Coastguard Worker %tmp6 = getelementptr float, float* %bar, i64 1 5915*9880d681SAndroid Build Coastguard Worker store float* %tmp6, float** %ptr 5916*9880d681SAndroid Build Coastguard Worker ret <4 x float> %tmp5 5917*9880d681SAndroid Build Coastguard Worker} 5918*9880d681SAndroid Build Coastguard Worker 5919*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_v4f32_post_reg_ld1r(float* %bar, float** %ptr, i64 %inc) { 5920*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_post_reg_ld1r: 5921*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.4s { v0 }, [x0], x{{[0-9]+}} 5922*9880d681SAndroid Build Coastguard Worker %tmp1 = load float, float* %bar 5923*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <4 x float> <float undef, float undef, float undef, float undef>, float %tmp1, i32 0 5924*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <4 x float> %tmp2, float %tmp1, i32 1 5925*9880d681SAndroid Build Coastguard Worker %tmp4 = insertelement <4 x float> %tmp3, float %tmp1, i32 2 5926*9880d681SAndroid Build Coastguard Worker %tmp5 = insertelement <4 x float> %tmp4, float %tmp1, i32 3 5927*9880d681SAndroid Build Coastguard Worker %tmp6 = getelementptr float, float* %bar, i64 %inc 5928*9880d681SAndroid Build Coastguard Worker store float* %tmp6, float** %ptr 5929*9880d681SAndroid Build Coastguard Worker ret <4 x float> %tmp5 5930*9880d681SAndroid Build Coastguard Worker} 5931*9880d681SAndroid Build Coastguard Worker 5932*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @test_v2f32_post_imm_ld1r(float* %bar, float** %ptr) { 5933*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_post_imm_ld1r: 5934*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.2s { v0 }, [x0], #4 5935*9880d681SAndroid Build Coastguard Worker %tmp1 = load float, float* %bar 5936*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <2 x float> <float undef, float undef>, float %tmp1, i32 0 5937*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <2 x float> %tmp2, float %tmp1, i32 1 5938*9880d681SAndroid Build Coastguard Worker %tmp4 = getelementptr float, float* %bar, i64 1 5939*9880d681SAndroid Build Coastguard Worker store float* %tmp4, float** %ptr 5940*9880d681SAndroid Build Coastguard Worker ret <2 x float> %tmp3 5941*9880d681SAndroid Build Coastguard Worker} 5942*9880d681SAndroid Build Coastguard Worker 5943*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @test_v2f32_post_reg_ld1r(float* %bar, float** %ptr, i64 %inc) { 5944*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_post_reg_ld1r: 5945*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.2s { v0 }, [x0], x{{[0-9]+}} 5946*9880d681SAndroid Build Coastguard Worker %tmp1 = load float, float* %bar 5947*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <2 x float> <float undef, float undef>, float %tmp1, i32 0 5948*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <2 x float> %tmp2, float %tmp1, i32 1 5949*9880d681SAndroid Build Coastguard Worker %tmp4 = getelementptr float, float* %bar, i64 %inc 5950*9880d681SAndroid Build Coastguard Worker store float* %tmp4, float** %ptr 5951*9880d681SAndroid Build Coastguard Worker ret <2 x float> %tmp3 5952*9880d681SAndroid Build Coastguard Worker} 5953*9880d681SAndroid Build Coastguard Worker 5954*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_v2f64_post_imm_ld1r(double* %bar, double** %ptr) { 5955*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_post_imm_ld1r: 5956*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.2d { v0 }, [x0], #8 5957*9880d681SAndroid Build Coastguard Worker %tmp1 = load double, double* %bar 5958*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <2 x double> <double undef, double undef>, double %tmp1, i32 0 5959*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <2 x double> %tmp2, double %tmp1, i32 1 5960*9880d681SAndroid Build Coastguard Worker %tmp4 = getelementptr double, double* %bar, i64 1 5961*9880d681SAndroid Build Coastguard Worker store double* %tmp4, double** %ptr 5962*9880d681SAndroid Build Coastguard Worker ret <2 x double> %tmp3 5963*9880d681SAndroid Build Coastguard Worker} 5964*9880d681SAndroid Build Coastguard Worker 5965*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_v2f64_post_reg_ld1r(double* %bar, double** %ptr, i64 %inc) { 5966*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_post_reg_ld1r: 5967*9880d681SAndroid Build Coastguard Worker; CHECK: ld1r.2d { v0 }, [x0], x{{[0-9]+}} 5968*9880d681SAndroid Build Coastguard Worker %tmp1 = load double, double* %bar 5969*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <2 x double> <double undef, double undef>, double %tmp1, i32 0 5970*9880d681SAndroid Build Coastguard Worker %tmp3 = insertelement <2 x double> %tmp2, double %tmp1, i32 1 5971*9880d681SAndroid Build Coastguard Worker %tmp4 = getelementptr double, double* %bar, i64 %inc 5972*9880d681SAndroid Build Coastguard Worker store double* %tmp4, double** %ptr 5973*9880d681SAndroid Build Coastguard Worker ret <2 x double> %tmp3 5974*9880d681SAndroid Build Coastguard Worker} 5975*9880d681SAndroid Build Coastguard Worker 5976*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_v16i8_post_imm_ld1lane(i8* %bar, i8** %ptr, <16 x i8> %A) { 5977*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v16i8_post_imm_ld1lane: 5978*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.b { v0 }[1], [x0], #1 5979*9880d681SAndroid Build Coastguard Worker %tmp1 = load i8, i8* %bar 5980*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <16 x i8> %A, i8 %tmp1, i32 1 5981*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr i8, i8* %bar, i64 1 5982*9880d681SAndroid Build Coastguard Worker store i8* %tmp3, i8** %ptr 5983*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp2 5984*9880d681SAndroid Build Coastguard Worker} 5985*9880d681SAndroid Build Coastguard Worker 5986*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_v16i8_post_reg_ld1lane(i8* %bar, i8** %ptr, i64 %inc, <16 x i8> %A) { 5987*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v16i8_post_reg_ld1lane: 5988*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.b { v0 }[1], [x0], x{{[0-9]+}} 5989*9880d681SAndroid Build Coastguard Worker %tmp1 = load i8, i8* %bar 5990*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <16 x i8> %A, i8 %tmp1, i32 1 5991*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr i8, i8* %bar, i64 %inc 5992*9880d681SAndroid Build Coastguard Worker store i8* %tmp3, i8** %ptr 5993*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp2 5994*9880d681SAndroid Build Coastguard Worker} 5995*9880d681SAndroid Build Coastguard Worker 5996*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_v8i8_post_imm_ld1lane(i8* %bar, i8** %ptr, <8 x i8> %A) { 5997*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i8_post_imm_ld1lane: 5998*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.b { v0 }[1], [x0], #1 5999*9880d681SAndroid Build Coastguard Worker %tmp1 = load i8, i8* %bar 6000*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <8 x i8> %A, i8 %tmp1, i32 1 6001*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr i8, i8* %bar, i64 1 6002*9880d681SAndroid Build Coastguard Worker store i8* %tmp3, i8** %ptr 6003*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp2 6004*9880d681SAndroid Build Coastguard Worker} 6005*9880d681SAndroid Build Coastguard Worker 6006*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_v8i8_post_reg_ld1lane(i8* %bar, i8** %ptr, i64 %inc, <8 x i8> %A) { 6007*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i8_post_reg_ld1lane: 6008*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.b { v0 }[1], [x0], x{{[0-9]+}} 6009*9880d681SAndroid Build Coastguard Worker %tmp1 = load i8, i8* %bar 6010*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <8 x i8> %A, i8 %tmp1, i32 1 6011*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr i8, i8* %bar, i64 %inc 6012*9880d681SAndroid Build Coastguard Worker store i8* %tmp3, i8** %ptr 6013*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp2 6014*9880d681SAndroid Build Coastguard Worker} 6015*9880d681SAndroid Build Coastguard Worker 6016*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_v8i16_post_imm_ld1lane(i16* %bar, i16** %ptr, <8 x i16> %A) { 6017*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i16_post_imm_ld1lane: 6018*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.h { v0 }[1], [x0], #2 6019*9880d681SAndroid Build Coastguard Worker %tmp1 = load i16, i16* %bar 6020*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <8 x i16> %A, i16 %tmp1, i32 1 6021*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr i16, i16* %bar, i64 1 6022*9880d681SAndroid Build Coastguard Worker store i16* %tmp3, i16** %ptr 6023*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp2 6024*9880d681SAndroid Build Coastguard Worker} 6025*9880d681SAndroid Build Coastguard Worker 6026*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_v8i16_post_reg_ld1lane(i16* %bar, i16** %ptr, i64 %inc, <8 x i16> %A) { 6027*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v8i16_post_reg_ld1lane: 6028*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.h { v0 }[1], [x0], x{{[0-9]+}} 6029*9880d681SAndroid Build Coastguard Worker %tmp1 = load i16, i16* %bar 6030*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <8 x i16> %A, i16 %tmp1, i32 1 6031*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr i16, i16* %bar, i64 %inc 6032*9880d681SAndroid Build Coastguard Worker store i16* %tmp3, i16** %ptr 6033*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp2 6034*9880d681SAndroid Build Coastguard Worker} 6035*9880d681SAndroid Build Coastguard Worker 6036*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_v4i16_post_imm_ld1lane(i16* %bar, i16** %ptr, <4 x i16> %A) { 6037*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i16_post_imm_ld1lane: 6038*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.h { v0 }[1], [x0], #2 6039*9880d681SAndroid Build Coastguard Worker %tmp1 = load i16, i16* %bar 6040*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <4 x i16> %A, i16 %tmp1, i32 1 6041*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr i16, i16* %bar, i64 1 6042*9880d681SAndroid Build Coastguard Worker store i16* %tmp3, i16** %ptr 6043*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp2 6044*9880d681SAndroid Build Coastguard Worker} 6045*9880d681SAndroid Build Coastguard Worker 6046*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_v4i16_post_reg_ld1lane(i16* %bar, i16** %ptr, i64 %inc, <4 x i16> %A) { 6047*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i16_post_reg_ld1lane: 6048*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.h { v0 }[1], [x0], x{{[0-9]+}} 6049*9880d681SAndroid Build Coastguard Worker %tmp1 = load i16, i16* %bar 6050*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <4 x i16> %A, i16 %tmp1, i32 1 6051*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr i16, i16* %bar, i64 %inc 6052*9880d681SAndroid Build Coastguard Worker store i16* %tmp3, i16** %ptr 6053*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp2 6054*9880d681SAndroid Build Coastguard Worker} 6055*9880d681SAndroid Build Coastguard Worker 6056*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_v4i32_post_imm_ld1lane(i32* %bar, i32** %ptr, <4 x i32> %A) { 6057*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i32_post_imm_ld1lane: 6058*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.s { v0 }[1], [x0], #4 6059*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32* %bar 6060*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <4 x i32> %A, i32 %tmp1, i32 1 6061*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr i32, i32* %bar, i64 1 6062*9880d681SAndroid Build Coastguard Worker store i32* %tmp3, i32** %ptr 6063*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp2 6064*9880d681SAndroid Build Coastguard Worker} 6065*9880d681SAndroid Build Coastguard Worker 6066*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_v4i32_post_reg_ld1lane(i32* %bar, i32** %ptr, i64 %inc, <4 x i32> %A) { 6067*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i32_post_reg_ld1lane: 6068*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.s { v0 }[1], [x0], x{{[0-9]+}} 6069*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32* %bar 6070*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <4 x i32> %A, i32 %tmp1, i32 1 6071*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr i32, i32* %bar, i64 %inc 6072*9880d681SAndroid Build Coastguard Worker store i32* %tmp3, i32** %ptr 6073*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp2 6074*9880d681SAndroid Build Coastguard Worker} 6075*9880d681SAndroid Build Coastguard Worker 6076*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_v2i32_post_imm_ld1lane(i32* %bar, i32** %ptr, <2 x i32> %A) { 6077*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i32_post_imm_ld1lane: 6078*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.s { v0 }[1], [x0], #4 6079*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32* %bar 6080*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <2 x i32> %A, i32 %tmp1, i32 1 6081*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr i32, i32* %bar, i64 1 6082*9880d681SAndroid Build Coastguard Worker store i32* %tmp3, i32** %ptr 6083*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp2 6084*9880d681SAndroid Build Coastguard Worker} 6085*9880d681SAndroid Build Coastguard Worker 6086*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_v2i32_post_reg_ld1lane(i32* %bar, i32** %ptr, i64 %inc, <2 x i32> %A) { 6087*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i32_post_reg_ld1lane: 6088*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.s { v0 }[1], [x0], x{{[0-9]+}} 6089*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32* %bar 6090*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <2 x i32> %A, i32 %tmp1, i32 1 6091*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr i32, i32* %bar, i64 %inc 6092*9880d681SAndroid Build Coastguard Worker store i32* %tmp3, i32** %ptr 6093*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp2 6094*9880d681SAndroid Build Coastguard Worker} 6095*9880d681SAndroid Build Coastguard Worker 6096*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_v2i64_post_imm_ld1lane(i64* %bar, i64** %ptr, <2 x i64> %A) { 6097*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i64_post_imm_ld1lane: 6098*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.d { v0 }[1], [x0], #8 6099*9880d681SAndroid Build Coastguard Worker %tmp1 = load i64, i64* %bar 6100*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <2 x i64> %A, i64 %tmp1, i32 1 6101*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr i64, i64* %bar, i64 1 6102*9880d681SAndroid Build Coastguard Worker store i64* %tmp3, i64** %ptr 6103*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp2 6104*9880d681SAndroid Build Coastguard Worker} 6105*9880d681SAndroid Build Coastguard Worker 6106*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_v2i64_post_reg_ld1lane(i64* %bar, i64** %ptr, i64 %inc, <2 x i64> %A) { 6107*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2i64_post_reg_ld1lane: 6108*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.d { v0 }[1], [x0], x{{[0-9]+}} 6109*9880d681SAndroid Build Coastguard Worker %tmp1 = load i64, i64* %bar 6110*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <2 x i64> %A, i64 %tmp1, i32 1 6111*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr i64, i64* %bar, i64 %inc 6112*9880d681SAndroid Build Coastguard Worker store i64* %tmp3, i64** %ptr 6113*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp2 6114*9880d681SAndroid Build Coastguard Worker} 6115*9880d681SAndroid Build Coastguard Worker 6116*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_v4f32_post_imm_ld1lane(float* %bar, float** %ptr, <4 x float> %A) { 6117*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_post_imm_ld1lane: 6118*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.s { v0 }[1], [x0], #4 6119*9880d681SAndroid Build Coastguard Worker %tmp1 = load float, float* %bar 6120*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <4 x float> %A, float %tmp1, i32 1 6121*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr float, float* %bar, i64 1 6122*9880d681SAndroid Build Coastguard Worker store float* %tmp3, float** %ptr 6123*9880d681SAndroid Build Coastguard Worker ret <4 x float> %tmp2 6124*9880d681SAndroid Build Coastguard Worker} 6125*9880d681SAndroid Build Coastguard Worker 6126*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_v4f32_post_reg_ld1lane(float* %bar, float** %ptr, i64 %inc, <4 x float> %A) { 6127*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_post_reg_ld1lane: 6128*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.s { v0 }[1], [x0], x{{[0-9]+}} 6129*9880d681SAndroid Build Coastguard Worker %tmp1 = load float, float* %bar 6130*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <4 x float> %A, float %tmp1, i32 1 6131*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr float, float* %bar, i64 %inc 6132*9880d681SAndroid Build Coastguard Worker store float* %tmp3, float** %ptr 6133*9880d681SAndroid Build Coastguard Worker ret <4 x float> %tmp2 6134*9880d681SAndroid Build Coastguard Worker} 6135*9880d681SAndroid Build Coastguard Worker 6136*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @test_v2f32_post_imm_ld1lane(float* %bar, float** %ptr, <2 x float> %A) { 6137*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_post_imm_ld1lane: 6138*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.s { v0 }[1], [x0], #4 6139*9880d681SAndroid Build Coastguard Worker %tmp1 = load float, float* %bar 6140*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <2 x float> %A, float %tmp1, i32 1 6141*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr float, float* %bar, i64 1 6142*9880d681SAndroid Build Coastguard Worker store float* %tmp3, float** %ptr 6143*9880d681SAndroid Build Coastguard Worker ret <2 x float> %tmp2 6144*9880d681SAndroid Build Coastguard Worker} 6145*9880d681SAndroid Build Coastguard Worker 6146*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @test_v2f32_post_reg_ld1lane(float* %bar, float** %ptr, i64 %inc, <2 x float> %A) { 6147*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_post_reg_ld1lane: 6148*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.s { v0 }[1], [x0], x{{[0-9]+}} 6149*9880d681SAndroid Build Coastguard Worker %tmp1 = load float, float* %bar 6150*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <2 x float> %A, float %tmp1, i32 1 6151*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr float, float* %bar, i64 %inc 6152*9880d681SAndroid Build Coastguard Worker store float* %tmp3, float** %ptr 6153*9880d681SAndroid Build Coastguard Worker ret <2 x float> %tmp2 6154*9880d681SAndroid Build Coastguard Worker} 6155*9880d681SAndroid Build Coastguard Worker 6156*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_v2f64_post_imm_ld1lane(double* %bar, double** %ptr, <2 x double> %A) { 6157*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_post_imm_ld1lane: 6158*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.d { v0 }[1], [x0], #8 6159*9880d681SAndroid Build Coastguard Worker %tmp1 = load double, double* %bar 6160*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <2 x double> %A, double %tmp1, i32 1 6161*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr double, double* %bar, i64 1 6162*9880d681SAndroid Build Coastguard Worker store double* %tmp3, double** %ptr 6163*9880d681SAndroid Build Coastguard Worker ret <2 x double> %tmp2 6164*9880d681SAndroid Build Coastguard Worker} 6165*9880d681SAndroid Build Coastguard Worker 6166*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_v2f64_post_reg_ld1lane(double* %bar, double** %ptr, i64 %inc, <2 x double> %A) { 6167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_post_reg_ld1lane: 6168*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.d { v0 }[1], [x0], x{{[0-9]+}} 6169*9880d681SAndroid Build Coastguard Worker %tmp1 = load double, double* %bar 6170*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <2 x double> %A, double %tmp1, i32 1 6171*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr double, double* %bar, i64 %inc 6172*9880d681SAndroid Build Coastguard Worker store double* %tmp3, double** %ptr 6173*9880d681SAndroid Build Coastguard Worker ret <2 x double> %tmp2 6174*9880d681SAndroid Build Coastguard Worker} 6175*9880d681SAndroid Build Coastguard Worker 6176*9880d681SAndroid Build Coastguard Worker; Check for dependencies between the vector and the scalar load. 6177*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_v4f32_post_reg_ld1lane_dep_vec_on_load(float* %bar, float** %ptr, i64 %inc, <4 x float>* %dep_ptr_1, <4 x float>* %dep_ptr_2) { 6178*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_post_reg_ld1lane_dep_vec_on_load: 6179*9880d681SAndroid Build Coastguard Worker; CHECK: BB#0: 6180*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ldr s[[LD:[0-9]+]], [x0] 6181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movi.2d v0, #0000000000000000 6182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: str q0, [x3] 6183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ldr q0, [x4] 6184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ins.s v0[1], v[[LD]][0] 6185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: add [[POST:x[0-9]]], x0, x2, lsl #2 6186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: str [[POST]], [x1] 6187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret 6188*9880d681SAndroid Build Coastguard Worker %tmp1 = load float, float* %bar 6189*9880d681SAndroid Build Coastguard Worker store <4 x float> zeroinitializer, <4 x float>* %dep_ptr_1, align 16 6190*9880d681SAndroid Build Coastguard Worker %A = load <4 x float>, <4 x float>* %dep_ptr_2, align 16 6191*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <4 x float> %A, float %tmp1, i32 1 6192*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr float, float* %bar, i64 %inc 6193*9880d681SAndroid Build Coastguard Worker store float* %tmp3, float** %ptr 6194*9880d681SAndroid Build Coastguard Worker ret <4 x float> %tmp2 6195*9880d681SAndroid Build Coastguard Worker} 6196*9880d681SAndroid Build Coastguard Worker 6197*9880d681SAndroid Build Coastguard Worker; Make sure that we test the narrow V64 code path. 6198*9880d681SAndroid Build Coastguard Worker; The tests above don't, because there, 64-bit insert_vector_elt nodes will be 6199*9880d681SAndroid Build Coastguard Worker; widened to 128-bit before the LD1LANEpost combine has the chance to run, 6200*9880d681SAndroid Build Coastguard Worker; making it avoid narrow vector types. 6201*9880d681SAndroid Build Coastguard Worker; One way to trick that combine into running early is to force the vector ops 6202*9880d681SAndroid Build Coastguard Worker; legalizer to run. We achieve that using the ctpop. 6203*9880d681SAndroid Build Coastguard Worker; PR23265 6204*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_v4i16_post_reg_ld1lane_forced_narrow(i16* %bar, i16** %ptr, i64 %inc, <4 x i16> %A, <2 x i32>* %d) { 6205*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4i16_post_reg_ld1lane_forced_narrow: 6206*9880d681SAndroid Build Coastguard Worker; CHECK: ld1.h { v0 }[1], [x0], x{{[0-9]+}} 6207*9880d681SAndroid Build Coastguard Worker %tmp1 = load i16, i16* %bar 6208*9880d681SAndroid Build Coastguard Worker %tmp2 = insertelement <4 x i16> %A, i16 %tmp1, i32 1 6209*9880d681SAndroid Build Coastguard Worker %tmp3 = getelementptr i16, i16* %bar, i64 %inc 6210*9880d681SAndroid Build Coastguard Worker store i16* %tmp3, i16** %ptr 6211*9880d681SAndroid Build Coastguard Worker %dl = load <2 x i32>, <2 x i32>* %d 6212*9880d681SAndroid Build Coastguard Worker %dr = call <2 x i32> @llvm.ctpop.v2i32(<2 x i32> %dl) 6213*9880d681SAndroid Build Coastguard Worker store <2 x i32> %dr, <2 x i32>* %d 6214*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp2 6215*9880d681SAndroid Build Coastguard Worker} 6216*9880d681SAndroid Build Coastguard Worker 6217*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.ctpop.v2i32(<2 x i32>) 6218*9880d681SAndroid Build Coastguard Worker 6219*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_ld1lane_build: 6220*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld1.s { [[REG0:v[0-9]+]] }[0], [x0] 6221*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld1.s { [[REG0:v[0-9]+]] }[1], [x1] 6222*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld1.s { [[REG1:v[0-9]+]] }[0], [x2] 6223*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld1.s { [[REG1:v[0-9]+]] }[1], [x3] 6224*9880d681SAndroid Build Coastguard Worker; CHECK: sub.2s v[[REGNUM2:[0-9]+]], [[REG0]], [[REG1]] 6225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: str d[[REGNUM2]], [x4] 6226*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret 6227*9880d681SAndroid Build Coastguard Workerdefine void @test_ld1lane_build(i32* %ptr0, i32* %ptr1, i32* %ptr2, i32* %ptr3, <2 x i32>* %out) { 6228*9880d681SAndroid Build Coastguard Worker %load0 = load i32, i32* %ptr0, align 4 6229*9880d681SAndroid Build Coastguard Worker %load1 = load i32, i32* %ptr1, align 4 6230*9880d681SAndroid Build Coastguard Worker %vec0_0 = insertelement <2 x i32> undef, i32 %load0, i32 0 6231*9880d681SAndroid Build Coastguard Worker %vec0_1 = insertelement <2 x i32> %vec0_0, i32 %load1, i32 1 6232*9880d681SAndroid Build Coastguard Worker 6233*9880d681SAndroid Build Coastguard Worker %load2 = load i32, i32* %ptr2, align 4 6234*9880d681SAndroid Build Coastguard Worker %load3 = load i32, i32* %ptr3, align 4 6235*9880d681SAndroid Build Coastguard Worker %vec1_0 = insertelement <2 x i32> undef, i32 %load2, i32 0 6236*9880d681SAndroid Build Coastguard Worker %vec1_1 = insertelement <2 x i32> %vec1_0, i32 %load3, i32 1 6237*9880d681SAndroid Build Coastguard Worker 6238*9880d681SAndroid Build Coastguard Worker %sub = sub nsw <2 x i32> %vec0_1, %vec1_1 6239*9880d681SAndroid Build Coastguard Worker store <2 x i32> %sub, <2 x i32>* %out, align 16 6240*9880d681SAndroid Build Coastguard Worker ret void 6241*9880d681SAndroid Build Coastguard Worker} 6242