1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=arm64 -aarch64-neon-syntax=apple -enable-misched=false | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqshl8b(<8 x i8>* %A, <8 x i8>* %B) nounwind { 4*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshl8b: 5*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.8b 6*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 7*9880d681SAndroid Build Coastguard Worker %tmp2 = load <8 x i8>, <8 x i8>* %B 8*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqshl.v8i8(<8 x i8> %tmp1, <8 x i8> %tmp2) 9*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 10*9880d681SAndroid Build Coastguard Worker} 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sqshl4h(<4 x i16>* %A, <4 x i16>* %B) nounwind { 13*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshl4h: 14*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.4h 15*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 16*9880d681SAndroid Build Coastguard Worker %tmp2 = load <4 x i16>, <4 x i16>* %B 17*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqshl.v4i16(<4 x i16> %tmp1, <4 x i16> %tmp2) 18*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 19*9880d681SAndroid Build Coastguard Worker} 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sqshl2s(<2 x i32>* %A, <2 x i32>* %B) nounwind { 22*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshl2s: 23*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.2s 24*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 25*9880d681SAndroid Build Coastguard Worker %tmp2 = load <2 x i32>, <2 x i32>* %B 26*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqshl.v2i32(<2 x i32> %tmp1, <2 x i32> %tmp2) 27*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 28*9880d681SAndroid Build Coastguard Worker} 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @uqshl8b(<8 x i8>* %A, <8 x i8>* %B) nounwind { 31*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshl8b: 32*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.8b 33*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 34*9880d681SAndroid Build Coastguard Worker %tmp2 = load <8 x i8>, <8 x i8>* %B 35*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqshl.v8i8(<8 x i8> %tmp1, <8 x i8> %tmp2) 36*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 37*9880d681SAndroid Build Coastguard Worker} 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @uqshl4h(<4 x i16>* %A, <4 x i16>* %B) nounwind { 40*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshl4h: 41*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.4h 42*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 43*9880d681SAndroid Build Coastguard Worker %tmp2 = load <4 x i16>, <4 x i16>* %B 44*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.uqshl.v4i16(<4 x i16> %tmp1, <4 x i16> %tmp2) 45*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 46*9880d681SAndroid Build Coastguard Worker} 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @uqshl2s(<2 x i32>* %A, <2 x i32>* %B) nounwind { 49*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshl2s: 50*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.2s 51*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 52*9880d681SAndroid Build Coastguard Worker %tmp2 = load <2 x i32>, <2 x i32>* %B 53*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.uqshl.v2i32(<2 x i32> %tmp1, <2 x i32> %tmp2) 54*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 55*9880d681SAndroid Build Coastguard Worker} 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqshl16b(<16 x i8>* %A, <16 x i8>* %B) nounwind { 58*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshl16b: 59*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.16b 60*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 61*9880d681SAndroid Build Coastguard Worker %tmp2 = load <16 x i8>, <16 x i8>* %B 62*9880d681SAndroid Build Coastguard Worker %tmp3 = call <16 x i8> @llvm.aarch64.neon.sqshl.v16i8(<16 x i8> %tmp1, <16 x i8> %tmp2) 63*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp3 64*9880d681SAndroid Build Coastguard Worker} 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqshl8h(<8 x i16>* %A, <8 x i16>* %B) nounwind { 67*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshl8h: 68*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.8h 69*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 70*9880d681SAndroid Build Coastguard Worker %tmp2 = load <8 x i16>, <8 x i16>* %B 71*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i16> @llvm.aarch64.neon.sqshl.v8i16(<8 x i16> %tmp1, <8 x i16> %tmp2) 72*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp3 73*9880d681SAndroid Build Coastguard Worker} 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqshl4s(<4 x i32>* %A, <4 x i32>* %B) nounwind { 76*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshl4s: 77*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.4s 78*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 79*9880d681SAndroid Build Coastguard Worker %tmp2 = load <4 x i32>, <4 x i32>* %B 80*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i32> @llvm.aarch64.neon.sqshl.v4i32(<4 x i32> %tmp1, <4 x i32> %tmp2) 81*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp3 82*9880d681SAndroid Build Coastguard Worker} 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sqshl2d(<2 x i64>* %A, <2 x i64>* %B) nounwind { 85*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshl2d: 86*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.2d 87*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 88*9880d681SAndroid Build Coastguard Worker %tmp2 = load <2 x i64>, <2 x i64>* %B 89*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i64> @llvm.aarch64.neon.sqshl.v2i64(<2 x i64> %tmp1, <2 x i64> %tmp2) 90*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 91*9880d681SAndroid Build Coastguard Worker} 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @uqshl16b(<16 x i8>* %A, <16 x i8>* %B) nounwind { 94*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshl16b: 95*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.16b 96*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 97*9880d681SAndroid Build Coastguard Worker %tmp2 = load <16 x i8>, <16 x i8>* %B 98*9880d681SAndroid Build Coastguard Worker %tmp3 = call <16 x i8> @llvm.aarch64.neon.uqshl.v16i8(<16 x i8> %tmp1, <16 x i8> %tmp2) 99*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp3 100*9880d681SAndroid Build Coastguard Worker} 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @uqshl8h(<8 x i16>* %A, <8 x i16>* %B) nounwind { 103*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshl8h: 104*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.8h 105*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 106*9880d681SAndroid Build Coastguard Worker %tmp2 = load <8 x i16>, <8 x i16>* %B 107*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i16> @llvm.aarch64.neon.uqshl.v8i16(<8 x i16> %tmp1, <8 x i16> %tmp2) 108*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp3 109*9880d681SAndroid Build Coastguard Worker} 110*9880d681SAndroid Build Coastguard Worker 111*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @uqshl4s(<4 x i32>* %A, <4 x i32>* %B) nounwind { 112*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshl4s: 113*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.4s 114*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 115*9880d681SAndroid Build Coastguard Worker %tmp2 = load <4 x i32>, <4 x i32>* %B 116*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i32> @llvm.aarch64.neon.uqshl.v4i32(<4 x i32> %tmp1, <4 x i32> %tmp2) 117*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp3 118*9880d681SAndroid Build Coastguard Worker} 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @uqshl2d(<2 x i64>* %A, <2 x i64>* %B) nounwind { 121*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshl2d: 122*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.2d 123*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 124*9880d681SAndroid Build Coastguard Worker %tmp2 = load <2 x i64>, <2 x i64>* %B 125*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i64> @llvm.aarch64.neon.uqshl.v2i64(<2 x i64> %tmp1, <2 x i64> %tmp2) 126*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 127*9880d681SAndroid Build Coastguard Worker} 128*9880d681SAndroid Build Coastguard Worker 129*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @llvm.aarch64.neon.sqshl.v8i8(<8 x i8>, <8 x i8>) nounwind readnone 130*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.sqshl.v4i16(<4 x i16>, <4 x i16>) nounwind readnone 131*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.sqshl.v2i32(<2 x i32>, <2 x i32>) nounwind readnone 132*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @llvm.aarch64.neon.sqshl.v1i64(<1 x i64>, <1 x i64>) nounwind readnone 133*9880d681SAndroid Build Coastguard Worker 134*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @llvm.aarch64.neon.uqshl.v8i8(<8 x i8>, <8 x i8>) nounwind readnone 135*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.uqshl.v4i16(<4 x i16>, <4 x i16>) nounwind readnone 136*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.uqshl.v2i32(<2 x i32>, <2 x i32>) nounwind readnone 137*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @llvm.aarch64.neon.uqshl.v1i64(<1 x i64>, <1 x i64>) nounwind readnone 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.aarch64.neon.sqshl.v16i8(<16 x i8>, <16 x i8>) nounwind readnone 140*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.aarch64.neon.sqshl.v8i16(<8 x i16>, <8 x i16>) nounwind readnone 141*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.sqshl.v4i32(<4 x i32>, <4 x i32>) nounwind readnone 142*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.sqshl.v2i64(<2 x i64>, <2 x i64>) nounwind readnone 143*9880d681SAndroid Build Coastguard Worker 144*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.aarch64.neon.uqshl.v16i8(<16 x i8>, <16 x i8>) nounwind readnone 145*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.aarch64.neon.uqshl.v8i16(<8 x i16>, <8 x i16>) nounwind readnone 146*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.uqshl.v4i32(<4 x i32>, <4 x i32>) nounwind readnone 147*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.uqshl.v2i64(<2 x i64>, <2 x i64>) nounwind readnone 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @srshl8b(<8 x i8>* %A, <8 x i8>* %B) nounwind { 150*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshl8b: 151*9880d681SAndroid Build Coastguard Worker;CHECK: srshl.8b 152*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 153*9880d681SAndroid Build Coastguard Worker %tmp2 = load <8 x i8>, <8 x i8>* %B 154*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.srshl.v8i8(<8 x i8> %tmp1, <8 x i8> %tmp2) 155*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 156*9880d681SAndroid Build Coastguard Worker} 157*9880d681SAndroid Build Coastguard Worker 158*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @srshl4h(<4 x i16>* %A, <4 x i16>* %B) nounwind { 159*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshl4h: 160*9880d681SAndroid Build Coastguard Worker;CHECK: srshl.4h 161*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 162*9880d681SAndroid Build Coastguard Worker %tmp2 = load <4 x i16>, <4 x i16>* %B 163*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.srshl.v4i16(<4 x i16> %tmp1, <4 x i16> %tmp2) 164*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 165*9880d681SAndroid Build Coastguard Worker} 166*9880d681SAndroid Build Coastguard Worker 167*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @srshl2s(<2 x i32>* %A, <2 x i32>* %B) nounwind { 168*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshl2s: 169*9880d681SAndroid Build Coastguard Worker;CHECK: srshl.2s 170*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 171*9880d681SAndroid Build Coastguard Worker %tmp2 = load <2 x i32>, <2 x i32>* %B 172*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.srshl.v2i32(<2 x i32> %tmp1, <2 x i32> %tmp2) 173*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 174*9880d681SAndroid Build Coastguard Worker} 175*9880d681SAndroid Build Coastguard Worker 176*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @urshl8b(<8 x i8>* %A, <8 x i8>* %B) nounwind { 177*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshl8b: 178*9880d681SAndroid Build Coastguard Worker;CHECK: urshl.8b 179*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 180*9880d681SAndroid Build Coastguard Worker %tmp2 = load <8 x i8>, <8 x i8>* %B 181*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.urshl.v8i8(<8 x i8> %tmp1, <8 x i8> %tmp2) 182*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 183*9880d681SAndroid Build Coastguard Worker} 184*9880d681SAndroid Build Coastguard Worker 185*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @urshl4h(<4 x i16>* %A, <4 x i16>* %B) nounwind { 186*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshl4h: 187*9880d681SAndroid Build Coastguard Worker;CHECK: urshl.4h 188*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 189*9880d681SAndroid Build Coastguard Worker %tmp2 = load <4 x i16>, <4 x i16>* %B 190*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.urshl.v4i16(<4 x i16> %tmp1, <4 x i16> %tmp2) 191*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 192*9880d681SAndroid Build Coastguard Worker} 193*9880d681SAndroid Build Coastguard Worker 194*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @urshl2s(<2 x i32>* %A, <2 x i32>* %B) nounwind { 195*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshl2s: 196*9880d681SAndroid Build Coastguard Worker;CHECK: urshl.2s 197*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 198*9880d681SAndroid Build Coastguard Worker %tmp2 = load <2 x i32>, <2 x i32>* %B 199*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.urshl.v2i32(<2 x i32> %tmp1, <2 x i32> %tmp2) 200*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 201*9880d681SAndroid Build Coastguard Worker} 202*9880d681SAndroid Build Coastguard Worker 203*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @srshl16b(<16 x i8>* %A, <16 x i8>* %B) nounwind { 204*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshl16b: 205*9880d681SAndroid Build Coastguard Worker;CHECK: srshl.16b 206*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 207*9880d681SAndroid Build Coastguard Worker %tmp2 = load <16 x i8>, <16 x i8>* %B 208*9880d681SAndroid Build Coastguard Worker %tmp3 = call <16 x i8> @llvm.aarch64.neon.srshl.v16i8(<16 x i8> %tmp1, <16 x i8> %tmp2) 209*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp3 210*9880d681SAndroid Build Coastguard Worker} 211*9880d681SAndroid Build Coastguard Worker 212*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @srshl8h(<8 x i16>* %A, <8 x i16>* %B) nounwind { 213*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshl8h: 214*9880d681SAndroid Build Coastguard Worker;CHECK: srshl.8h 215*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 216*9880d681SAndroid Build Coastguard Worker %tmp2 = load <8 x i16>, <8 x i16>* %B 217*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i16> @llvm.aarch64.neon.srshl.v8i16(<8 x i16> %tmp1, <8 x i16> %tmp2) 218*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp3 219*9880d681SAndroid Build Coastguard Worker} 220*9880d681SAndroid Build Coastguard Worker 221*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @srshl4s(<4 x i32>* %A, <4 x i32>* %B) nounwind { 222*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshl4s: 223*9880d681SAndroid Build Coastguard Worker;CHECK: srshl.4s 224*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 225*9880d681SAndroid Build Coastguard Worker %tmp2 = load <4 x i32>, <4 x i32>* %B 226*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i32> @llvm.aarch64.neon.srshl.v4i32(<4 x i32> %tmp1, <4 x i32> %tmp2) 227*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp3 228*9880d681SAndroid Build Coastguard Worker} 229*9880d681SAndroid Build Coastguard Worker 230*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @srshl2d(<2 x i64>* %A, <2 x i64>* %B) nounwind { 231*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshl2d: 232*9880d681SAndroid Build Coastguard Worker;CHECK: srshl.2d 233*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 234*9880d681SAndroid Build Coastguard Worker %tmp2 = load <2 x i64>, <2 x i64>* %B 235*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i64> @llvm.aarch64.neon.srshl.v2i64(<2 x i64> %tmp1, <2 x i64> %tmp2) 236*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 237*9880d681SAndroid Build Coastguard Worker} 238*9880d681SAndroid Build Coastguard Worker 239*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @urshl16b(<16 x i8>* %A, <16 x i8>* %B) nounwind { 240*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshl16b: 241*9880d681SAndroid Build Coastguard Worker;CHECK: urshl.16b 242*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 243*9880d681SAndroid Build Coastguard Worker %tmp2 = load <16 x i8>, <16 x i8>* %B 244*9880d681SAndroid Build Coastguard Worker %tmp3 = call <16 x i8> @llvm.aarch64.neon.urshl.v16i8(<16 x i8> %tmp1, <16 x i8> %tmp2) 245*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp3 246*9880d681SAndroid Build Coastguard Worker} 247*9880d681SAndroid Build Coastguard Worker 248*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @urshl8h(<8 x i16>* %A, <8 x i16>* %B) nounwind { 249*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshl8h: 250*9880d681SAndroid Build Coastguard Worker;CHECK: urshl.8h 251*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 252*9880d681SAndroid Build Coastguard Worker %tmp2 = load <8 x i16>, <8 x i16>* %B 253*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i16> @llvm.aarch64.neon.urshl.v8i16(<8 x i16> %tmp1, <8 x i16> %tmp2) 254*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp3 255*9880d681SAndroid Build Coastguard Worker} 256*9880d681SAndroid Build Coastguard Worker 257*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @urshl4s(<4 x i32>* %A, <4 x i32>* %B) nounwind { 258*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshl4s: 259*9880d681SAndroid Build Coastguard Worker;CHECK: urshl.4s 260*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 261*9880d681SAndroid Build Coastguard Worker %tmp2 = load <4 x i32>, <4 x i32>* %B 262*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i32> @llvm.aarch64.neon.urshl.v4i32(<4 x i32> %tmp1, <4 x i32> %tmp2) 263*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp3 264*9880d681SAndroid Build Coastguard Worker} 265*9880d681SAndroid Build Coastguard Worker 266*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @urshl2d(<2 x i64>* %A, <2 x i64>* %B) nounwind { 267*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshl2d: 268*9880d681SAndroid Build Coastguard Worker;CHECK: urshl.2d 269*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 270*9880d681SAndroid Build Coastguard Worker %tmp2 = load <2 x i64>, <2 x i64>* %B 271*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i64> @llvm.aarch64.neon.urshl.v2i64(<2 x i64> %tmp1, <2 x i64> %tmp2) 272*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 273*9880d681SAndroid Build Coastguard Worker} 274*9880d681SAndroid Build Coastguard Worker 275*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @llvm.aarch64.neon.srshl.v8i8(<8 x i8>, <8 x i8>) nounwind readnone 276*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.srshl.v4i16(<4 x i16>, <4 x i16>) nounwind readnone 277*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.srshl.v2i32(<2 x i32>, <2 x i32>) nounwind readnone 278*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @llvm.aarch64.neon.srshl.v1i64(<1 x i64>, <1 x i64>) nounwind readnone 279*9880d681SAndroid Build Coastguard Worker 280*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @llvm.aarch64.neon.urshl.v8i8(<8 x i8>, <8 x i8>) nounwind readnone 281*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.urshl.v4i16(<4 x i16>, <4 x i16>) nounwind readnone 282*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.urshl.v2i32(<2 x i32>, <2 x i32>) nounwind readnone 283*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @llvm.aarch64.neon.urshl.v1i64(<1 x i64>, <1 x i64>) nounwind readnone 284*9880d681SAndroid Build Coastguard Worker 285*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.aarch64.neon.srshl.v16i8(<16 x i8>, <16 x i8>) nounwind readnone 286*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.aarch64.neon.srshl.v8i16(<8 x i16>, <8 x i16>) nounwind readnone 287*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.srshl.v4i32(<4 x i32>, <4 x i32>) nounwind readnone 288*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.srshl.v2i64(<2 x i64>, <2 x i64>) nounwind readnone 289*9880d681SAndroid Build Coastguard Worker 290*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.aarch64.neon.urshl.v16i8(<16 x i8>, <16 x i8>) nounwind readnone 291*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.aarch64.neon.urshl.v8i16(<8 x i16>, <8 x i16>) nounwind readnone 292*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.urshl.v4i32(<4 x i32>, <4 x i32>) nounwind readnone 293*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.urshl.v2i64(<2 x i64>, <2 x i64>) nounwind readnone 294*9880d681SAndroid Build Coastguard Worker 295*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqrshl8b(<8 x i8>* %A, <8 x i8>* %B) nounwind { 296*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshl8b: 297*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshl.8b 298*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 299*9880d681SAndroid Build Coastguard Worker %tmp2 = load <8 x i8>, <8 x i8>* %B 300*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqrshl.v8i8(<8 x i8> %tmp1, <8 x i8> %tmp2) 301*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 302*9880d681SAndroid Build Coastguard Worker} 303*9880d681SAndroid Build Coastguard Worker 304*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sqrshl4h(<4 x i16>* %A, <4 x i16>* %B) nounwind { 305*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshl4h: 306*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshl.4h 307*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 308*9880d681SAndroid Build Coastguard Worker %tmp2 = load <4 x i16>, <4 x i16>* %B 309*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqrshl.v4i16(<4 x i16> %tmp1, <4 x i16> %tmp2) 310*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 311*9880d681SAndroid Build Coastguard Worker} 312*9880d681SAndroid Build Coastguard Worker 313*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sqrshl2s(<2 x i32>* %A, <2 x i32>* %B) nounwind { 314*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshl2s: 315*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshl.2s 316*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 317*9880d681SAndroid Build Coastguard Worker %tmp2 = load <2 x i32>, <2 x i32>* %B 318*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqrshl.v2i32(<2 x i32> %tmp1, <2 x i32> %tmp2) 319*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 320*9880d681SAndroid Build Coastguard Worker} 321*9880d681SAndroid Build Coastguard Worker 322*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @uqrshl8b(<8 x i8>* %A, <8 x i8>* %B) nounwind { 323*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshl8b: 324*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshl.8b 325*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 326*9880d681SAndroid Build Coastguard Worker %tmp2 = load <8 x i8>, <8 x i8>* %B 327*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqrshl.v8i8(<8 x i8> %tmp1, <8 x i8> %tmp2) 328*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 329*9880d681SAndroid Build Coastguard Worker} 330*9880d681SAndroid Build Coastguard Worker 331*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @uqrshl4h(<4 x i16>* %A, <4 x i16>* %B) nounwind { 332*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshl4h: 333*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshl.4h 334*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 335*9880d681SAndroid Build Coastguard Worker %tmp2 = load <4 x i16>, <4 x i16>* %B 336*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.uqrshl.v4i16(<4 x i16> %tmp1, <4 x i16> %tmp2) 337*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 338*9880d681SAndroid Build Coastguard Worker} 339*9880d681SAndroid Build Coastguard Worker 340*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @uqrshl2s(<2 x i32>* %A, <2 x i32>* %B) nounwind { 341*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshl2s: 342*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshl.2s 343*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 344*9880d681SAndroid Build Coastguard Worker %tmp2 = load <2 x i32>, <2 x i32>* %B 345*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.uqrshl.v2i32(<2 x i32> %tmp1, <2 x i32> %tmp2) 346*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 347*9880d681SAndroid Build Coastguard Worker} 348*9880d681SAndroid Build Coastguard Worker 349*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqrshl16b(<16 x i8>* %A, <16 x i8>* %B) nounwind { 350*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshl16b: 351*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshl.16b 352*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 353*9880d681SAndroid Build Coastguard Worker %tmp2 = load <16 x i8>, <16 x i8>* %B 354*9880d681SAndroid Build Coastguard Worker %tmp3 = call <16 x i8> @llvm.aarch64.neon.sqrshl.v16i8(<16 x i8> %tmp1, <16 x i8> %tmp2) 355*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp3 356*9880d681SAndroid Build Coastguard Worker} 357*9880d681SAndroid Build Coastguard Worker 358*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqrshl8h(<8 x i16>* %A, <8 x i16>* %B) nounwind { 359*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshl8h: 360*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshl.8h 361*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 362*9880d681SAndroid Build Coastguard Worker %tmp2 = load <8 x i16>, <8 x i16>* %B 363*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i16> @llvm.aarch64.neon.sqrshl.v8i16(<8 x i16> %tmp1, <8 x i16> %tmp2) 364*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp3 365*9880d681SAndroid Build Coastguard Worker} 366*9880d681SAndroid Build Coastguard Worker 367*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqrshl4s(<4 x i32>* %A, <4 x i32>* %B) nounwind { 368*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshl4s: 369*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshl.4s 370*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 371*9880d681SAndroid Build Coastguard Worker %tmp2 = load <4 x i32>, <4 x i32>* %B 372*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i32> @llvm.aarch64.neon.sqrshl.v4i32(<4 x i32> %tmp1, <4 x i32> %tmp2) 373*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp3 374*9880d681SAndroid Build Coastguard Worker} 375*9880d681SAndroid Build Coastguard Worker 376*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sqrshl2d(<2 x i64>* %A, <2 x i64>* %B) nounwind { 377*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshl2d: 378*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshl.2d 379*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 380*9880d681SAndroid Build Coastguard Worker %tmp2 = load <2 x i64>, <2 x i64>* %B 381*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i64> @llvm.aarch64.neon.sqrshl.v2i64(<2 x i64> %tmp1, <2 x i64> %tmp2) 382*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 383*9880d681SAndroid Build Coastguard Worker} 384*9880d681SAndroid Build Coastguard Worker 385*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @uqrshl16b(<16 x i8>* %A, <16 x i8>* %B) nounwind { 386*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshl16b: 387*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshl.16b 388*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 389*9880d681SAndroid Build Coastguard Worker %tmp2 = load <16 x i8>, <16 x i8>* %B 390*9880d681SAndroid Build Coastguard Worker %tmp3 = call <16 x i8> @llvm.aarch64.neon.uqrshl.v16i8(<16 x i8> %tmp1, <16 x i8> %tmp2) 391*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp3 392*9880d681SAndroid Build Coastguard Worker} 393*9880d681SAndroid Build Coastguard Worker 394*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @uqrshl8h(<8 x i16>* %A, <8 x i16>* %B) nounwind { 395*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshl8h: 396*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshl.8h 397*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 398*9880d681SAndroid Build Coastguard Worker %tmp2 = load <8 x i16>, <8 x i16>* %B 399*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i16> @llvm.aarch64.neon.uqrshl.v8i16(<8 x i16> %tmp1, <8 x i16> %tmp2) 400*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp3 401*9880d681SAndroid Build Coastguard Worker} 402*9880d681SAndroid Build Coastguard Worker 403*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @uqrshl4s(<4 x i32>* %A, <4 x i32>* %B) nounwind { 404*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshl4s: 405*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshl.4s 406*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 407*9880d681SAndroid Build Coastguard Worker %tmp2 = load <4 x i32>, <4 x i32>* %B 408*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i32> @llvm.aarch64.neon.uqrshl.v4i32(<4 x i32> %tmp1, <4 x i32> %tmp2) 409*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp3 410*9880d681SAndroid Build Coastguard Worker} 411*9880d681SAndroid Build Coastguard Worker 412*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @uqrshl2d(<2 x i64>* %A, <2 x i64>* %B) nounwind { 413*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshl2d: 414*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshl.2d 415*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 416*9880d681SAndroid Build Coastguard Worker %tmp2 = load <2 x i64>, <2 x i64>* %B 417*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i64> @llvm.aarch64.neon.uqrshl.v2i64(<2 x i64> %tmp1, <2 x i64> %tmp2) 418*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 419*9880d681SAndroid Build Coastguard Worker} 420*9880d681SAndroid Build Coastguard Worker 421*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @llvm.aarch64.neon.sqrshl.v8i8(<8 x i8>, <8 x i8>) nounwind readnone 422*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.sqrshl.v4i16(<4 x i16>, <4 x i16>) nounwind readnone 423*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.sqrshl.v2i32(<2 x i32>, <2 x i32>) nounwind readnone 424*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @llvm.aarch64.neon.sqrshl.v1i64(<1 x i64>, <1 x i64>) nounwind readnone 425*9880d681SAndroid Build Coastguard Worker 426*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @llvm.aarch64.neon.uqrshl.v8i8(<8 x i8>, <8 x i8>) nounwind readnone 427*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.uqrshl.v4i16(<4 x i16>, <4 x i16>) nounwind readnone 428*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.uqrshl.v2i32(<2 x i32>, <2 x i32>) nounwind readnone 429*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @llvm.aarch64.neon.uqrshl.v1i64(<1 x i64>, <1 x i64>) nounwind readnone 430*9880d681SAndroid Build Coastguard Worker 431*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.aarch64.neon.sqrshl.v16i8(<16 x i8>, <16 x i8>) nounwind readnone 432*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.aarch64.neon.sqrshl.v8i16(<8 x i16>, <8 x i16>) nounwind readnone 433*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.sqrshl.v4i32(<4 x i32>, <4 x i32>) nounwind readnone 434*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.sqrshl.v2i64(<2 x i64>, <2 x i64>) nounwind readnone 435*9880d681SAndroid Build Coastguard Worker 436*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.aarch64.neon.uqrshl.v16i8(<16 x i8>, <16 x i8>) nounwind readnone 437*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.aarch64.neon.uqrshl.v8i16(<8 x i16>, <8 x i16>) nounwind readnone 438*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.uqrshl.v4i32(<4 x i32>, <4 x i32>) nounwind readnone 439*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.uqrshl.v2i64(<2 x i64>, <2 x i64>) nounwind readnone 440*9880d681SAndroid Build Coastguard Worker 441*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @urshr8b(<8 x i8>* %A) nounwind { 442*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshr8b: 443*9880d681SAndroid Build Coastguard Worker;CHECK: urshr.8b 444*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 445*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.urshl.v8i8(<8 x i8> %tmp1, <8 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>) 446*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 447*9880d681SAndroid Build Coastguard Worker} 448*9880d681SAndroid Build Coastguard Worker 449*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @urshr4h(<4 x i16>* %A) nounwind { 450*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshr4h: 451*9880d681SAndroid Build Coastguard Worker;CHECK: urshr.4h 452*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 453*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.urshl.v4i16(<4 x i16> %tmp1, <4 x i16> <i16 -1, i16 -1, i16 -1, i16 -1>) 454*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 455*9880d681SAndroid Build Coastguard Worker} 456*9880d681SAndroid Build Coastguard Worker 457*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @urshr2s(<2 x i32>* %A) nounwind { 458*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshr2s: 459*9880d681SAndroid Build Coastguard Worker;CHECK: urshr.2s 460*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 461*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.urshl.v2i32(<2 x i32> %tmp1, <2 x i32> <i32 -1, i32 -1>) 462*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 463*9880d681SAndroid Build Coastguard Worker} 464*9880d681SAndroid Build Coastguard Worker 465*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @urshr16b(<16 x i8>* %A) nounwind { 466*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshr16b: 467*9880d681SAndroid Build Coastguard Worker;CHECK: urshr.16b 468*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 469*9880d681SAndroid Build Coastguard Worker %tmp3 = call <16 x i8> @llvm.aarch64.neon.urshl.v16i8(<16 x i8> %tmp1, <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>) 470*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp3 471*9880d681SAndroid Build Coastguard Worker} 472*9880d681SAndroid Build Coastguard Worker 473*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @urshr8h(<8 x i16>* %A) nounwind { 474*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshr8h: 475*9880d681SAndroid Build Coastguard Worker;CHECK: urshr.8h 476*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 477*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i16> @llvm.aarch64.neon.urshl.v8i16(<8 x i16> %tmp1, <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>) 478*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp3 479*9880d681SAndroid Build Coastguard Worker} 480*9880d681SAndroid Build Coastguard Worker 481*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @urshr4s(<4 x i32>* %A) nounwind { 482*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshr4s: 483*9880d681SAndroid Build Coastguard Worker;CHECK: urshr.4s 484*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 485*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i32> @llvm.aarch64.neon.urshl.v4i32(<4 x i32> %tmp1, <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>) 486*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp3 487*9880d681SAndroid Build Coastguard Worker} 488*9880d681SAndroid Build Coastguard Worker 489*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @urshr2d(<2 x i64>* %A) nounwind { 490*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshr2d: 491*9880d681SAndroid Build Coastguard Worker;CHECK: urshr.2d 492*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 493*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i64> @llvm.aarch64.neon.urshl.v2i64(<2 x i64> %tmp1, <2 x i64> <i64 -1, i64 -1>) 494*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 495*9880d681SAndroid Build Coastguard Worker} 496*9880d681SAndroid Build Coastguard Worker 497*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @srshr8b(<8 x i8>* %A) nounwind { 498*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshr8b: 499*9880d681SAndroid Build Coastguard Worker;CHECK: srshr.8b 500*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 501*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.srshl.v8i8(<8 x i8> %tmp1, <8 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>) 502*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 503*9880d681SAndroid Build Coastguard Worker} 504*9880d681SAndroid Build Coastguard Worker 505*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @srshr4h(<4 x i16>* %A) nounwind { 506*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshr4h: 507*9880d681SAndroid Build Coastguard Worker;CHECK: srshr.4h 508*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 509*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.srshl.v4i16(<4 x i16> %tmp1, <4 x i16> <i16 -1, i16 -1, i16 -1, i16 -1>) 510*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 511*9880d681SAndroid Build Coastguard Worker} 512*9880d681SAndroid Build Coastguard Worker 513*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @srshr2s(<2 x i32>* %A) nounwind { 514*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshr2s: 515*9880d681SAndroid Build Coastguard Worker;CHECK: srshr.2s 516*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 517*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.srshl.v2i32(<2 x i32> %tmp1, <2 x i32> <i32 -1, i32 -1>) 518*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 519*9880d681SAndroid Build Coastguard Worker} 520*9880d681SAndroid Build Coastguard Worker 521*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @srshr16b(<16 x i8>* %A) nounwind { 522*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshr16b: 523*9880d681SAndroid Build Coastguard Worker;CHECK: srshr.16b 524*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 525*9880d681SAndroid Build Coastguard Worker %tmp3 = call <16 x i8> @llvm.aarch64.neon.srshl.v16i8(<16 x i8> %tmp1, <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>) 526*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp3 527*9880d681SAndroid Build Coastguard Worker} 528*9880d681SAndroid Build Coastguard Worker 529*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @srshr8h(<8 x i16>* %A) nounwind { 530*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshr8h: 531*9880d681SAndroid Build Coastguard Worker;CHECK: srshr.8h 532*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 533*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i16> @llvm.aarch64.neon.srshl.v8i16(<8 x i16> %tmp1, <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>) 534*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp3 535*9880d681SAndroid Build Coastguard Worker} 536*9880d681SAndroid Build Coastguard Worker 537*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @srshr4s(<4 x i32>* %A) nounwind { 538*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshr4s: 539*9880d681SAndroid Build Coastguard Worker;CHECK: srshr.4s 540*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 541*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i32> @llvm.aarch64.neon.srshl.v4i32(<4 x i32> %tmp1, <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>) 542*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp3 543*9880d681SAndroid Build Coastguard Worker} 544*9880d681SAndroid Build Coastguard Worker 545*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @srshr2d(<2 x i64>* %A) nounwind { 546*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshr2d: 547*9880d681SAndroid Build Coastguard Worker;CHECK: srshr.2d 548*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 549*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i64> @llvm.aarch64.neon.srshl.v2i64(<2 x i64> %tmp1, <2 x i64> <i64 -1, i64 -1>) 550*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 551*9880d681SAndroid Build Coastguard Worker} 552*9880d681SAndroid Build Coastguard Worker 553*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqshlu8b(<8 x i8>* %A) nounwind { 554*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshlu8b: 555*9880d681SAndroid Build Coastguard Worker;CHECK: sqshlu.8b v0, {{v[0-9]+}}, #1 556*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 557*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqshlu.v8i8(<8 x i8> %tmp1, <8 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>) 558*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 559*9880d681SAndroid Build Coastguard Worker} 560*9880d681SAndroid Build Coastguard Worker 561*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sqshlu4h(<4 x i16>* %A) nounwind { 562*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshlu4h: 563*9880d681SAndroid Build Coastguard Worker;CHECK: sqshlu.4h v0, {{v[0-9]+}}, #1 564*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 565*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqshlu.v4i16(<4 x i16> %tmp1, <4 x i16> <i16 1, i16 1, i16 1, i16 1>) 566*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 567*9880d681SAndroid Build Coastguard Worker} 568*9880d681SAndroid Build Coastguard Worker 569*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sqshlu2s(<2 x i32>* %A) nounwind { 570*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshlu2s: 571*9880d681SAndroid Build Coastguard Worker;CHECK: sqshlu.2s v0, {{v[0-9]+}}, #1 572*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 573*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqshlu.v2i32(<2 x i32> %tmp1, <2 x i32> <i32 1, i32 1>) 574*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 575*9880d681SAndroid Build Coastguard Worker} 576*9880d681SAndroid Build Coastguard Worker 577*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqshlu16b(<16 x i8>* %A) nounwind { 578*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshlu16b: 579*9880d681SAndroid Build Coastguard Worker;CHECK: sqshlu.16b v0, {{v[0-9]+}}, #1 580*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 581*9880d681SAndroid Build Coastguard Worker %tmp3 = call <16 x i8> @llvm.aarch64.neon.sqshlu.v16i8(<16 x i8> %tmp1, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>) 582*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp3 583*9880d681SAndroid Build Coastguard Worker} 584*9880d681SAndroid Build Coastguard Worker 585*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqshlu8h(<8 x i16>* %A) nounwind { 586*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshlu8h: 587*9880d681SAndroid Build Coastguard Worker;CHECK: sqshlu.8h v0, {{v[0-9]+}}, #1 588*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 589*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i16> @llvm.aarch64.neon.sqshlu.v8i16(<8 x i16> %tmp1, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>) 590*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp3 591*9880d681SAndroid Build Coastguard Worker} 592*9880d681SAndroid Build Coastguard Worker 593*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqshlu4s(<4 x i32>* %A) nounwind { 594*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshlu4s: 595*9880d681SAndroid Build Coastguard Worker;CHECK: sqshlu.4s v0, {{v[0-9]+}}, #1 596*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 597*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i32> @llvm.aarch64.neon.sqshlu.v4i32(<4 x i32> %tmp1, <4 x i32> <i32 1, i32 1, i32 1, i32 1>) 598*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp3 599*9880d681SAndroid Build Coastguard Worker} 600*9880d681SAndroid Build Coastguard Worker 601*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sqshlu2d(<2 x i64>* %A) nounwind { 602*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshlu2d: 603*9880d681SAndroid Build Coastguard Worker;CHECK: sqshlu.2d v0, {{v[0-9]+}}, #1 604*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 605*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i64> @llvm.aarch64.neon.sqshlu.v2i64(<2 x i64> %tmp1, <2 x i64> <i64 1, i64 1>) 606*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 607*9880d681SAndroid Build Coastguard Worker} 608*9880d681SAndroid Build Coastguard Worker 609*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @llvm.aarch64.neon.sqshlu.v8i8(<8 x i8>, <8 x i8>) nounwind readnone 610*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.sqshlu.v4i16(<4 x i16>, <4 x i16>) nounwind readnone 611*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.sqshlu.v2i32(<2 x i32>, <2 x i32>) nounwind readnone 612*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @llvm.aarch64.neon.sqshlu.v1i64(<1 x i64>, <1 x i64>) nounwind readnone 613*9880d681SAndroid Build Coastguard Worker 614*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.aarch64.neon.sqshlu.v16i8(<16 x i8>, <16 x i8>) nounwind readnone 615*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.aarch64.neon.sqshlu.v8i16(<8 x i16>, <8 x i16>) nounwind readnone 616*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.sqshlu.v4i32(<4 x i32>, <4 x i32>) nounwind readnone 617*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.sqshlu.v2i64(<2 x i64>, <2 x i64>) nounwind readnone 618*9880d681SAndroid Build Coastguard Worker 619*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @rshrn8b(<8 x i16>* %A) nounwind { 620*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: rshrn8b: 621*9880d681SAndroid Build Coastguard Worker;CHECK: rshrn.8b v0, {{v[0-9]+}}, #1 622*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 623*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.rshrn.v8i8(<8 x i16> %tmp1, i32 1) 624*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 625*9880d681SAndroid Build Coastguard Worker} 626*9880d681SAndroid Build Coastguard Worker 627*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @rshrn4h(<4 x i32>* %A) nounwind { 628*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: rshrn4h: 629*9880d681SAndroid Build Coastguard Worker;CHECK: rshrn.4h v0, {{v[0-9]+}}, #1 630*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 631*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.rshrn.v4i16(<4 x i32> %tmp1, i32 1) 632*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 633*9880d681SAndroid Build Coastguard Worker} 634*9880d681SAndroid Build Coastguard Worker 635*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @rshrn2s(<2 x i64>* %A) nounwind { 636*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: rshrn2s: 637*9880d681SAndroid Build Coastguard Worker;CHECK: rshrn.2s v0, {{v[0-9]+}}, #1 638*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 639*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.rshrn.v2i32(<2 x i64> %tmp1, i32 1) 640*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 641*9880d681SAndroid Build Coastguard Worker} 642*9880d681SAndroid Build Coastguard Worker 643*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @rshrn16b(<8 x i8> *%ret, <8 x i16>* %A) nounwind { 644*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: rshrn16b: 645*9880d681SAndroid Build Coastguard Worker;CHECK: rshrn2.16b v0, {{v[0-9]+}}, #1 646*9880d681SAndroid Build Coastguard Worker %out = load <8 x i8>, <8 x i8>* %ret 647*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 648*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.rshrn.v8i8(<8 x i16> %tmp1, i32 1) 649*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <8 x i8> %out, <8 x i8> %tmp3, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 650*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 651*9880d681SAndroid Build Coastguard Worker} 652*9880d681SAndroid Build Coastguard Worker 653*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @rshrn8h(<4 x i16>* %ret, <4 x i32>* %A) nounwind { 654*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: rshrn8h: 655*9880d681SAndroid Build Coastguard Worker;CHECK: rshrn2.8h v0, {{v[0-9]+}}, #1 656*9880d681SAndroid Build Coastguard Worker %out = load <4 x i16>, <4 x i16>* %ret 657*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 658*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.rshrn.v4i16(<4 x i32> %tmp1, i32 1) 659*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <4 x i16> %out, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> 660*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 661*9880d681SAndroid Build Coastguard Worker} 662*9880d681SAndroid Build Coastguard Worker 663*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @rshrn4s(<2 x i32>* %ret, <2 x i64>* %A) nounwind { 664*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: rshrn4s: 665*9880d681SAndroid Build Coastguard Worker;CHECK: rshrn2.4s v0, {{v[0-9]+}}, #1 666*9880d681SAndroid Build Coastguard Worker %out = load <2 x i32>, <2 x i32>* %ret 667*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 668*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.rshrn.v2i32(<2 x i64> %tmp1, i32 1) 669*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <2 x i32> %out, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 670*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 671*9880d681SAndroid Build Coastguard Worker} 672*9880d681SAndroid Build Coastguard Worker 673*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @llvm.aarch64.neon.rshrn.v8i8(<8 x i16>, i32) nounwind readnone 674*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.rshrn.v4i16(<4 x i32>, i32) nounwind readnone 675*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.rshrn.v2i32(<2 x i64>, i32) nounwind readnone 676*9880d681SAndroid Build Coastguard Worker 677*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @shrn8b(<8 x i16>* %A) nounwind { 678*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shrn8b: 679*9880d681SAndroid Build Coastguard Worker;CHECK: shrn.8b v0, {{v[0-9]+}}, #1 680*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 681*9880d681SAndroid Build Coastguard Worker %tmp2 = lshr <8 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1> 682*9880d681SAndroid Build Coastguard Worker %tmp3 = trunc <8 x i16> %tmp2 to <8 x i8> 683*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 684*9880d681SAndroid Build Coastguard Worker} 685*9880d681SAndroid Build Coastguard Worker 686*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @shrn4h(<4 x i32>* %A) nounwind { 687*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shrn4h: 688*9880d681SAndroid Build Coastguard Worker;CHECK: shrn.4h v0, {{v[0-9]+}}, #1 689*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 690*9880d681SAndroid Build Coastguard Worker %tmp2 = lshr <4 x i32> %tmp1, <i32 1, i32 1, i32 1, i32 1> 691*9880d681SAndroid Build Coastguard Worker %tmp3 = trunc <4 x i32> %tmp2 to <4 x i16> 692*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 693*9880d681SAndroid Build Coastguard Worker} 694*9880d681SAndroid Build Coastguard Worker 695*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @shrn2s(<2 x i64>* %A) nounwind { 696*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shrn2s: 697*9880d681SAndroid Build Coastguard Worker;CHECK: shrn.2s v0, {{v[0-9]+}}, #1 698*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 699*9880d681SAndroid Build Coastguard Worker %tmp2 = lshr <2 x i64> %tmp1, <i64 1, i64 1> 700*9880d681SAndroid Build Coastguard Worker %tmp3 = trunc <2 x i64> %tmp2 to <2 x i32> 701*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 702*9880d681SAndroid Build Coastguard Worker} 703*9880d681SAndroid Build Coastguard Worker 704*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @shrn16b(<8 x i8>* %ret, <8 x i16>* %A) nounwind { 705*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shrn16b: 706*9880d681SAndroid Build Coastguard Worker;CHECK: shrn2.16b v0, {{v[0-9]+}}, #1 707*9880d681SAndroid Build Coastguard Worker %out = load <8 x i8>, <8 x i8>* %ret 708*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 709*9880d681SAndroid Build Coastguard Worker %tmp2 = lshr <8 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1> 710*9880d681SAndroid Build Coastguard Worker %tmp3 = trunc <8 x i16> %tmp2 to <8 x i8> 711*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <8 x i8> %out, <8 x i8> %tmp3, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 712*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 713*9880d681SAndroid Build Coastguard Worker} 714*9880d681SAndroid Build Coastguard Worker 715*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shrn8h(<4 x i16>* %ret, <4 x i32>* %A) nounwind { 716*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shrn8h: 717*9880d681SAndroid Build Coastguard Worker;CHECK: shrn2.8h v0, {{v[0-9]+}}, #1 718*9880d681SAndroid Build Coastguard Worker %out = load <4 x i16>, <4 x i16>* %ret 719*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 720*9880d681SAndroid Build Coastguard Worker %tmp2 = lshr <4 x i32> %tmp1, <i32 1, i32 1, i32 1, i32 1> 721*9880d681SAndroid Build Coastguard Worker %tmp3 = trunc <4 x i32> %tmp2 to <4 x i16> 722*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <4 x i16> %out, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> 723*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 724*9880d681SAndroid Build Coastguard Worker} 725*9880d681SAndroid Build Coastguard Worker 726*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @shrn4s(<2 x i32>* %ret, <2 x i64>* %A) nounwind { 727*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shrn4s: 728*9880d681SAndroid Build Coastguard Worker;CHECK: shrn2.4s v0, {{v[0-9]+}}, #1 729*9880d681SAndroid Build Coastguard Worker %out = load <2 x i32>, <2 x i32>* %ret 730*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 731*9880d681SAndroid Build Coastguard Worker %tmp2 = lshr <2 x i64> %tmp1, <i64 1, i64 1> 732*9880d681SAndroid Build Coastguard Worker %tmp3 = trunc <2 x i64> %tmp2 to <2 x i32> 733*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <2 x i32> %out, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 734*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 735*9880d681SAndroid Build Coastguard Worker} 736*9880d681SAndroid Build Coastguard Worker 737*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @llvm.aarch64.neon.shrn.v8i8(<8 x i16>, i32) nounwind readnone 738*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.shrn.v4i16(<4 x i32>, i32) nounwind readnone 739*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.shrn.v2i32(<2 x i64>, i32) nounwind readnone 740*9880d681SAndroid Build Coastguard Worker 741*9880d681SAndroid Build Coastguard Workerdefine i32 @sqshrn1s(i64 %A) nounwind { 742*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sqshrn1s: 743*9880d681SAndroid Build Coastguard Worker; CHECK: sqshrn {{s[0-9]+}}, d0, #1 744*9880d681SAndroid Build Coastguard Worker %tmp = call i32 @llvm.aarch64.neon.sqshrn.i32(i64 %A, i32 1) 745*9880d681SAndroid Build Coastguard Worker ret i32 %tmp 746*9880d681SAndroid Build Coastguard Worker} 747*9880d681SAndroid Build Coastguard Worker 748*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqshrn8b(<8 x i16>* %A) nounwind { 749*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrn8b: 750*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrn.8b v0, {{v[0-9]+}}, #1 751*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 752*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqshrn.v8i8(<8 x i16> %tmp1, i32 1) 753*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 754*9880d681SAndroid Build Coastguard Worker} 755*9880d681SAndroid Build Coastguard Worker 756*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sqshrn4h(<4 x i32>* %A) nounwind { 757*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrn4h: 758*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrn.4h v0, {{v[0-9]+}}, #1 759*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 760*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqshrn.v4i16(<4 x i32> %tmp1, i32 1) 761*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 762*9880d681SAndroid Build Coastguard Worker} 763*9880d681SAndroid Build Coastguard Worker 764*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sqshrn2s(<2 x i64>* %A) nounwind { 765*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrn2s: 766*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrn.2s v0, {{v[0-9]+}}, #1 767*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 768*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqshrn.v2i32(<2 x i64> %tmp1, i32 1) 769*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 770*9880d681SAndroid Build Coastguard Worker} 771*9880d681SAndroid Build Coastguard Worker 772*9880d681SAndroid Build Coastguard Worker 773*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqshrn16b(<8 x i8>* %ret, <8 x i16>* %A) nounwind { 774*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrn16b: 775*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrn2.16b v0, {{v[0-9]+}}, #1 776*9880d681SAndroid Build Coastguard Worker %out = load <8 x i8>, <8 x i8>* %ret 777*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 778*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqshrn.v8i8(<8 x i16> %tmp1, i32 1) 779*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <8 x i8> %out, <8 x i8> %tmp3, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 780*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 781*9880d681SAndroid Build Coastguard Worker} 782*9880d681SAndroid Build Coastguard Worker 783*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqshrn8h(<4 x i16>* %ret, <4 x i32>* %A) nounwind { 784*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrn8h: 785*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrn2.8h v0, {{v[0-9]+}}, #1 786*9880d681SAndroid Build Coastguard Worker %out = load <4 x i16>, <4 x i16>* %ret 787*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 788*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqshrn.v4i16(<4 x i32> %tmp1, i32 1) 789*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <4 x i16> %out, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> 790*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 791*9880d681SAndroid Build Coastguard Worker} 792*9880d681SAndroid Build Coastguard Worker 793*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqshrn4s(<2 x i32>* %ret, <2 x i64>* %A) nounwind { 794*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrn4s: 795*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrn2.4s v0, {{v[0-9]+}}, #1 796*9880d681SAndroid Build Coastguard Worker %out = load <2 x i32>, <2 x i32>* %ret 797*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 798*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqshrn.v2i32(<2 x i64> %tmp1, i32 1) 799*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <2 x i32> %out, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 800*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 801*9880d681SAndroid Build Coastguard Worker} 802*9880d681SAndroid Build Coastguard Worker 803*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.aarch64.neon.sqshrn.i32(i64, i32) nounwind readnone 804*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @llvm.aarch64.neon.sqshrn.v8i8(<8 x i16>, i32) nounwind readnone 805*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.sqshrn.v4i16(<4 x i32>, i32) nounwind readnone 806*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.sqshrn.v2i32(<2 x i64>, i32) nounwind readnone 807*9880d681SAndroid Build Coastguard Worker 808*9880d681SAndroid Build Coastguard Workerdefine i32 @sqshrun1s(i64 %A) nounwind { 809*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sqshrun1s: 810*9880d681SAndroid Build Coastguard Worker; CHECK: sqshrun {{s[0-9]+}}, d0, #1 811*9880d681SAndroid Build Coastguard Worker %tmp = call i32 @llvm.aarch64.neon.sqshrun.i32(i64 %A, i32 1) 812*9880d681SAndroid Build Coastguard Worker ret i32 %tmp 813*9880d681SAndroid Build Coastguard Worker} 814*9880d681SAndroid Build Coastguard Worker 815*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqshrun8b(<8 x i16>* %A) nounwind { 816*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrun8b: 817*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrun.8b v0, {{v[0-9]+}}, #1 818*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 819*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqshrun.v8i8(<8 x i16> %tmp1, i32 1) 820*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 821*9880d681SAndroid Build Coastguard Worker} 822*9880d681SAndroid Build Coastguard Worker 823*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sqshrun4h(<4 x i32>* %A) nounwind { 824*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrun4h: 825*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrun.4h v0, {{v[0-9]+}}, #1 826*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 827*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqshrun.v4i16(<4 x i32> %tmp1, i32 1) 828*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 829*9880d681SAndroid Build Coastguard Worker} 830*9880d681SAndroid Build Coastguard Worker 831*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sqshrun2s(<2 x i64>* %A) nounwind { 832*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrun2s: 833*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrun.2s v0, {{v[0-9]+}}, #1 834*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 835*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqshrun.v2i32(<2 x i64> %tmp1, i32 1) 836*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 837*9880d681SAndroid Build Coastguard Worker} 838*9880d681SAndroid Build Coastguard Worker 839*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqshrun16b(<8 x i8>* %ret, <8 x i16>* %A) nounwind { 840*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrun16b: 841*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrun2.16b v0, {{v[0-9]+}}, #1 842*9880d681SAndroid Build Coastguard Worker %out = load <8 x i8>, <8 x i8>* %ret 843*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 844*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqshrun.v8i8(<8 x i16> %tmp1, i32 1) 845*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <8 x i8> %out, <8 x i8> %tmp3, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 846*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 847*9880d681SAndroid Build Coastguard Worker} 848*9880d681SAndroid Build Coastguard Worker 849*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqshrun8h(<4 x i16>* %ret, <4 x i32>* %A) nounwind { 850*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrun8h: 851*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrun2.8h v0, {{v[0-9]+}}, #1 852*9880d681SAndroid Build Coastguard Worker %out = load <4 x i16>, <4 x i16>* %ret 853*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 854*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqshrun.v4i16(<4 x i32> %tmp1, i32 1) 855*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <4 x i16> %out, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> 856*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 857*9880d681SAndroid Build Coastguard Worker} 858*9880d681SAndroid Build Coastguard Worker 859*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqshrun4s(<2 x i32>* %ret, <2 x i64>* %A) nounwind { 860*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrun4s: 861*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrun2.4s v0, {{v[0-9]+}}, #1 862*9880d681SAndroid Build Coastguard Worker %out = load <2 x i32>, <2 x i32>* %ret 863*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 864*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqshrun.v2i32(<2 x i64> %tmp1, i32 1) 865*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <2 x i32> %out, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 866*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 867*9880d681SAndroid Build Coastguard Worker} 868*9880d681SAndroid Build Coastguard Worker 869*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.aarch64.neon.sqshrun.i32(i64, i32) nounwind readnone 870*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @llvm.aarch64.neon.sqshrun.v8i8(<8 x i16>, i32) nounwind readnone 871*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.sqshrun.v4i16(<4 x i32>, i32) nounwind readnone 872*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.sqshrun.v2i32(<2 x i64>, i32) nounwind readnone 873*9880d681SAndroid Build Coastguard Worker 874*9880d681SAndroid Build Coastguard Workerdefine i32 @sqrshrn1s(i64 %A) nounwind { 875*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sqrshrn1s: 876*9880d681SAndroid Build Coastguard Worker; CHECK: sqrshrn {{s[0-9]+}}, d0, #1 877*9880d681SAndroid Build Coastguard Worker %tmp = call i32 @llvm.aarch64.neon.sqrshrn.i32(i64 %A, i32 1) 878*9880d681SAndroid Build Coastguard Worker ret i32 %tmp 879*9880d681SAndroid Build Coastguard Worker} 880*9880d681SAndroid Build Coastguard Worker 881*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqrshrn8b(<8 x i16>* %A) nounwind { 882*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrn8b: 883*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrn.8b v0, {{v[0-9]+}}, #1 884*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 885*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqrshrn.v8i8(<8 x i16> %tmp1, i32 1) 886*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 887*9880d681SAndroid Build Coastguard Worker} 888*9880d681SAndroid Build Coastguard Worker 889*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sqrshrn4h(<4 x i32>* %A) nounwind { 890*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrn4h: 891*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrn.4h v0, {{v[0-9]+}}, #1 892*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 893*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqrshrn.v4i16(<4 x i32> %tmp1, i32 1) 894*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 895*9880d681SAndroid Build Coastguard Worker} 896*9880d681SAndroid Build Coastguard Worker 897*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sqrshrn2s(<2 x i64>* %A) nounwind { 898*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrn2s: 899*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrn.2s v0, {{v[0-9]+}}, #1 900*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 901*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqrshrn.v2i32(<2 x i64> %tmp1, i32 1) 902*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 903*9880d681SAndroid Build Coastguard Worker} 904*9880d681SAndroid Build Coastguard Worker 905*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqrshrn16b(<8 x i8>* %ret, <8 x i16>* %A) nounwind { 906*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrn16b: 907*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrn2.16b v0, {{v[0-9]+}}, #1 908*9880d681SAndroid Build Coastguard Worker %out = load <8 x i8>, <8 x i8>* %ret 909*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 910*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqrshrn.v8i8(<8 x i16> %tmp1, i32 1) 911*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <8 x i8> %out, <8 x i8> %tmp3, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 912*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 913*9880d681SAndroid Build Coastguard Worker} 914*9880d681SAndroid Build Coastguard Worker 915*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqrshrn8h(<4 x i16>* %ret, <4 x i32>* %A) nounwind { 916*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrn8h: 917*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrn2.8h v0, {{v[0-9]+}}, #1 918*9880d681SAndroid Build Coastguard Worker %out = load <4 x i16>, <4 x i16>* %ret 919*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 920*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqrshrn.v4i16(<4 x i32> %tmp1, i32 1) 921*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <4 x i16> %out, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> 922*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 923*9880d681SAndroid Build Coastguard Worker} 924*9880d681SAndroid Build Coastguard Worker 925*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqrshrn4s(<2 x i32>* %ret, <2 x i64>* %A) nounwind { 926*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrn4s: 927*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrn2.4s v0, {{v[0-9]+}}, #1 928*9880d681SAndroid Build Coastguard Worker %out = load <2 x i32>, <2 x i32>* %ret 929*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 930*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqrshrn.v2i32(<2 x i64> %tmp1, i32 1) 931*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <2 x i32> %out, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 932*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 933*9880d681SAndroid Build Coastguard Worker} 934*9880d681SAndroid Build Coastguard Worker 935*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.aarch64.neon.sqrshrn.i32(i64, i32) nounwind readnone 936*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @llvm.aarch64.neon.sqrshrn.v8i8(<8 x i16>, i32) nounwind readnone 937*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.sqrshrn.v4i16(<4 x i32>, i32) nounwind readnone 938*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.sqrshrn.v2i32(<2 x i64>, i32) nounwind readnone 939*9880d681SAndroid Build Coastguard Worker 940*9880d681SAndroid Build Coastguard Workerdefine i32 @sqrshrun1s(i64 %A) nounwind { 941*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sqrshrun1s: 942*9880d681SAndroid Build Coastguard Worker; CHECK: sqrshrun {{s[0-9]+}}, d0, #1 943*9880d681SAndroid Build Coastguard Worker %tmp = call i32 @llvm.aarch64.neon.sqrshrun.i32(i64 %A, i32 1) 944*9880d681SAndroid Build Coastguard Worker ret i32 %tmp 945*9880d681SAndroid Build Coastguard Worker} 946*9880d681SAndroid Build Coastguard Worker 947*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqrshrun8b(<8 x i16>* %A) nounwind { 948*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrun8b: 949*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrun.8b v0, {{v[0-9]+}}, #1 950*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 951*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqrshrun.v8i8(<8 x i16> %tmp1, i32 1) 952*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 953*9880d681SAndroid Build Coastguard Worker} 954*9880d681SAndroid Build Coastguard Worker 955*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sqrshrun4h(<4 x i32>* %A) nounwind { 956*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrun4h: 957*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrun.4h v0, {{v[0-9]+}}, #1 958*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 959*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqrshrun.v4i16(<4 x i32> %tmp1, i32 1) 960*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 961*9880d681SAndroid Build Coastguard Worker} 962*9880d681SAndroid Build Coastguard Worker 963*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sqrshrun2s(<2 x i64>* %A) nounwind { 964*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrun2s: 965*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrun.2s v0, {{v[0-9]+}}, #1 966*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 967*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqrshrun.v2i32(<2 x i64> %tmp1, i32 1) 968*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 969*9880d681SAndroid Build Coastguard Worker} 970*9880d681SAndroid Build Coastguard Worker 971*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqrshrun16b(<8 x i8>* %ret, <8 x i16>* %A) nounwind { 972*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrun16b: 973*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrun2.16b v0, {{v[0-9]+}}, #1 974*9880d681SAndroid Build Coastguard Worker %out = load <8 x i8>, <8 x i8>* %ret 975*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 976*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqrshrun.v8i8(<8 x i16> %tmp1, i32 1) 977*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <8 x i8> %out, <8 x i8> %tmp3, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 978*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 979*9880d681SAndroid Build Coastguard Worker} 980*9880d681SAndroid Build Coastguard Worker 981*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqrshrun8h(<4 x i16>* %ret, <4 x i32>* %A) nounwind { 982*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrun8h: 983*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrun2.8h v0, {{v[0-9]+}}, #1 984*9880d681SAndroid Build Coastguard Worker %out = load <4 x i16>, <4 x i16>* %ret 985*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 986*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqrshrun.v4i16(<4 x i32> %tmp1, i32 1) 987*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <4 x i16> %out, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> 988*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 989*9880d681SAndroid Build Coastguard Worker} 990*9880d681SAndroid Build Coastguard Worker 991*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqrshrun4s(<2 x i32>* %ret, <2 x i64>* %A) nounwind { 992*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrun4s: 993*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrun2.4s v0, {{v[0-9]+}}, #1 994*9880d681SAndroid Build Coastguard Worker %out = load <2 x i32>, <2 x i32>* %ret 995*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 996*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqrshrun.v2i32(<2 x i64> %tmp1, i32 1) 997*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <2 x i32> %out, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 998*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 999*9880d681SAndroid Build Coastguard Worker} 1000*9880d681SAndroid Build Coastguard Worker 1001*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.aarch64.neon.sqrshrun.i32(i64, i32) nounwind readnone 1002*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @llvm.aarch64.neon.sqrshrun.v8i8(<8 x i16>, i32) nounwind readnone 1003*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.sqrshrun.v4i16(<4 x i32>, i32) nounwind readnone 1004*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.sqrshrun.v2i32(<2 x i64>, i32) nounwind readnone 1005*9880d681SAndroid Build Coastguard Worker 1006*9880d681SAndroid Build Coastguard Workerdefine i32 @uqrshrn1s(i64 %A) nounwind { 1007*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: uqrshrn1s: 1008*9880d681SAndroid Build Coastguard Worker; CHECK: uqrshrn {{s[0-9]+}}, d0, #1 1009*9880d681SAndroid Build Coastguard Worker %tmp = call i32 @llvm.aarch64.neon.uqrshrn.i32(i64 %A, i32 1) 1010*9880d681SAndroid Build Coastguard Worker ret i32 %tmp 1011*9880d681SAndroid Build Coastguard Worker} 1012*9880d681SAndroid Build Coastguard Worker 1013*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @uqrshrn8b(<8 x i16>* %A) nounwind { 1014*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshrn8b: 1015*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshrn.8b v0, {{v[0-9]+}}, #1 1016*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 1017*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqrshrn.v8i8(<8 x i16> %tmp1, i32 1) 1018*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 1019*9880d681SAndroid Build Coastguard Worker} 1020*9880d681SAndroid Build Coastguard Worker 1021*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @uqrshrn4h(<4 x i32>* %A) nounwind { 1022*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshrn4h: 1023*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshrn.4h v0, {{v[0-9]+}}, #1 1024*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 1025*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.uqrshrn.v4i16(<4 x i32> %tmp1, i32 1) 1026*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 1027*9880d681SAndroid Build Coastguard Worker} 1028*9880d681SAndroid Build Coastguard Worker 1029*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @uqrshrn2s(<2 x i64>* %A) nounwind { 1030*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshrn2s: 1031*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshrn.2s v0, {{v[0-9]+}}, #1 1032*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 1033*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.uqrshrn.v2i32(<2 x i64> %tmp1, i32 1) 1034*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 1035*9880d681SAndroid Build Coastguard Worker} 1036*9880d681SAndroid Build Coastguard Worker 1037*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @uqrshrn16b(<8 x i8>* %ret, <8 x i16>* %A) nounwind { 1038*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshrn16b: 1039*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshrn2.16b v0, {{v[0-9]+}}, #1 1040*9880d681SAndroid Build Coastguard Worker %out = load <8 x i8>, <8 x i8>* %ret 1041*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 1042*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqrshrn.v8i8(<8 x i16> %tmp1, i32 1) 1043*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <8 x i8> %out, <8 x i8> %tmp3, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 1044*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 1045*9880d681SAndroid Build Coastguard Worker} 1046*9880d681SAndroid Build Coastguard Worker 1047*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @uqrshrn8h(<4 x i16>* %ret, <4 x i32>* %A) nounwind { 1048*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshrn8h: 1049*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshrn2.8h v0, {{v[0-9]+}}, #1 1050*9880d681SAndroid Build Coastguard Worker %out = load <4 x i16>, <4 x i16>* %ret 1051*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 1052*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.uqrshrn.v4i16(<4 x i32> %tmp1, i32 1) 1053*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <4 x i16> %out, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> 1054*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 1055*9880d681SAndroid Build Coastguard Worker} 1056*9880d681SAndroid Build Coastguard Worker 1057*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @uqrshrn4s(<2 x i32>* %ret, <2 x i64>* %A) nounwind { 1058*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshrn4s: 1059*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshrn2.4s v0, {{v[0-9]+}}, #1 1060*9880d681SAndroid Build Coastguard Worker %out = load <2 x i32>, <2 x i32>* %ret 1061*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 1062*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.uqrshrn.v2i32(<2 x i64> %tmp1, i32 1) 1063*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <2 x i32> %out, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 1064*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1065*9880d681SAndroid Build Coastguard Worker} 1066*9880d681SAndroid Build Coastguard Worker 1067*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.aarch64.neon.uqrshrn.i32(i64, i32) nounwind readnone 1068*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @llvm.aarch64.neon.uqrshrn.v8i8(<8 x i16>, i32) nounwind readnone 1069*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.uqrshrn.v4i16(<4 x i32>, i32) nounwind readnone 1070*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.uqrshrn.v2i32(<2 x i64>, i32) nounwind readnone 1071*9880d681SAndroid Build Coastguard Worker 1072*9880d681SAndroid Build Coastguard Workerdefine i32 @uqshrn1s(i64 %A) nounwind { 1073*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: uqshrn1s: 1074*9880d681SAndroid Build Coastguard Worker; CHECK: uqshrn {{s[0-9]+}}, d0, #1 1075*9880d681SAndroid Build Coastguard Worker %tmp = call i32 @llvm.aarch64.neon.uqshrn.i32(i64 %A, i32 1) 1076*9880d681SAndroid Build Coastguard Worker ret i32 %tmp 1077*9880d681SAndroid Build Coastguard Worker} 1078*9880d681SAndroid Build Coastguard Worker 1079*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @uqshrn8b(<8 x i16>* %A) nounwind { 1080*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshrn8b: 1081*9880d681SAndroid Build Coastguard Worker;CHECK: uqshrn.8b v0, {{v[0-9]+}}, #1 1082*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 1083*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqshrn.v8i8(<8 x i16> %tmp1, i32 1) 1084*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 1085*9880d681SAndroid Build Coastguard Worker} 1086*9880d681SAndroid Build Coastguard Worker 1087*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @uqshrn4h(<4 x i32>* %A) nounwind { 1088*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshrn4h: 1089*9880d681SAndroid Build Coastguard Worker;CHECK: uqshrn.4h v0, {{v[0-9]+}}, #1 1090*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 1091*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.uqshrn.v4i16(<4 x i32> %tmp1, i32 1) 1092*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 1093*9880d681SAndroid Build Coastguard Worker} 1094*9880d681SAndroid Build Coastguard Worker 1095*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @uqshrn2s(<2 x i64>* %A) nounwind { 1096*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshrn2s: 1097*9880d681SAndroid Build Coastguard Worker;CHECK: uqshrn.2s v0, {{v[0-9]+}}, #1 1098*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 1099*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.uqshrn.v2i32(<2 x i64> %tmp1, i32 1) 1100*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 1101*9880d681SAndroid Build Coastguard Worker} 1102*9880d681SAndroid Build Coastguard Worker 1103*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @uqshrn16b(<8 x i8>* %ret, <8 x i16>* %A) nounwind { 1104*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshrn16b: 1105*9880d681SAndroid Build Coastguard Worker;CHECK: uqshrn2.16b v0, {{v[0-9]+}}, #1 1106*9880d681SAndroid Build Coastguard Worker %out = load <8 x i8>, <8 x i8>* %ret 1107*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 1108*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqshrn.v8i8(<8 x i16> %tmp1, i32 1) 1109*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <8 x i8> %out, <8 x i8> %tmp3, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 1110*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp4 1111*9880d681SAndroid Build Coastguard Worker} 1112*9880d681SAndroid Build Coastguard Worker 1113*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @uqshrn8h(<4 x i16>* %ret, <4 x i32>* %A) nounwind { 1114*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshrn8h: 1115*9880d681SAndroid Build Coastguard Worker;CHECK: uqshrn2.8h v0, {{v[0-9]+}}, #1 1116*9880d681SAndroid Build Coastguard Worker %out = load <4 x i16>, <4 x i16>* %ret 1117*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 1118*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.uqshrn.v4i16(<4 x i32> %tmp1, i32 1) 1119*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <4 x i16> %out, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> 1120*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp4 1121*9880d681SAndroid Build Coastguard Worker} 1122*9880d681SAndroid Build Coastguard Worker 1123*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @uqshrn4s(<2 x i32>* %ret, <2 x i64>* %A) nounwind { 1124*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshrn4s: 1125*9880d681SAndroid Build Coastguard Worker;CHECK: uqshrn2.4s v0, {{v[0-9]+}}, #1 1126*9880d681SAndroid Build Coastguard Worker %out = load <2 x i32>, <2 x i32>* %ret 1127*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 1128*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.uqshrn.v2i32(<2 x i64> %tmp1, i32 1) 1129*9880d681SAndroid Build Coastguard Worker %tmp4 = shufflevector <2 x i32> %out, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 1130*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp4 1131*9880d681SAndroid Build Coastguard Worker} 1132*9880d681SAndroid Build Coastguard Worker 1133*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.aarch64.neon.uqshrn.i32(i64, i32) nounwind readnone 1134*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @llvm.aarch64.neon.uqshrn.v8i8(<8 x i16>, i32) nounwind readnone 1135*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.uqshrn.v4i16(<4 x i32>, i32) nounwind readnone 1136*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.uqshrn.v2i32(<2 x i64>, i32) nounwind readnone 1137*9880d681SAndroid Build Coastguard Worker 1138*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @ushll8h(<8 x i8>* %A) nounwind { 1139*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ushll8h: 1140*9880d681SAndroid Build Coastguard Worker;CHECK: ushll.8h v0, {{v[0-9]+}}, #1 1141*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 1142*9880d681SAndroid Build Coastguard Worker %tmp2 = zext <8 x i8> %tmp1 to <8 x i16> 1143*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <8 x i16> %tmp2, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1> 1144*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp3 1145*9880d681SAndroid Build Coastguard Worker} 1146*9880d681SAndroid Build Coastguard Worker 1147*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @ushll4s(<4 x i16>* %A) nounwind { 1148*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ushll4s: 1149*9880d681SAndroid Build Coastguard Worker;CHECK: ushll.4s v0, {{v[0-9]+}}, #1 1150*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 1151*9880d681SAndroid Build Coastguard Worker %tmp2 = zext <4 x i16> %tmp1 to <4 x i32> 1152*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <4 x i32> %tmp2, <i32 1, i32 1, i32 1, i32 1> 1153*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp3 1154*9880d681SAndroid Build Coastguard Worker} 1155*9880d681SAndroid Build Coastguard Worker 1156*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @ushll2d(<2 x i32>* %A) nounwind { 1157*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ushll2d: 1158*9880d681SAndroid Build Coastguard Worker;CHECK: ushll.2d v0, {{v[0-9]+}}, #1 1159*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 1160*9880d681SAndroid Build Coastguard Worker %tmp2 = zext <2 x i32> %tmp1 to <2 x i64> 1161*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <2 x i64> %tmp2, <i64 1, i64 1> 1162*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 1163*9880d681SAndroid Build Coastguard Worker} 1164*9880d681SAndroid Build Coastguard Worker 1165*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @ushll2_8h(<16 x i8>* %A) nounwind { 1166*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ushll2_8h: 1167*9880d681SAndroid Build Coastguard Worker;CHECK: ushll2.8h v0, {{v[0-9]+}}, #1 1168*9880d681SAndroid Build Coastguard Worker %load1 = load <16 x i8>, <16 x i8>* %A 1169*9880d681SAndroid Build Coastguard Worker %tmp1 = shufflevector <16 x i8> %load1, <16 x i8> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 1170*9880d681SAndroid Build Coastguard Worker %tmp2 = zext <8 x i8> %tmp1 to <8 x i16> 1171*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <8 x i16> %tmp2, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1> 1172*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp3 1173*9880d681SAndroid Build Coastguard Worker} 1174*9880d681SAndroid Build Coastguard Worker 1175*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @ushll2_4s(<8 x i16>* %A) nounwind { 1176*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ushll2_4s: 1177*9880d681SAndroid Build Coastguard Worker;CHECK: ushll2.4s v0, {{v[0-9]+}}, #1 1178*9880d681SAndroid Build Coastguard Worker %load1 = load <8 x i16>, <8 x i16>* %A 1179*9880d681SAndroid Build Coastguard Worker %tmp1 = shufflevector <8 x i16> %load1, <8 x i16> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7> 1180*9880d681SAndroid Build Coastguard Worker %tmp2 = zext <4 x i16> %tmp1 to <4 x i32> 1181*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <4 x i32> %tmp2, <i32 1, i32 1, i32 1, i32 1> 1182*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp3 1183*9880d681SAndroid Build Coastguard Worker} 1184*9880d681SAndroid Build Coastguard Worker 1185*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @ushll2_2d(<4 x i32>* %A) nounwind { 1186*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ushll2_2d: 1187*9880d681SAndroid Build Coastguard Worker;CHECK: ushll2.2d v0, {{v[0-9]+}}, #1 1188*9880d681SAndroid Build Coastguard Worker %load1 = load <4 x i32>, <4 x i32>* %A 1189*9880d681SAndroid Build Coastguard Worker %tmp1 = shufflevector <4 x i32> %load1, <4 x i32> undef, <2 x i32> <i32 2, i32 3> 1190*9880d681SAndroid Build Coastguard Worker %tmp2 = zext <2 x i32> %tmp1 to <2 x i64> 1191*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <2 x i64> %tmp2, <i64 1, i64 1> 1192*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 1193*9880d681SAndroid Build Coastguard Worker} 1194*9880d681SAndroid Build Coastguard Worker 1195*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sshll8h(<8 x i8>* %A) nounwind { 1196*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sshll8h: 1197*9880d681SAndroid Build Coastguard Worker;CHECK: sshll.8h v0, {{v[0-9]+}}, #1 1198*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 1199*9880d681SAndroid Build Coastguard Worker %tmp2 = sext <8 x i8> %tmp1 to <8 x i16> 1200*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <8 x i16> %tmp2, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1> 1201*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp3 1202*9880d681SAndroid Build Coastguard Worker} 1203*9880d681SAndroid Build Coastguard Worker 1204*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sshll4s(<4 x i16>* %A) nounwind { 1205*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sshll4s: 1206*9880d681SAndroid Build Coastguard Worker;CHECK: sshll.4s v0, {{v[0-9]+}}, #1 1207*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 1208*9880d681SAndroid Build Coastguard Worker %tmp2 = sext <4 x i16> %tmp1 to <4 x i32> 1209*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <4 x i32> %tmp2, <i32 1, i32 1, i32 1, i32 1> 1210*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp3 1211*9880d681SAndroid Build Coastguard Worker} 1212*9880d681SAndroid Build Coastguard Worker 1213*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sshll2d(<2 x i32>* %A) nounwind { 1214*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sshll2d: 1215*9880d681SAndroid Build Coastguard Worker;CHECK: sshll.2d v0, {{v[0-9]+}}, #1 1216*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 1217*9880d681SAndroid Build Coastguard Worker %tmp2 = sext <2 x i32> %tmp1 to <2 x i64> 1218*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <2 x i64> %tmp2, <i64 1, i64 1> 1219*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 1220*9880d681SAndroid Build Coastguard Worker} 1221*9880d681SAndroid Build Coastguard Worker 1222*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sshll2_8h(<16 x i8>* %A) nounwind { 1223*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sshll2_8h: 1224*9880d681SAndroid Build Coastguard Worker;CHECK: sshll2.8h v0, {{v[0-9]+}}, #1 1225*9880d681SAndroid Build Coastguard Worker %load1 = load <16 x i8>, <16 x i8>* %A 1226*9880d681SAndroid Build Coastguard Worker %tmp1 = shufflevector <16 x i8> %load1, <16 x i8> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> 1227*9880d681SAndroid Build Coastguard Worker %tmp2 = sext <8 x i8> %tmp1 to <8 x i16> 1228*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <8 x i16> %tmp2, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1> 1229*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp3 1230*9880d681SAndroid Build Coastguard Worker} 1231*9880d681SAndroid Build Coastguard Worker 1232*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sshll2_4s(<8 x i16>* %A) nounwind { 1233*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sshll2_4s: 1234*9880d681SAndroid Build Coastguard Worker;CHECK: sshll2.4s v0, {{v[0-9]+}}, #1 1235*9880d681SAndroid Build Coastguard Worker %load1 = load <8 x i16>, <8 x i16>* %A 1236*9880d681SAndroid Build Coastguard Worker %tmp1 = shufflevector <8 x i16> %load1, <8 x i16> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7> 1237*9880d681SAndroid Build Coastguard Worker %tmp2 = sext <4 x i16> %tmp1 to <4 x i32> 1238*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <4 x i32> %tmp2, <i32 1, i32 1, i32 1, i32 1> 1239*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp3 1240*9880d681SAndroid Build Coastguard Worker} 1241*9880d681SAndroid Build Coastguard Worker 1242*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sshll2_2d(<4 x i32>* %A) nounwind { 1243*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sshll2_2d: 1244*9880d681SAndroid Build Coastguard Worker;CHECK: sshll2.2d v0, {{v[0-9]+}}, #1 1245*9880d681SAndroid Build Coastguard Worker %load1 = load <4 x i32>, <4 x i32>* %A 1246*9880d681SAndroid Build Coastguard Worker %tmp1 = shufflevector <4 x i32> %load1, <4 x i32> undef, <2 x i32> <i32 2, i32 3> 1247*9880d681SAndroid Build Coastguard Worker %tmp2 = sext <2 x i32> %tmp1 to <2 x i64> 1248*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <2 x i64> %tmp2, <i64 1, i64 1> 1249*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 1250*9880d681SAndroid Build Coastguard Worker} 1251*9880d681SAndroid Build Coastguard Worker 1252*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqshli8b(<8 x i8>* %A) nounwind { 1253*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshli8b: 1254*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.8b v0, {{v[0-9]+}}, #1 1255*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 1256*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqshl.v8i8(<8 x i8> %tmp1, <8 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>) 1257*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 1258*9880d681SAndroid Build Coastguard Worker} 1259*9880d681SAndroid Build Coastguard Worker 1260*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sqshli4h(<4 x i16>* %A) nounwind { 1261*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshli4h: 1262*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.4h v0, {{v[0-9]+}}, #1 1263*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 1264*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqshl.v4i16(<4 x i16> %tmp1, <4 x i16> <i16 1, i16 1, i16 1, i16 1>) 1265*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 1266*9880d681SAndroid Build Coastguard Worker} 1267*9880d681SAndroid Build Coastguard Worker 1268*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sqshli2s(<2 x i32>* %A) nounwind { 1269*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshli2s: 1270*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.2s v0, {{v[0-9]+}}, #1 1271*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 1272*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqshl.v2i32(<2 x i32> %tmp1, <2 x i32> <i32 1, i32 1>) 1273*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 1274*9880d681SAndroid Build Coastguard Worker} 1275*9880d681SAndroid Build Coastguard Worker 1276*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqshli16b(<16 x i8>* %A) nounwind { 1277*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshli16b: 1278*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.16b v0, {{v[0-9]+}}, #1 1279*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 1280*9880d681SAndroid Build Coastguard Worker %tmp3 = call <16 x i8> @llvm.aarch64.neon.sqshl.v16i8(<16 x i8> %tmp1, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>) 1281*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp3 1282*9880d681SAndroid Build Coastguard Worker} 1283*9880d681SAndroid Build Coastguard Worker 1284*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqshli8h(<8 x i16>* %A) nounwind { 1285*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshli8h: 1286*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.8h v0, {{v[0-9]+}}, #1 1287*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 1288*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i16> @llvm.aarch64.neon.sqshl.v8i16(<8 x i16> %tmp1, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>) 1289*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp3 1290*9880d681SAndroid Build Coastguard Worker} 1291*9880d681SAndroid Build Coastguard Worker 1292*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqshli4s(<4 x i32>* %A) nounwind { 1293*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshli4s: 1294*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.4s v0, {{v[0-9]+}}, #1 1295*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 1296*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i32> @llvm.aarch64.neon.sqshl.v4i32(<4 x i32> %tmp1, <4 x i32> <i32 1, i32 1, i32 1, i32 1>) 1297*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp3 1298*9880d681SAndroid Build Coastguard Worker} 1299*9880d681SAndroid Build Coastguard Worker 1300*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sqshli2d(<2 x i64>* %A) nounwind { 1301*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshli2d: 1302*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.2d v0, {{v[0-9]+}}, #1 1303*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 1304*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i64> @llvm.aarch64.neon.sqshl.v2i64(<2 x i64> %tmp1, <2 x i64> <i64 1, i64 1>) 1305*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 1306*9880d681SAndroid Build Coastguard Worker} 1307*9880d681SAndroid Build Coastguard Worker 1308*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @uqshli8b(<8 x i8>* %A) nounwind { 1309*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshli8b: 1310*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.8b v0, {{v[0-9]+}}, #1 1311*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 1312*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqshl.v8i8(<8 x i8> %tmp1, <8 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>) 1313*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 1314*9880d681SAndroid Build Coastguard Worker} 1315*9880d681SAndroid Build Coastguard Worker 1316*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @uqshli8b_1(<8 x i8>* %A) nounwind { 1317*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshli8b_1: 1318*9880d681SAndroid Build Coastguard Worker;CHECK: movi.8b [[REG:v[0-9]+]], #8 1319*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.8b v0, v0, [[REG]] 1320*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 1321*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqshl.v8i8(<8 x i8> %tmp1, <8 x i8> <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>) 1322*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 1323*9880d681SAndroid Build Coastguard Worker} 1324*9880d681SAndroid Build Coastguard Worker 1325*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @uqshli4h(<4 x i16>* %A) nounwind { 1326*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshli4h: 1327*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.4h v0, {{v[0-9]+}}, #1 1328*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 1329*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.uqshl.v4i16(<4 x i16> %tmp1, <4 x i16> <i16 1, i16 1, i16 1, i16 1>) 1330*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 1331*9880d681SAndroid Build Coastguard Worker} 1332*9880d681SAndroid Build Coastguard Worker 1333*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @uqshli2s(<2 x i32>* %A) nounwind { 1334*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshli2s: 1335*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.2s v0, {{v[0-9]+}}, #1 1336*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 1337*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.uqshl.v2i32(<2 x i32> %tmp1, <2 x i32> <i32 1, i32 1>) 1338*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 1339*9880d681SAndroid Build Coastguard Worker} 1340*9880d681SAndroid Build Coastguard Worker 1341*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @uqshli16b(<16 x i8>* %A) nounwind { 1342*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshli16b: 1343*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.16b 1344*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 1345*9880d681SAndroid Build Coastguard Worker %tmp3 = call <16 x i8> @llvm.aarch64.neon.uqshl.v16i8(<16 x i8> %tmp1, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>) 1346*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp3 1347*9880d681SAndroid Build Coastguard Worker} 1348*9880d681SAndroid Build Coastguard Worker 1349*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @uqshli8h(<8 x i16>* %A) nounwind { 1350*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshli8h: 1351*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.8h v0, {{v[0-9]+}}, #1 1352*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 1353*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i16> @llvm.aarch64.neon.uqshl.v8i16(<8 x i16> %tmp1, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>) 1354*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp3 1355*9880d681SAndroid Build Coastguard Worker} 1356*9880d681SAndroid Build Coastguard Worker 1357*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @uqshli4s(<4 x i32>* %A) nounwind { 1358*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshli4s: 1359*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.4s v0, {{v[0-9]+}}, #1 1360*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 1361*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i32> @llvm.aarch64.neon.uqshl.v4i32(<4 x i32> %tmp1, <4 x i32> <i32 1, i32 1, i32 1, i32 1>) 1362*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp3 1363*9880d681SAndroid Build Coastguard Worker} 1364*9880d681SAndroid Build Coastguard Worker 1365*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @uqshli2d(<2 x i64>* %A) nounwind { 1366*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshli2d: 1367*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.2d v0, {{v[0-9]+}}, #1 1368*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 1369*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i64> @llvm.aarch64.neon.uqshl.v2i64(<2 x i64> %tmp1, <2 x i64> <i64 1, i64 1>) 1370*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 1371*9880d681SAndroid Build Coastguard Worker} 1372*9880d681SAndroid Build Coastguard Worker 1373*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @ursra8b(<8 x i8>* %A, <8 x i8>* %B) nounwind { 1374*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ursra8b: 1375*9880d681SAndroid Build Coastguard Worker;CHECK: ursra.8b v0, {{v[0-9]+}}, #1 1376*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 1377*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.urshl.v8i8(<8 x i8> %tmp1, <8 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>) 1378*9880d681SAndroid Build Coastguard Worker %tmp4 = load <8 x i8>, <8 x i8>* %B 1379*9880d681SAndroid Build Coastguard Worker %tmp5 = add <8 x i8> %tmp3, %tmp4 1380*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp5 1381*9880d681SAndroid Build Coastguard Worker} 1382*9880d681SAndroid Build Coastguard Worker 1383*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @ursra4h(<4 x i16>* %A, <4 x i16>* %B) nounwind { 1384*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ursra4h: 1385*9880d681SAndroid Build Coastguard Worker;CHECK: ursra.4h v0, {{v[0-9]+}}, #1 1386*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 1387*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.urshl.v4i16(<4 x i16> %tmp1, <4 x i16> <i16 -1, i16 -1, i16 -1, i16 -1>) 1388*9880d681SAndroid Build Coastguard Worker %tmp4 = load <4 x i16>, <4 x i16>* %B 1389*9880d681SAndroid Build Coastguard Worker %tmp5 = add <4 x i16> %tmp3, %tmp4 1390*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp5 1391*9880d681SAndroid Build Coastguard Worker} 1392*9880d681SAndroid Build Coastguard Worker 1393*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @ursra2s(<2 x i32>* %A, <2 x i32>* %B) nounwind { 1394*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ursra2s: 1395*9880d681SAndroid Build Coastguard Worker;CHECK: ursra.2s v0, {{v[0-9]+}}, #1 1396*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 1397*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.urshl.v2i32(<2 x i32> %tmp1, <2 x i32> <i32 -1, i32 -1>) 1398*9880d681SAndroid Build Coastguard Worker %tmp4 = load <2 x i32>, <2 x i32>* %B 1399*9880d681SAndroid Build Coastguard Worker %tmp5 = add <2 x i32> %tmp3, %tmp4 1400*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp5 1401*9880d681SAndroid Build Coastguard Worker} 1402*9880d681SAndroid Build Coastguard Worker 1403*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @ursra16b(<16 x i8>* %A, <16 x i8>* %B) nounwind { 1404*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ursra16b: 1405*9880d681SAndroid Build Coastguard Worker;CHECK: ursra.16b v0, {{v[0-9]+}}, #1 1406*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 1407*9880d681SAndroid Build Coastguard Worker %tmp3 = call <16 x i8> @llvm.aarch64.neon.urshl.v16i8(<16 x i8> %tmp1, <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>) 1408*9880d681SAndroid Build Coastguard Worker %tmp4 = load <16 x i8>, <16 x i8>* %B 1409*9880d681SAndroid Build Coastguard Worker %tmp5 = add <16 x i8> %tmp3, %tmp4 1410*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp5 1411*9880d681SAndroid Build Coastguard Worker} 1412*9880d681SAndroid Build Coastguard Worker 1413*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @ursra8h(<8 x i16>* %A, <8 x i16>* %B) nounwind { 1414*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ursra8h: 1415*9880d681SAndroid Build Coastguard Worker;CHECK: ursra.8h v0, {{v[0-9]+}}, #1 1416*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 1417*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i16> @llvm.aarch64.neon.urshl.v8i16(<8 x i16> %tmp1, <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>) 1418*9880d681SAndroid Build Coastguard Worker %tmp4 = load <8 x i16>, <8 x i16>* %B 1419*9880d681SAndroid Build Coastguard Worker %tmp5 = add <8 x i16> %tmp3, %tmp4 1420*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp5 1421*9880d681SAndroid Build Coastguard Worker} 1422*9880d681SAndroid Build Coastguard Worker 1423*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @ursra4s(<4 x i32>* %A, <4 x i32>* %B) nounwind { 1424*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ursra4s: 1425*9880d681SAndroid Build Coastguard Worker;CHECK: ursra.4s v0, {{v[0-9]+}}, #1 1426*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 1427*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i32> @llvm.aarch64.neon.urshl.v4i32(<4 x i32> %tmp1, <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>) 1428*9880d681SAndroid Build Coastguard Worker %tmp4 = load <4 x i32>, <4 x i32>* %B 1429*9880d681SAndroid Build Coastguard Worker %tmp5 = add <4 x i32> %tmp3, %tmp4 1430*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp5 1431*9880d681SAndroid Build Coastguard Worker} 1432*9880d681SAndroid Build Coastguard Worker 1433*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @ursra2d(<2 x i64>* %A, <2 x i64>* %B) nounwind { 1434*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ursra2d: 1435*9880d681SAndroid Build Coastguard Worker;CHECK: ursra.2d v0, {{v[0-9]+}}, #1 1436*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 1437*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i64> @llvm.aarch64.neon.urshl.v2i64(<2 x i64> %tmp1, <2 x i64> <i64 -1, i64 -1>) 1438*9880d681SAndroid Build Coastguard Worker %tmp4 = load <2 x i64>, <2 x i64>* %B 1439*9880d681SAndroid Build Coastguard Worker %tmp5 = add <2 x i64> %tmp3, %tmp4 1440*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp5 1441*9880d681SAndroid Build Coastguard Worker} 1442*9880d681SAndroid Build Coastguard Worker 1443*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @srsra8b(<8 x i8>* %A, <8 x i8>* %B) nounwind { 1444*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srsra8b: 1445*9880d681SAndroid Build Coastguard Worker;CHECK: srsra.8b v0, {{v[0-9]+}}, #1 1446*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 1447*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.srshl.v8i8(<8 x i8> %tmp1, <8 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>) 1448*9880d681SAndroid Build Coastguard Worker %tmp4 = load <8 x i8>, <8 x i8>* %B 1449*9880d681SAndroid Build Coastguard Worker %tmp5 = add <8 x i8> %tmp3, %tmp4 1450*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp5 1451*9880d681SAndroid Build Coastguard Worker} 1452*9880d681SAndroid Build Coastguard Worker 1453*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @srsra4h(<4 x i16>* %A, <4 x i16>* %B) nounwind { 1454*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srsra4h: 1455*9880d681SAndroid Build Coastguard Worker;CHECK: srsra.4h v0, {{v[0-9]+}}, #1 1456*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 1457*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.srshl.v4i16(<4 x i16> %tmp1, <4 x i16> <i16 -1, i16 -1, i16 -1, i16 -1>) 1458*9880d681SAndroid Build Coastguard Worker %tmp4 = load <4 x i16>, <4 x i16>* %B 1459*9880d681SAndroid Build Coastguard Worker %tmp5 = add <4 x i16> %tmp3, %tmp4 1460*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp5 1461*9880d681SAndroid Build Coastguard Worker} 1462*9880d681SAndroid Build Coastguard Worker 1463*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @srsra2s(<2 x i32>* %A, <2 x i32>* %B) nounwind { 1464*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srsra2s: 1465*9880d681SAndroid Build Coastguard Worker;CHECK: srsra.2s v0, {{v[0-9]+}}, #1 1466*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 1467*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.srshl.v2i32(<2 x i32> %tmp1, <2 x i32> <i32 -1, i32 -1>) 1468*9880d681SAndroid Build Coastguard Worker %tmp4 = load <2 x i32>, <2 x i32>* %B 1469*9880d681SAndroid Build Coastguard Worker %tmp5 = add <2 x i32> %tmp3, %tmp4 1470*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp5 1471*9880d681SAndroid Build Coastguard Worker} 1472*9880d681SAndroid Build Coastguard Worker 1473*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @srsra16b(<16 x i8>* %A, <16 x i8>* %B) nounwind { 1474*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srsra16b: 1475*9880d681SAndroid Build Coastguard Worker;CHECK: srsra.16b v0, {{v[0-9]+}}, #1 1476*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 1477*9880d681SAndroid Build Coastguard Worker %tmp3 = call <16 x i8> @llvm.aarch64.neon.srshl.v16i8(<16 x i8> %tmp1, <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>) 1478*9880d681SAndroid Build Coastguard Worker %tmp4 = load <16 x i8>, <16 x i8>* %B 1479*9880d681SAndroid Build Coastguard Worker %tmp5 = add <16 x i8> %tmp3, %tmp4 1480*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp5 1481*9880d681SAndroid Build Coastguard Worker} 1482*9880d681SAndroid Build Coastguard Worker 1483*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @srsra8h(<8 x i16>* %A, <8 x i16>* %B) nounwind { 1484*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srsra8h: 1485*9880d681SAndroid Build Coastguard Worker;CHECK: srsra.8h v0, {{v[0-9]+}}, #1 1486*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 1487*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i16> @llvm.aarch64.neon.srshl.v8i16(<8 x i16> %tmp1, <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>) 1488*9880d681SAndroid Build Coastguard Worker %tmp4 = load <8 x i16>, <8 x i16>* %B 1489*9880d681SAndroid Build Coastguard Worker %tmp5 = add <8 x i16> %tmp3, %tmp4 1490*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp5 1491*9880d681SAndroid Build Coastguard Worker} 1492*9880d681SAndroid Build Coastguard Worker 1493*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @srsra4s(<4 x i32>* %A, <4 x i32>* %B) nounwind { 1494*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srsra4s: 1495*9880d681SAndroid Build Coastguard Worker;CHECK: srsra.4s v0, {{v[0-9]+}}, #1 1496*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 1497*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i32> @llvm.aarch64.neon.srshl.v4i32(<4 x i32> %tmp1, <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>) 1498*9880d681SAndroid Build Coastguard Worker %tmp4 = load <4 x i32>, <4 x i32>* %B 1499*9880d681SAndroid Build Coastguard Worker %tmp5 = add <4 x i32> %tmp3, %tmp4 1500*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp5 1501*9880d681SAndroid Build Coastguard Worker} 1502*9880d681SAndroid Build Coastguard Worker 1503*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @srsra2d(<2 x i64>* %A, <2 x i64>* %B) nounwind { 1504*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srsra2d: 1505*9880d681SAndroid Build Coastguard Worker;CHECK: srsra.2d v0, {{v[0-9]+}}, #1 1506*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 1507*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i64> @llvm.aarch64.neon.srshl.v2i64(<2 x i64> %tmp1, <2 x i64> <i64 -1, i64 -1>) 1508*9880d681SAndroid Build Coastguard Worker %tmp4 = load <2 x i64>, <2 x i64>* %B 1509*9880d681SAndroid Build Coastguard Worker %tmp5 = add <2 x i64> %tmp3, %tmp4 1510*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp5 1511*9880d681SAndroid Build Coastguard Worker} 1512*9880d681SAndroid Build Coastguard Worker 1513*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @usra8b(<8 x i8>* %A, <8 x i8>* %B) nounwind { 1514*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: usra8b: 1515*9880d681SAndroid Build Coastguard Worker;CHECK: usra.8b v0, {{v[0-9]+}}, #1 1516*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 1517*9880d681SAndroid Build Coastguard Worker %tmp3 = lshr <8 x i8> %tmp1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1> 1518*9880d681SAndroid Build Coastguard Worker %tmp4 = load <8 x i8>, <8 x i8>* %B 1519*9880d681SAndroid Build Coastguard Worker %tmp5 = add <8 x i8> %tmp3, %tmp4 1520*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp5 1521*9880d681SAndroid Build Coastguard Worker} 1522*9880d681SAndroid Build Coastguard Worker 1523*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @usra4h(<4 x i16>* %A, <4 x i16>* %B) nounwind { 1524*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: usra4h: 1525*9880d681SAndroid Build Coastguard Worker;CHECK: usra.4h v0, {{v[0-9]+}}, #1 1526*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 1527*9880d681SAndroid Build Coastguard Worker %tmp3 = lshr <4 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1> 1528*9880d681SAndroid Build Coastguard Worker %tmp4 = load <4 x i16>, <4 x i16>* %B 1529*9880d681SAndroid Build Coastguard Worker %tmp5 = add <4 x i16> %tmp3, %tmp4 1530*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp5 1531*9880d681SAndroid Build Coastguard Worker} 1532*9880d681SAndroid Build Coastguard Worker 1533*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @usra2s(<2 x i32>* %A, <2 x i32>* %B) nounwind { 1534*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: usra2s: 1535*9880d681SAndroid Build Coastguard Worker;CHECK: usra.2s v0, {{v[0-9]+}}, #1 1536*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 1537*9880d681SAndroid Build Coastguard Worker %tmp3 = lshr <2 x i32> %tmp1, <i32 1, i32 1> 1538*9880d681SAndroid Build Coastguard Worker %tmp4 = load <2 x i32>, <2 x i32>* %B 1539*9880d681SAndroid Build Coastguard Worker %tmp5 = add <2 x i32> %tmp3, %tmp4 1540*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp5 1541*9880d681SAndroid Build Coastguard Worker} 1542*9880d681SAndroid Build Coastguard Worker 1543*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @usra16b(<16 x i8>* %A, <16 x i8>* %B) nounwind { 1544*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: usra16b: 1545*9880d681SAndroid Build Coastguard Worker;CHECK: usra.16b v0, {{v[0-9]+}}, #1 1546*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 1547*9880d681SAndroid Build Coastguard Worker %tmp3 = lshr <16 x i8> %tmp1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1> 1548*9880d681SAndroid Build Coastguard Worker %tmp4 = load <16 x i8>, <16 x i8>* %B 1549*9880d681SAndroid Build Coastguard Worker %tmp5 = add <16 x i8> %tmp3, %tmp4 1550*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp5 1551*9880d681SAndroid Build Coastguard Worker} 1552*9880d681SAndroid Build Coastguard Worker 1553*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @usra8h(<8 x i16>* %A, <8 x i16>* %B) nounwind { 1554*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: usra8h: 1555*9880d681SAndroid Build Coastguard Worker;CHECK: usra.8h v0, {{v[0-9]+}}, #1 1556*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 1557*9880d681SAndroid Build Coastguard Worker %tmp3 = lshr <8 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1> 1558*9880d681SAndroid Build Coastguard Worker %tmp4 = load <8 x i16>, <8 x i16>* %B 1559*9880d681SAndroid Build Coastguard Worker %tmp5 = add <8 x i16> %tmp3, %tmp4 1560*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp5 1561*9880d681SAndroid Build Coastguard Worker} 1562*9880d681SAndroid Build Coastguard Worker 1563*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @usra4s(<4 x i32>* %A, <4 x i32>* %B) nounwind { 1564*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: usra4s: 1565*9880d681SAndroid Build Coastguard Worker;CHECK: usra.4s v0, {{v[0-9]+}}, #1 1566*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 1567*9880d681SAndroid Build Coastguard Worker %tmp3 = lshr <4 x i32> %tmp1, <i32 1, i32 1, i32 1, i32 1> 1568*9880d681SAndroid Build Coastguard Worker %tmp4 = load <4 x i32>, <4 x i32>* %B 1569*9880d681SAndroid Build Coastguard Worker %tmp5 = add <4 x i32> %tmp3, %tmp4 1570*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp5 1571*9880d681SAndroid Build Coastguard Worker} 1572*9880d681SAndroid Build Coastguard Worker 1573*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @usra2d(<2 x i64>* %A, <2 x i64>* %B) nounwind { 1574*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: usra2d: 1575*9880d681SAndroid Build Coastguard Worker;CHECK: usra.2d v0, {{v[0-9]+}}, #1 1576*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 1577*9880d681SAndroid Build Coastguard Worker %tmp3 = lshr <2 x i64> %tmp1, <i64 1, i64 1> 1578*9880d681SAndroid Build Coastguard Worker %tmp4 = load <2 x i64>, <2 x i64>* %B 1579*9880d681SAndroid Build Coastguard Worker %tmp5 = add <2 x i64> %tmp3, %tmp4 1580*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp5 1581*9880d681SAndroid Build Coastguard Worker} 1582*9880d681SAndroid Build Coastguard Worker 1583*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @ssra8b(<8 x i8>* %A, <8 x i8>* %B) nounwind { 1584*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ssra8b: 1585*9880d681SAndroid Build Coastguard Worker;CHECK: ssra.8b v0, {{v[0-9]+}}, #1 1586*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 1587*9880d681SAndroid Build Coastguard Worker %tmp3 = ashr <8 x i8> %tmp1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1> 1588*9880d681SAndroid Build Coastguard Worker %tmp4 = load <8 x i8>, <8 x i8>* %B 1589*9880d681SAndroid Build Coastguard Worker %tmp5 = add <8 x i8> %tmp3, %tmp4 1590*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp5 1591*9880d681SAndroid Build Coastguard Worker} 1592*9880d681SAndroid Build Coastguard Worker 1593*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @ssra4h(<4 x i16>* %A, <4 x i16>* %B) nounwind { 1594*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ssra4h: 1595*9880d681SAndroid Build Coastguard Worker;CHECK: ssra.4h v0, {{v[0-9]+}}, #1 1596*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 1597*9880d681SAndroid Build Coastguard Worker %tmp3 = ashr <4 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1> 1598*9880d681SAndroid Build Coastguard Worker %tmp4 = load <4 x i16>, <4 x i16>* %B 1599*9880d681SAndroid Build Coastguard Worker %tmp5 = add <4 x i16> %tmp3, %tmp4 1600*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp5 1601*9880d681SAndroid Build Coastguard Worker} 1602*9880d681SAndroid Build Coastguard Worker 1603*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @ssra2s(<2 x i32>* %A, <2 x i32>* %B) nounwind { 1604*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ssra2s: 1605*9880d681SAndroid Build Coastguard Worker;CHECK: ssra.2s v0, {{v[0-9]+}}, #1 1606*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 1607*9880d681SAndroid Build Coastguard Worker %tmp3 = ashr <2 x i32> %tmp1, <i32 1, i32 1> 1608*9880d681SAndroid Build Coastguard Worker %tmp4 = load <2 x i32>, <2 x i32>* %B 1609*9880d681SAndroid Build Coastguard Worker %tmp5 = add <2 x i32> %tmp3, %tmp4 1610*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp5 1611*9880d681SAndroid Build Coastguard Worker} 1612*9880d681SAndroid Build Coastguard Worker 1613*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @ssra16b(<16 x i8>* %A, <16 x i8>* %B) nounwind { 1614*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ssra16b: 1615*9880d681SAndroid Build Coastguard Worker;CHECK: ssra.16b v0, {{v[0-9]+}}, #1 1616*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 1617*9880d681SAndroid Build Coastguard Worker %tmp3 = ashr <16 x i8> %tmp1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1> 1618*9880d681SAndroid Build Coastguard Worker %tmp4 = load <16 x i8>, <16 x i8>* %B 1619*9880d681SAndroid Build Coastguard Worker %tmp5 = add <16 x i8> %tmp3, %tmp4 1620*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp5 1621*9880d681SAndroid Build Coastguard Worker} 1622*9880d681SAndroid Build Coastguard Worker 1623*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @ssra8h(<8 x i16>* %A, <8 x i16>* %B) nounwind { 1624*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ssra8h: 1625*9880d681SAndroid Build Coastguard Worker;CHECK: ssra.8h v0, {{v[0-9]+}}, #1 1626*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 1627*9880d681SAndroid Build Coastguard Worker %tmp3 = ashr <8 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1> 1628*9880d681SAndroid Build Coastguard Worker %tmp4 = load <8 x i16>, <8 x i16>* %B 1629*9880d681SAndroid Build Coastguard Worker %tmp5 = add <8 x i16> %tmp3, %tmp4 1630*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp5 1631*9880d681SAndroid Build Coastguard Worker} 1632*9880d681SAndroid Build Coastguard Worker 1633*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @ssra4s(<4 x i32>* %A, <4 x i32>* %B) nounwind { 1634*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ssra4s: 1635*9880d681SAndroid Build Coastguard Worker;CHECK: ssra.4s v0, {{v[0-9]+}}, #1 1636*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 1637*9880d681SAndroid Build Coastguard Worker %tmp3 = ashr <4 x i32> %tmp1, <i32 1, i32 1, i32 1, i32 1> 1638*9880d681SAndroid Build Coastguard Worker %tmp4 = load <4 x i32>, <4 x i32>* %B 1639*9880d681SAndroid Build Coastguard Worker %tmp5 = add <4 x i32> %tmp3, %tmp4 1640*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp5 1641*9880d681SAndroid Build Coastguard Worker} 1642*9880d681SAndroid Build Coastguard Worker 1643*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @ssra2d(<2 x i64>* %A, <2 x i64>* %B) nounwind { 1644*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ssra2d: 1645*9880d681SAndroid Build Coastguard Worker;CHECK: ssra.2d v0, {{v[0-9]+}}, #1 1646*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 1647*9880d681SAndroid Build Coastguard Worker %tmp3 = ashr <2 x i64> %tmp1, <i64 1, i64 1> 1648*9880d681SAndroid Build Coastguard Worker %tmp4 = load <2 x i64>, <2 x i64>* %B 1649*9880d681SAndroid Build Coastguard Worker %tmp5 = add <2 x i64> %tmp3, %tmp4 1650*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp5 1651*9880d681SAndroid Build Coastguard Worker} 1652*9880d681SAndroid Build Coastguard Worker 1653*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @shr_orr8b(<8 x i8>* %A, <8 x i8>* %B) nounwind { 1654*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shr_orr8b: 1655*9880d681SAndroid Build Coastguard Worker;CHECK: shr.8b v0, {{v[0-9]+}}, #1 1656*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.8b 1657*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret 1658*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 1659*9880d681SAndroid Build Coastguard Worker %tmp4 = load <8 x i8>, <8 x i8>* %B 1660*9880d681SAndroid Build Coastguard Worker %tmp3 = lshr <8 x i8> %tmp1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1> 1661*9880d681SAndroid Build Coastguard Worker %tmp5 = or <8 x i8> %tmp3, %tmp4 1662*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp5 1663*9880d681SAndroid Build Coastguard Worker} 1664*9880d681SAndroid Build Coastguard Worker 1665*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @shr_orr4h(<4 x i16>* %A, <4 x i16>* %B) nounwind { 1666*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shr_orr4h: 1667*9880d681SAndroid Build Coastguard Worker;CHECK: shr.4h v0, {{v[0-9]+}}, #1 1668*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.8b 1669*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret 1670*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 1671*9880d681SAndroid Build Coastguard Worker %tmp4 = load <4 x i16>, <4 x i16>* %B 1672*9880d681SAndroid Build Coastguard Worker %tmp3 = lshr <4 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1> 1673*9880d681SAndroid Build Coastguard Worker %tmp5 = or <4 x i16> %tmp3, %tmp4 1674*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp5 1675*9880d681SAndroid Build Coastguard Worker} 1676*9880d681SAndroid Build Coastguard Worker 1677*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @shr_orr2s(<2 x i32>* %A, <2 x i32>* %B) nounwind { 1678*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shr_orr2s: 1679*9880d681SAndroid Build Coastguard Worker;CHECK: shr.2s v0, {{v[0-9]+}}, #1 1680*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.8b 1681*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret 1682*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 1683*9880d681SAndroid Build Coastguard Worker %tmp4 = load <2 x i32>, <2 x i32>* %B 1684*9880d681SAndroid Build Coastguard Worker %tmp3 = lshr <2 x i32> %tmp1, <i32 1, i32 1> 1685*9880d681SAndroid Build Coastguard Worker %tmp5 = or <2 x i32> %tmp3, %tmp4 1686*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp5 1687*9880d681SAndroid Build Coastguard Worker} 1688*9880d681SAndroid Build Coastguard Worker 1689*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @shr_orr16b(<16 x i8>* %A, <16 x i8>* %B) nounwind { 1690*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shr_orr16b: 1691*9880d681SAndroid Build Coastguard Worker;CHECK: shr.16b v0, {{v[0-9]+}}, #1 1692*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.16b 1693*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret 1694*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 1695*9880d681SAndroid Build Coastguard Worker %tmp4 = load <16 x i8>, <16 x i8>* %B 1696*9880d681SAndroid Build Coastguard Worker %tmp3 = lshr <16 x i8> %tmp1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1> 1697*9880d681SAndroid Build Coastguard Worker %tmp5 = or <16 x i8> %tmp3, %tmp4 1698*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp5 1699*9880d681SAndroid Build Coastguard Worker} 1700*9880d681SAndroid Build Coastguard Worker 1701*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shr_orr8h(<8 x i16>* %A, <8 x i16>* %B) nounwind { 1702*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shr_orr8h: 1703*9880d681SAndroid Build Coastguard Worker;CHECK: shr.8h v0, {{v[0-9]+}}, #1 1704*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.16b 1705*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret 1706*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 1707*9880d681SAndroid Build Coastguard Worker %tmp4 = load <8 x i16>, <8 x i16>* %B 1708*9880d681SAndroid Build Coastguard Worker %tmp3 = lshr <8 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1> 1709*9880d681SAndroid Build Coastguard Worker %tmp5 = or <8 x i16> %tmp3, %tmp4 1710*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp5 1711*9880d681SAndroid Build Coastguard Worker} 1712*9880d681SAndroid Build Coastguard Worker 1713*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @shr_orr4s(<4 x i32>* %A, <4 x i32>* %B) nounwind { 1714*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shr_orr4s: 1715*9880d681SAndroid Build Coastguard Worker;CHECK: shr.4s v0, {{v[0-9]+}}, #1 1716*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.16b 1717*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret 1718*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 1719*9880d681SAndroid Build Coastguard Worker %tmp4 = load <4 x i32>, <4 x i32>* %B 1720*9880d681SAndroid Build Coastguard Worker %tmp3 = lshr <4 x i32> %tmp1, <i32 1, i32 1, i32 1, i32 1> 1721*9880d681SAndroid Build Coastguard Worker %tmp5 = or <4 x i32> %tmp3, %tmp4 1722*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp5 1723*9880d681SAndroid Build Coastguard Worker} 1724*9880d681SAndroid Build Coastguard Worker 1725*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @shr_orr2d(<2 x i64>* %A, <2 x i64>* %B) nounwind { 1726*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shr_orr2d: 1727*9880d681SAndroid Build Coastguard Worker;CHECK: shr.2d v0, {{v[0-9]+}}, #1 1728*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.16b 1729*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret 1730*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 1731*9880d681SAndroid Build Coastguard Worker %tmp4 = load <2 x i64>, <2 x i64>* %B 1732*9880d681SAndroid Build Coastguard Worker %tmp3 = lshr <2 x i64> %tmp1, <i64 1, i64 1> 1733*9880d681SAndroid Build Coastguard Worker %tmp5 = or <2 x i64> %tmp3, %tmp4 1734*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp5 1735*9880d681SAndroid Build Coastguard Worker} 1736*9880d681SAndroid Build Coastguard Worker 1737*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @shl_orr8b(<8 x i8>* %A, <8 x i8>* %B) nounwind { 1738*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shl_orr8b: 1739*9880d681SAndroid Build Coastguard Worker;CHECK: shl.8b v0, {{v[0-9]+}}, #1 1740*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.8b 1741*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret 1742*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 1743*9880d681SAndroid Build Coastguard Worker %tmp4 = load <8 x i8>, <8 x i8>* %B 1744*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <8 x i8> %tmp1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1> 1745*9880d681SAndroid Build Coastguard Worker %tmp5 = or <8 x i8> %tmp3, %tmp4 1746*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp5 1747*9880d681SAndroid Build Coastguard Worker} 1748*9880d681SAndroid Build Coastguard Worker 1749*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @shl_orr4h(<4 x i16>* %A, <4 x i16>* %B) nounwind { 1750*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shl_orr4h: 1751*9880d681SAndroid Build Coastguard Worker;CHECK: shl.4h v0, {{v[0-9]+}}, #1 1752*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.8b 1753*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret 1754*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 1755*9880d681SAndroid Build Coastguard Worker %tmp4 = load <4 x i16>, <4 x i16>* %B 1756*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <4 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1> 1757*9880d681SAndroid Build Coastguard Worker %tmp5 = or <4 x i16> %tmp3, %tmp4 1758*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp5 1759*9880d681SAndroid Build Coastguard Worker} 1760*9880d681SAndroid Build Coastguard Worker 1761*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @shl_orr2s(<2 x i32>* %A, <2 x i32>* %B) nounwind { 1762*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shl_orr2s: 1763*9880d681SAndroid Build Coastguard Worker;CHECK: shl.2s v0, {{v[0-9]+}}, #1 1764*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.8b 1765*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret 1766*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 1767*9880d681SAndroid Build Coastguard Worker %tmp4 = load <2 x i32>, <2 x i32>* %B 1768*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <2 x i32> %tmp1, <i32 1, i32 1> 1769*9880d681SAndroid Build Coastguard Worker %tmp5 = or <2 x i32> %tmp3, %tmp4 1770*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp5 1771*9880d681SAndroid Build Coastguard Worker} 1772*9880d681SAndroid Build Coastguard Worker 1773*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @shl_orr16b(<16 x i8>* %A, <16 x i8>* %B) nounwind { 1774*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shl_orr16b: 1775*9880d681SAndroid Build Coastguard Worker;CHECK: shl.16b v0, {{v[0-9]+}}, #1 1776*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.16b 1777*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret 1778*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 1779*9880d681SAndroid Build Coastguard Worker %tmp4 = load <16 x i8>, <16 x i8>* %B 1780*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <16 x i8> %tmp1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1> 1781*9880d681SAndroid Build Coastguard Worker %tmp5 = or <16 x i8> %tmp3, %tmp4 1782*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp5 1783*9880d681SAndroid Build Coastguard Worker} 1784*9880d681SAndroid Build Coastguard Worker 1785*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shl_orr8h(<8 x i16>* %A, <8 x i16>* %B) nounwind { 1786*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shl_orr8h: 1787*9880d681SAndroid Build Coastguard Worker;CHECK: shl.8h v0, {{v[0-9]+}}, #1 1788*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.16b 1789*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret 1790*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 1791*9880d681SAndroid Build Coastguard Worker %tmp4 = load <8 x i16>, <8 x i16>* %B 1792*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <8 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1> 1793*9880d681SAndroid Build Coastguard Worker %tmp5 = or <8 x i16> %tmp3, %tmp4 1794*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp5 1795*9880d681SAndroid Build Coastguard Worker} 1796*9880d681SAndroid Build Coastguard Worker 1797*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @shl_orr4s(<4 x i32>* %A, <4 x i32>* %B) nounwind { 1798*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shl_orr4s: 1799*9880d681SAndroid Build Coastguard Worker;CHECK: shl.4s v0, {{v[0-9]+}}, #1 1800*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.16b 1801*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret 1802*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 1803*9880d681SAndroid Build Coastguard Worker %tmp4 = load <4 x i32>, <4 x i32>* %B 1804*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <4 x i32> %tmp1, <i32 1, i32 1, i32 1, i32 1> 1805*9880d681SAndroid Build Coastguard Worker %tmp5 = or <4 x i32> %tmp3, %tmp4 1806*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp5 1807*9880d681SAndroid Build Coastguard Worker} 1808*9880d681SAndroid Build Coastguard Worker 1809*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @shl_orr2d(<2 x i64>* %A, <2 x i64>* %B) nounwind { 1810*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shl_orr2d: 1811*9880d681SAndroid Build Coastguard Worker;CHECK: shl.2d v0, {{v[0-9]+}}, #1 1812*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.16b 1813*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret 1814*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 1815*9880d681SAndroid Build Coastguard Worker %tmp4 = load <2 x i64>, <2 x i64>* %B 1816*9880d681SAndroid Build Coastguard Worker %tmp3 = shl <2 x i64> %tmp1, <i64 1, i64 1> 1817*9880d681SAndroid Build Coastguard Worker %tmp5 = or <2 x i64> %tmp3, %tmp4 1818*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp5 1819*9880d681SAndroid Build Coastguard Worker} 1820*9880d681SAndroid Build Coastguard Worker 1821*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shll(<8 x i8> %in) { 1822*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shll: 1823*9880d681SAndroid Build Coastguard Worker; CHECK: shll.8h v0, {{v[0-9]+}}, #8 1824*9880d681SAndroid Build Coastguard Worker %ext = zext <8 x i8> %in to <8 x i16> 1825*9880d681SAndroid Build Coastguard Worker %res = shl <8 x i16> %ext, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8> 1826*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %res 1827*9880d681SAndroid Build Coastguard Worker} 1828*9880d681SAndroid Build Coastguard Worker 1829*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @shll_high(<8 x i16> %in) { 1830*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shll_high 1831*9880d681SAndroid Build Coastguard Worker; CHECK: shll2.4s v0, {{v[0-9]+}}, #16 1832*9880d681SAndroid Build Coastguard Worker %extract = shufflevector <8 x i16> %in, <8 x i16> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7> 1833*9880d681SAndroid Build Coastguard Worker %ext = zext <4 x i16> %extract to <4 x i32> 1834*9880d681SAndroid Build Coastguard Worker %res = shl <4 x i32> %ext, <i32 16, i32 16, i32 16, i32 16> 1835*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %res 1836*9880d681SAndroid Build Coastguard Worker} 1837*9880d681SAndroid Build Coastguard Worker 1838*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sli8b(<8 x i8>* %A, <8 x i8>* %B) nounwind { 1839*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sli8b: 1840*9880d681SAndroid Build Coastguard Worker;CHECK: sli.8b v0, {{v[0-9]+}}, #1 1841*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i8>, <8 x i8>* %A 1842*9880d681SAndroid Build Coastguard Worker %tmp2 = load <8 x i8>, <8 x i8>* %B 1843*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i8> @llvm.aarch64.neon.vsli.v8i8(<8 x i8> %tmp1, <8 x i8> %tmp2, i32 1) 1844*9880d681SAndroid Build Coastguard Worker ret <8 x i8> %tmp3 1845*9880d681SAndroid Build Coastguard Worker} 1846*9880d681SAndroid Build Coastguard Worker 1847*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sli4h(<4 x i16>* %A, <4 x i16>* %B) nounwind { 1848*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sli4h: 1849*9880d681SAndroid Build Coastguard Worker;CHECK: sli.4h v0, {{v[0-9]+}}, #1 1850*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i16>, <4 x i16>* %A 1851*9880d681SAndroid Build Coastguard Worker %tmp2 = load <4 x i16>, <4 x i16>* %B 1852*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i16> @llvm.aarch64.neon.vsli.v4i16(<4 x i16> %tmp1, <4 x i16> %tmp2, i32 1) 1853*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %tmp3 1854*9880d681SAndroid Build Coastguard Worker} 1855*9880d681SAndroid Build Coastguard Worker 1856*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sli2s(<2 x i32>* %A, <2 x i32>* %B) nounwind { 1857*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sli2s: 1858*9880d681SAndroid Build Coastguard Worker;CHECK: sli.2s v0, {{v[0-9]+}}, #1 1859*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i32>, <2 x i32>* %A 1860*9880d681SAndroid Build Coastguard Worker %tmp2 = load <2 x i32>, <2 x i32>* %B 1861*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i32> @llvm.aarch64.neon.vsli.v2i32(<2 x i32> %tmp1, <2 x i32> %tmp2, i32 1) 1862*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp3 1863*9880d681SAndroid Build Coastguard Worker} 1864*9880d681SAndroid Build Coastguard Worker 1865*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @sli1d(<1 x i64>* %A, <1 x i64>* %B) nounwind { 1866*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sli1d: 1867*9880d681SAndroid Build Coastguard Worker;CHECK: sli d0, {{d[0-9]+}}, #1 1868*9880d681SAndroid Build Coastguard Worker %tmp1 = load <1 x i64>, <1 x i64>* %A 1869*9880d681SAndroid Build Coastguard Worker %tmp2 = load <1 x i64>, <1 x i64>* %B 1870*9880d681SAndroid Build Coastguard Worker %tmp3 = call <1 x i64> @llvm.aarch64.neon.vsli.v1i64(<1 x i64> %tmp1, <1 x i64> %tmp2, i32 1) 1871*9880d681SAndroid Build Coastguard Worker ret <1 x i64> %tmp3 1872*9880d681SAndroid Build Coastguard Worker} 1873*9880d681SAndroid Build Coastguard Worker 1874*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sli16b(<16 x i8>* %A, <16 x i8>* %B) nounwind { 1875*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sli16b: 1876*9880d681SAndroid Build Coastguard Worker;CHECK: sli.16b v0, {{v[0-9]+}}, #1 1877*9880d681SAndroid Build Coastguard Worker %tmp1 = load <16 x i8>, <16 x i8>* %A 1878*9880d681SAndroid Build Coastguard Worker %tmp2 = load <16 x i8>, <16 x i8>* %B 1879*9880d681SAndroid Build Coastguard Worker %tmp3 = call <16 x i8> @llvm.aarch64.neon.vsli.v16i8(<16 x i8> %tmp1, <16 x i8> %tmp2, i32 1) 1880*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %tmp3 1881*9880d681SAndroid Build Coastguard Worker} 1882*9880d681SAndroid Build Coastguard Worker 1883*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sli8h(<8 x i16>* %A, <8 x i16>* %B) nounwind { 1884*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sli8h: 1885*9880d681SAndroid Build Coastguard Worker;CHECK: sli.8h v0, {{v[0-9]+}}, #1 1886*9880d681SAndroid Build Coastguard Worker %tmp1 = load <8 x i16>, <8 x i16>* %A 1887*9880d681SAndroid Build Coastguard Worker %tmp2 = load <8 x i16>, <8 x i16>* %B 1888*9880d681SAndroid Build Coastguard Worker %tmp3 = call <8 x i16> @llvm.aarch64.neon.vsli.v8i16(<8 x i16> %tmp1, <8 x i16> %tmp2, i32 1) 1889*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %tmp3 1890*9880d681SAndroid Build Coastguard Worker} 1891*9880d681SAndroid Build Coastguard Worker 1892*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sli4s(<4 x i32>* %A, <4 x i32>* %B) nounwind { 1893*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sli4s: 1894*9880d681SAndroid Build Coastguard Worker;CHECK: sli.4s v0, {{v[0-9]+}}, #1 1895*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x i32>, <4 x i32>* %A 1896*9880d681SAndroid Build Coastguard Worker %tmp2 = load <4 x i32>, <4 x i32>* %B 1897*9880d681SAndroid Build Coastguard Worker %tmp3 = call <4 x i32> @llvm.aarch64.neon.vsli.v4i32(<4 x i32> %tmp1, <4 x i32> %tmp2, i32 1) 1898*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp3 1899*9880d681SAndroid Build Coastguard Worker} 1900*9880d681SAndroid Build Coastguard Worker 1901*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sli2d(<2 x i64>* %A, <2 x i64>* %B) nounwind { 1902*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sli2d: 1903*9880d681SAndroid Build Coastguard Worker;CHECK: sli.2d v0, {{v[0-9]+}}, #1 1904*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x i64>, <2 x i64>* %A 1905*9880d681SAndroid Build Coastguard Worker %tmp2 = load <2 x i64>, <2 x i64>* %B 1906*9880d681SAndroid Build Coastguard Worker %tmp3 = call <2 x i64> @llvm.aarch64.neon.vsli.v2i64(<2 x i64> %tmp1, <2 x i64> %tmp2, i32 1) 1907*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %tmp3 1908*9880d681SAndroid Build Coastguard Worker} 1909*9880d681SAndroid Build Coastguard Worker 1910*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8> @llvm.aarch64.neon.vsli.v8i8(<8 x i8>, <8 x i8>, i32) nounwind readnone 1911*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.vsli.v4i16(<4 x i16>, <4 x i16>, i32) nounwind readnone 1912*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.vsli.v2i32(<2 x i32>, <2 x i32>, i32) nounwind readnone 1913*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @llvm.aarch64.neon.vsli.v1i64(<1 x i64>, <1 x i64>, i32) nounwind readnone 1914*9880d681SAndroid Build Coastguard Worker 1915*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.aarch64.neon.vsli.v16i8(<16 x i8>, <16 x i8>, i32) nounwind readnone 1916*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.aarch64.neon.vsli.v8i16(<8 x i16>, <8 x i16>, i32) nounwind readnone 1917*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.vsli.v4i32(<4 x i32>, <4 x i32>, i32) nounwind readnone 1918*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.vsli.v2i64(<2 x i64>, <2 x i64>, i32) nounwind readnone 1919*9880d681SAndroid Build Coastguard Worker 1920*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @ashr_v1i64(<1 x i64> %a, <1 x i64> %b) { 1921*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ashr_v1i64: 1922*9880d681SAndroid Build Coastguard Worker; CHECK: neg d{{[0-9]+}}, d{{[0-9]+}} 1923*9880d681SAndroid Build Coastguard Worker; CHECK: sshl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}} 1924*9880d681SAndroid Build Coastguard Worker %c = ashr <1 x i64> %a, %b 1925*9880d681SAndroid Build Coastguard Worker ret <1 x i64> %c 1926*9880d681SAndroid Build Coastguard Worker} 1927