1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mips -mattr=+msa,+fp64 < %s | FileCheck -check-prefixes=MIPS32-AE,MIPS32-BE %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel -mattr=+msa,+fp64 < %s | FileCheck -check-prefixes=MIPS32-AE,MIPS32-LE %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v16i8_near() nounwind { 5*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v16i8_near: 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker %1 = alloca <16 x i8> 8*9880d681SAndroid Build Coastguard Worker %2 = load volatile <16 x i8>, <16 x i8>* %1 9*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.b [[R1:\$w[0-9]+]], 0($sp) 10*9880d681SAndroid Build Coastguard Worker store volatile <16 x i8> %2, <16 x i8>* %1 11*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.b [[R1]], 0($sp) 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker ret void 14*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v16i8_near 15*9880d681SAndroid Build Coastguard Worker} 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v16i8_just_under_simm10() nounwind { 18*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v16i8_just_under_simm10: 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker %1 = alloca <16 x i8> 21*9880d681SAndroid Build Coastguard Worker %2 = alloca [496 x i8] ; Push the frame right up to 512 bytes 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker %3 = load volatile <16 x i8>, <16 x i8>* %1 24*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.b [[R1:\$w[0-9]+]], 496($sp) 25*9880d681SAndroid Build Coastguard Worker store volatile <16 x i8> %3, <16 x i8>* %1 26*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.b [[R1]], 496($sp) 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker ret void 29*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v16i8_just_under_simm10 30*9880d681SAndroid Build Coastguard Worker} 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v16i8_just_over_simm10() nounwind { 33*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v16i8_just_over_simm10: 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker %1 = alloca <16 x i8> 36*9880d681SAndroid Build Coastguard Worker %2 = alloca [497 x i8] ; Push the frame just over 512 bytes 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker %3 = load volatile <16 x i8>, <16 x i8>* %1 39*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addiu [[BASE:\$([0-9]+|gp)]], $sp, 512 40*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.b [[R1:\$w[0-9]+]], 0([[BASE]]) 41*9880d681SAndroid Build Coastguard Worker store volatile <16 x i8> %3, <16 x i8>* %1 42*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addiu [[BASE:\$([0-9]+|gp)]], $sp, 512 43*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.b [[R1]], 0([[BASE]]) 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker ret void 46*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v16i8_just_over_simm10 47*9880d681SAndroid Build Coastguard Worker} 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v16i8_just_under_simm16() nounwind { 50*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v16i8_just_under_simm16: 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker %1 = alloca <16 x i8> 53*9880d681SAndroid Build Coastguard Worker %2 = alloca [32752 x i8] ; Push the frame right up to 32768 bytes 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Worker %3 = load volatile <16 x i8>, <16 x i8>* %1 56*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ori [[R2:\$([0-9]+|gp)]], $zero, 32768 57*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addu [[BASE:\$([0-9]+|gp)]], $sp, [[R2]] 58*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.b [[R1:\$w[0-9]+]], 0([[BASE]]) 59*9880d681SAndroid Build Coastguard Worker store volatile <16 x i8> %3, <16 x i8>* %1 60*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ori [[R2:\$([0-9]+|gp)]], $zero, 32768 61*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addu [[BASE:\$([0-9]+|gp)]], $sp, [[R2]] 62*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.b [[R1]], 0([[BASE]]) 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Worker ret void 65*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v16i8_just_under_simm16 66*9880d681SAndroid Build Coastguard Worker} 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v16i8_just_over_simm16() nounwind { 69*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v16i8_just_over_simm16: 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Worker %1 = alloca <16 x i8> 72*9880d681SAndroid Build Coastguard Worker %2 = alloca [32753 x i8] ; Push the frame just over 32768 bytes 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard Worker %3 = load volatile <16 x i8>, <16 x i8>* %1 75*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ori [[R2:\$([0-9]+|gp)]], $zero, 32768 76*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addu [[BASE:\$([0-9]+|gp)]], $sp, [[R2]] 77*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.b [[R1:\$w[0-9]+]], 0([[BASE]]) 78*9880d681SAndroid Build Coastguard Worker store volatile <16 x i8> %3, <16 x i8>* %1 79*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ori [[R2:\$([0-9]+|gp)]], $zero, 32768 80*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addu [[BASE:\$([0-9]+|gp)]], $sp, [[R2]] 81*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.b [[R1]], 0([[BASE]]) 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Worker ret void 84*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v16i8_just_over_simm16 85*9880d681SAndroid Build Coastguard Worker} 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v8i16_near() nounwind { 88*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v8i16_near: 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Worker %1 = alloca <8 x i16> 91*9880d681SAndroid Build Coastguard Worker %2 = load volatile <8 x i16>, <8 x i16>* %1 92*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.h [[R1:\$w[0-9]+]], 0($sp) 93*9880d681SAndroid Build Coastguard Worker store volatile <8 x i16> %2, <8 x i16>* %1 94*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.h [[R1]], 0($sp) 95*9880d681SAndroid Build Coastguard Worker 96*9880d681SAndroid Build Coastguard Worker ret void 97*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v8i16_near 98*9880d681SAndroid Build Coastguard Worker} 99*9880d681SAndroid Build Coastguard Worker 100*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v8i16_unaligned() nounwind { 101*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v8i16_unaligned: 102*9880d681SAndroid Build Coastguard Worker 103*9880d681SAndroid Build Coastguard Worker %1 = alloca [2 x <8 x i16>] 104*9880d681SAndroid Build Coastguard Worker %2 = bitcast [2 x <8 x i16>]* %1 to i8* 105*9880d681SAndroid Build Coastguard Worker %3 = getelementptr i8, i8* %2, i32 1 106*9880d681SAndroid Build Coastguard Worker %4 = bitcast i8* %3 to [2 x <8 x i16>]* 107*9880d681SAndroid Build Coastguard Worker %5 = getelementptr [2 x <8 x i16>], [2 x <8 x i16>]* %4, i32 0, i32 0 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Worker %6 = load volatile <8 x i16>, <8 x i16>* %5 110*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addiu [[BASE:\$([0-9]+|gp)]], $sp, 1 111*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.h [[R1:\$w[0-9]+]], 0([[BASE]]) 112*9880d681SAndroid Build Coastguard Worker store volatile <8 x i16> %6, <8 x i16>* %5 113*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addiu [[BASE:\$([0-9]+|gp)]], $sp, 1 114*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.h [[R1]], 0([[BASE]]) 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Worker ret void 117*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v8i16_unaligned 118*9880d681SAndroid Build Coastguard Worker} 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v8i16_just_under_simm10() nounwind { 121*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v8i16_just_under_simm10: 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Worker %1 = alloca <8 x i16> 124*9880d681SAndroid Build Coastguard Worker %2 = alloca [1008 x i8] ; Push the frame right up to 1024 bytes 125*9880d681SAndroid Build Coastguard Worker 126*9880d681SAndroid Build Coastguard Worker %3 = load volatile <8 x i16>, <8 x i16>* %1 127*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.h [[R1:\$w[0-9]+]], 1008($sp) 128*9880d681SAndroid Build Coastguard Worker store volatile <8 x i16> %3, <8 x i16>* %1 129*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.h [[R1]], 1008($sp) 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Worker ret void 132*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v8i16_just_under_simm10 133*9880d681SAndroid Build Coastguard Worker} 134*9880d681SAndroid Build Coastguard Worker 135*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v8i16_just_over_simm10() nounwind { 136*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v8i16_just_over_simm10: 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Worker %1 = alloca <8 x i16> 139*9880d681SAndroid Build Coastguard Worker %2 = alloca [1009 x i8] ; Push the frame just over 1024 bytes 140*9880d681SAndroid Build Coastguard Worker 141*9880d681SAndroid Build Coastguard Worker %3 = load volatile <8 x i16>, <8 x i16>* %1 142*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addiu [[BASE:\$([0-9]+|gp)]], $sp, 1024 143*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.h [[R1:\$w[0-9]+]], 0([[BASE]]) 144*9880d681SAndroid Build Coastguard Worker store volatile <8 x i16> %3, <8 x i16>* %1 145*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addiu [[BASE:\$([0-9]+|gp)]], $sp, 1024 146*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.h [[R1]], 0([[BASE]]) 147*9880d681SAndroid Build Coastguard Worker 148*9880d681SAndroid Build Coastguard Worker ret void 149*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v8i16_just_over_simm10 150*9880d681SAndroid Build Coastguard Worker} 151*9880d681SAndroid Build Coastguard Worker 152*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v8i16_just_under_simm16() nounwind { 153*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v8i16_just_under_simm16: 154*9880d681SAndroid Build Coastguard Worker 155*9880d681SAndroid Build Coastguard Worker %1 = alloca <8 x i16> 156*9880d681SAndroid Build Coastguard Worker %2 = alloca [32752 x i8] ; Push the frame right up to 32768 bytes 157*9880d681SAndroid Build Coastguard Worker 158*9880d681SAndroid Build Coastguard Worker %3 = load volatile <8 x i16>, <8 x i16>* %1 159*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ori [[R2:\$([0-9]+|gp)]], $zero, 32768 160*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addu [[BASE:\$([0-9]+|gp)]], $sp, [[R2]] 161*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.h [[R1:\$w[0-9]+]], 0([[BASE]]) 162*9880d681SAndroid Build Coastguard Worker store volatile <8 x i16> %3, <8 x i16>* %1 163*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ori [[R2:\$([0-9]+|gp)]], $zero, 32768 164*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addu [[BASE:\$([0-9]+|gp)]], $sp, [[R2]] 165*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.h [[R1]], 0([[BASE]]) 166*9880d681SAndroid Build Coastguard Worker 167*9880d681SAndroid Build Coastguard Worker ret void 168*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v8i16_just_under_simm16 169*9880d681SAndroid Build Coastguard Worker} 170*9880d681SAndroid Build Coastguard Worker 171*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v8i16_just_over_simm16() nounwind { 172*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v8i16_just_over_simm16: 173*9880d681SAndroid Build Coastguard Worker 174*9880d681SAndroid Build Coastguard Worker %1 = alloca <8 x i16> 175*9880d681SAndroid Build Coastguard Worker %2 = alloca [32753 x i8] ; Push the frame just over 32768 bytes 176*9880d681SAndroid Build Coastguard Worker 177*9880d681SAndroid Build Coastguard Worker %3 = load volatile <8 x i16>, <8 x i16>* %1 178*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ori [[R2:\$([0-9]+|gp)]], $zero, 32768 179*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addu [[BASE:\$([0-9]+|gp)]], $sp, [[R2]] 180*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.h [[R1:\$w[0-9]+]], 0([[BASE]]) 181*9880d681SAndroid Build Coastguard Worker store volatile <8 x i16> %3, <8 x i16>* %1 182*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ori [[R2:\$([0-9]+|gp)]], $zero, 32768 183*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addu [[BASE:\$([0-9]+|gp)]], $sp, [[R2]] 184*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.h [[R1]], 0([[BASE]]) 185*9880d681SAndroid Build Coastguard Worker 186*9880d681SAndroid Build Coastguard Worker ret void 187*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v8i16_just_over_simm16 188*9880d681SAndroid Build Coastguard Worker} 189*9880d681SAndroid Build Coastguard Worker 190*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v4i32_near() nounwind { 191*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v4i32_near: 192*9880d681SAndroid Build Coastguard Worker 193*9880d681SAndroid Build Coastguard Worker %1 = alloca <4 x i32> 194*9880d681SAndroid Build Coastguard Worker %2 = load volatile <4 x i32>, <4 x i32>* %1 195*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.w [[R1:\$w[0-9]+]], 0($sp) 196*9880d681SAndroid Build Coastguard Worker store volatile <4 x i32> %2, <4 x i32>* %1 197*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.w [[R1]], 0($sp) 198*9880d681SAndroid Build Coastguard Worker 199*9880d681SAndroid Build Coastguard Worker ret void 200*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v4i32_near 201*9880d681SAndroid Build Coastguard Worker} 202*9880d681SAndroid Build Coastguard Worker 203*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v4i32_unaligned() nounwind { 204*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v4i32_unaligned: 205*9880d681SAndroid Build Coastguard Worker 206*9880d681SAndroid Build Coastguard Worker %1 = alloca [2 x <4 x i32>] 207*9880d681SAndroid Build Coastguard Worker %2 = bitcast [2 x <4 x i32>]* %1 to i8* 208*9880d681SAndroid Build Coastguard Worker %3 = getelementptr i8, i8* %2, i32 1 209*9880d681SAndroid Build Coastguard Worker %4 = bitcast i8* %3 to [2 x <4 x i32>]* 210*9880d681SAndroid Build Coastguard Worker %5 = getelementptr [2 x <4 x i32>], [2 x <4 x i32>]* %4, i32 0, i32 0 211*9880d681SAndroid Build Coastguard Worker 212*9880d681SAndroid Build Coastguard Worker %6 = load volatile <4 x i32>, <4 x i32>* %5 213*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addiu [[BASE:\$([0-9]+|gp)]], $sp, 1 214*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.w [[R1:\$w[0-9]+]], 0([[BASE]]) 215*9880d681SAndroid Build Coastguard Worker store volatile <4 x i32> %6, <4 x i32>* %5 216*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addiu [[BASE:\$([0-9]+|gp)]], $sp, 1 217*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.w [[R1]], 0([[BASE]]) 218*9880d681SAndroid Build Coastguard Worker 219*9880d681SAndroid Build Coastguard Worker ret void 220*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v4i32_unaligned 221*9880d681SAndroid Build Coastguard Worker} 222*9880d681SAndroid Build Coastguard Worker 223*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v4i32_just_under_simm10() nounwind { 224*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v4i32_just_under_simm10: 225*9880d681SAndroid Build Coastguard Worker 226*9880d681SAndroid Build Coastguard Worker %1 = alloca <4 x i32> 227*9880d681SAndroid Build Coastguard Worker %2 = alloca [2032 x i8] ; Push the frame right up to 2048 bytes 228*9880d681SAndroid Build Coastguard Worker 229*9880d681SAndroid Build Coastguard Worker %3 = load volatile <4 x i32>, <4 x i32>* %1 230*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.w [[R1:\$w[0-9]+]], 2032($sp) 231*9880d681SAndroid Build Coastguard Worker store volatile <4 x i32> %3, <4 x i32>* %1 232*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.w [[R1]], 2032($sp) 233*9880d681SAndroid Build Coastguard Worker 234*9880d681SAndroid Build Coastguard Worker ret void 235*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v4i32_just_under_simm10 236*9880d681SAndroid Build Coastguard Worker} 237*9880d681SAndroid Build Coastguard Worker 238*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v4i32_just_over_simm10() nounwind { 239*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v4i32_just_over_simm10: 240*9880d681SAndroid Build Coastguard Worker 241*9880d681SAndroid Build Coastguard Worker %1 = alloca <4 x i32> 242*9880d681SAndroid Build Coastguard Worker %2 = alloca [2033 x i8] ; Push the frame just over 2048 bytes 243*9880d681SAndroid Build Coastguard Worker 244*9880d681SAndroid Build Coastguard Worker %3 = load volatile <4 x i32>, <4 x i32>* %1 245*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addiu [[BASE:\$([0-9]+|gp)]], $sp, 2048 246*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.w [[R1:\$w[0-9]+]], 0([[BASE]]) 247*9880d681SAndroid Build Coastguard Worker store volatile <4 x i32> %3, <4 x i32>* %1 248*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addiu [[BASE:\$([0-9]+|gp)]], $sp, 2048 249*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.w [[R1]], 0([[BASE]]) 250*9880d681SAndroid Build Coastguard Worker 251*9880d681SAndroid Build Coastguard Worker ret void 252*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v4i32_just_over_simm10 253*9880d681SAndroid Build Coastguard Worker} 254*9880d681SAndroid Build Coastguard Worker 255*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v4i32_just_under_simm16() nounwind { 256*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v4i32_just_under_simm16: 257*9880d681SAndroid Build Coastguard Worker 258*9880d681SAndroid Build Coastguard Worker %1 = alloca <4 x i32> 259*9880d681SAndroid Build Coastguard Worker %2 = alloca [32752 x i8] ; Push the frame right up to 32768 bytes 260*9880d681SAndroid Build Coastguard Worker 261*9880d681SAndroid Build Coastguard Worker %3 = load volatile <4 x i32>, <4 x i32>* %1 262*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ori [[R2:\$([0-9]+|gp)]], $zero, 32768 263*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addu [[BASE:\$([0-9]+|gp)]], $sp, [[R2]] 264*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.w [[R1:\$w[0-9]+]], 0([[BASE]]) 265*9880d681SAndroid Build Coastguard Worker store volatile <4 x i32> %3, <4 x i32>* %1 266*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ori [[R2:\$([0-9]+|gp)]], $zero, 32768 267*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addu [[BASE:\$([0-9]+|gp)]], $sp, [[R2]] 268*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.w [[R1]], 0([[BASE]]) 269*9880d681SAndroid Build Coastguard Worker 270*9880d681SAndroid Build Coastguard Worker ret void 271*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v4i32_just_under_simm16 272*9880d681SAndroid Build Coastguard Worker} 273*9880d681SAndroid Build Coastguard Worker 274*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v4i32_just_over_simm16() nounwind { 275*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v4i32_just_over_simm16: 276*9880d681SAndroid Build Coastguard Worker 277*9880d681SAndroid Build Coastguard Worker %1 = alloca <4 x i32> 278*9880d681SAndroid Build Coastguard Worker %2 = alloca [32753 x i8] ; Push the frame just over 32768 bytes 279*9880d681SAndroid Build Coastguard Worker 280*9880d681SAndroid Build Coastguard Worker %3 = load volatile <4 x i32>, <4 x i32>* %1 281*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ori [[R2:\$([0-9]+|gp)]], $zero, 32768 282*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addu [[BASE:\$([0-9]+|gp)]], $sp, [[R2]] 283*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.w [[R1:\$w[0-9]+]], 0([[BASE]]) 284*9880d681SAndroid Build Coastguard Worker store volatile <4 x i32> %3, <4 x i32>* %1 285*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ori [[R2:\$([0-9]+|gp)]], $zero, 32768 286*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addu [[BASE:\$([0-9]+|gp)]], $sp, [[R2]] 287*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.w [[R1]], 0([[BASE]]) 288*9880d681SAndroid Build Coastguard Worker 289*9880d681SAndroid Build Coastguard Worker ret void 290*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v4i32_just_over_simm16 291*9880d681SAndroid Build Coastguard Worker} 292*9880d681SAndroid Build Coastguard Worker 293*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v2i64_near() nounwind { 294*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v2i64_near: 295*9880d681SAndroid Build Coastguard Worker 296*9880d681SAndroid Build Coastguard Worker %1 = alloca <2 x i64> 297*9880d681SAndroid Build Coastguard Worker %2 = load volatile <2 x i64>, <2 x i64>* %1 298*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.d [[R1:\$w[0-9]+]], 0($sp) 299*9880d681SAndroid Build Coastguard Worker store volatile <2 x i64> %2, <2 x i64>* %1 300*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.d [[R1]], 0($sp) 301*9880d681SAndroid Build Coastguard Worker 302*9880d681SAndroid Build Coastguard Worker ret void 303*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v2i64_near 304*9880d681SAndroid Build Coastguard Worker} 305*9880d681SAndroid Build Coastguard Worker 306*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v2i64_unaligned() nounwind { 307*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v2i64_unaligned: 308*9880d681SAndroid Build Coastguard Worker 309*9880d681SAndroid Build Coastguard Worker %1 = alloca [2 x <2 x i64>] 310*9880d681SAndroid Build Coastguard Worker %2 = bitcast [2 x <2 x i64>]* %1 to i8* 311*9880d681SAndroid Build Coastguard Worker %3 = getelementptr i8, i8* %2, i32 1 312*9880d681SAndroid Build Coastguard Worker %4 = bitcast i8* %3 to [2 x <2 x i64>]* 313*9880d681SAndroid Build Coastguard Worker %5 = getelementptr [2 x <2 x i64>], [2 x <2 x i64>]* %4, i32 0, i32 0 314*9880d681SAndroid Build Coastguard Worker 315*9880d681SAndroid Build Coastguard Worker %6 = load volatile <2 x i64>, <2 x i64>* %5 316*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addiu [[BASE:\$([0-9]+|gp)]], $sp, 1 317*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.d [[R1:\$w[0-9]+]], 0([[BASE]]) 318*9880d681SAndroid Build Coastguard Worker store volatile <2 x i64> %6, <2 x i64>* %5 319*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addiu [[BASE:\$([0-9]+|gp)]], $sp, 1 320*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.d [[R1]], 0([[BASE]]) 321*9880d681SAndroid Build Coastguard Worker 322*9880d681SAndroid Build Coastguard Worker ret void 323*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v2i64_unaligned 324*9880d681SAndroid Build Coastguard Worker} 325*9880d681SAndroid Build Coastguard Worker 326*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v2i64_just_under_simm10() nounwind { 327*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v2i64_just_under_simm10: 328*9880d681SAndroid Build Coastguard Worker 329*9880d681SAndroid Build Coastguard Worker %1 = alloca <2 x i64> 330*9880d681SAndroid Build Coastguard Worker %2 = alloca [4080 x i8] ; Push the frame right up to 4096 bytes 331*9880d681SAndroid Build Coastguard Worker 332*9880d681SAndroid Build Coastguard Worker %3 = load volatile <2 x i64>, <2 x i64>* %1 333*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.d [[R1:\$w[0-9]+]], 4080($sp) 334*9880d681SAndroid Build Coastguard Worker store volatile <2 x i64> %3, <2 x i64>* %1 335*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.d [[R1]], 4080($sp) 336*9880d681SAndroid Build Coastguard Worker 337*9880d681SAndroid Build Coastguard Worker ret void 338*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v2i64_just_under_simm10 339*9880d681SAndroid Build Coastguard Worker} 340*9880d681SAndroid Build Coastguard Worker 341*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v2i64_just_over_simm10() nounwind { 342*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v2i64_just_over_simm10: 343*9880d681SAndroid Build Coastguard Worker 344*9880d681SAndroid Build Coastguard Worker %1 = alloca <2 x i64> 345*9880d681SAndroid Build Coastguard Worker %2 = alloca [4081 x i8] ; Push the frame just over 4096 bytes 346*9880d681SAndroid Build Coastguard Worker 347*9880d681SAndroid Build Coastguard Worker %3 = load volatile <2 x i64>, <2 x i64>* %1 348*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addiu [[BASE:\$([0-9]+|gp)]], $sp, 4096 349*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.d [[R1:\$w[0-9]+]], 0([[BASE]]) 350*9880d681SAndroid Build Coastguard Worker store volatile <2 x i64> %3, <2 x i64>* %1 351*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addiu [[BASE:\$([0-9]+|gp)]], $sp, 4096 352*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.d [[R1]], 0([[BASE]]) 353*9880d681SAndroid Build Coastguard Worker 354*9880d681SAndroid Build Coastguard Worker ret void 355*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v2i64_just_over_simm10 356*9880d681SAndroid Build Coastguard Worker} 357*9880d681SAndroid Build Coastguard Worker 358*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v2i64_just_under_simm16() nounwind { 359*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v2i64_just_under_simm16: 360*9880d681SAndroid Build Coastguard Worker 361*9880d681SAndroid Build Coastguard Worker %1 = alloca <2 x i64> 362*9880d681SAndroid Build Coastguard Worker %2 = alloca [32752 x i8] ; Push the frame right up to 32768 bytes 363*9880d681SAndroid Build Coastguard Worker 364*9880d681SAndroid Build Coastguard Worker %3 = load volatile <2 x i64>, <2 x i64>* %1 365*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ori [[R2:\$([0-9]+|gp)]], $zero, 32768 366*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addu [[BASE:\$([0-9]+|gp)]], $sp, [[R2]] 367*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.d [[R1:\$w[0-9]+]], 0([[BASE]]) 368*9880d681SAndroid Build Coastguard Worker store volatile <2 x i64> %3, <2 x i64>* %1 369*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ori [[R2:\$([0-9]+|gp)]], $zero, 32768 370*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addu [[BASE:\$([0-9]+|gp)]], $sp, [[R2]] 371*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.d [[R1]], 0([[BASE]]) 372*9880d681SAndroid Build Coastguard Worker 373*9880d681SAndroid Build Coastguard Worker ret void 374*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v2i64_just_under_simm16 375*9880d681SAndroid Build Coastguard Worker} 376*9880d681SAndroid Build Coastguard Worker 377*9880d681SAndroid Build Coastguard Workerdefine void @loadstore_v2i64_just_over_simm16() nounwind { 378*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: loadstore_v2i64_just_over_simm16: 379*9880d681SAndroid Build Coastguard Worker 380*9880d681SAndroid Build Coastguard Worker %1 = alloca <2 x i64> 381*9880d681SAndroid Build Coastguard Worker %2 = alloca [32753 x i8] ; Push the frame just over 32768 bytes 382*9880d681SAndroid Build Coastguard Worker 383*9880d681SAndroid Build Coastguard Worker %3 = load volatile <2 x i64>, <2 x i64>* %1 384*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ori [[R2:\$([0-9]+|gp)]], $zero, 32768 385*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addu [[BASE:\$([0-9]+|gp)]], $sp, [[R2]] 386*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ld.d [[R1:\$w[0-9]+]], 0([[BASE]]) 387*9880d681SAndroid Build Coastguard Worker store volatile <2 x i64> %3, <2 x i64>* %1 388*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: ori [[R2:\$([0-9]+|gp)]], $zero, 32768 389*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: addu [[BASE:\$([0-9]+|gp)]], $sp, [[R2]] 390*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: st.d [[R1]], 0([[BASE]]) 391*9880d681SAndroid Build Coastguard Worker 392*9880d681SAndroid Build Coastguard Worker ret void 393*9880d681SAndroid Build Coastguard Worker ; MIPS32-AE: .size loadstore_v2i64_just_over_simm16 394*9880d681SAndroid Build Coastguard Worker} 395