1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; Test loads and stores with custom alignment values. 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128" 6*9880d681SAndroid Build Coastguard Workertarget triple = "wasm32-unknown-unknown" 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ldi64_a1: 9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32{{$}} 10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .result i64{{$}} 11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.load $push[[NUM:[0-9]+]]=, 0($0):p2align=0{{$}} 12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return $pop[[NUM]]{{$}} 13*9880d681SAndroid Build Coastguard Workerdefine i64 @ldi64_a1(i64 *%p) { 14*9880d681SAndroid Build Coastguard Worker %v = load i64, i64* %p, align 1 15*9880d681SAndroid Build Coastguard Worker ret i64 %v 16*9880d681SAndroid Build Coastguard Worker} 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ldi64_a2: 19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32{{$}} 20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .result i64{{$}} 21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.load $push[[NUM:[0-9]+]]=, 0($0):p2align=1{{$}} 22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return $pop[[NUM]]{{$}} 23*9880d681SAndroid Build Coastguard Workerdefine i64 @ldi64_a2(i64 *%p) { 24*9880d681SAndroid Build Coastguard Worker %v = load i64, i64* %p, align 2 25*9880d681SAndroid Build Coastguard Worker ret i64 %v 26*9880d681SAndroid Build Coastguard Worker} 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ldi64_a4: 29*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32{{$}} 30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .result i64{{$}} 31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.load $push[[NUM:[0-9]+]]=, 0($0):p2align=2{{$}} 32*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return $pop[[NUM]]{{$}} 33*9880d681SAndroid Build Coastguard Workerdefine i64 @ldi64_a4(i64 *%p) { 34*9880d681SAndroid Build Coastguard Worker %v = load i64, i64* %p, align 4 35*9880d681SAndroid Build Coastguard Worker ret i64 %v 36*9880d681SAndroid Build Coastguard Worker} 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker; 8 is the default alignment for i64 so no attribute is needed. 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ldi64_a8: 41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32{{$}} 42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .result i64{{$}} 43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.load $push[[NUM:[0-9]+]]=, 0($0){{$}} 44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return $pop[[NUM]]{{$}} 45*9880d681SAndroid Build Coastguard Workerdefine i64 @ldi64_a8(i64 *%p) { 46*9880d681SAndroid Build Coastguard Worker %v = load i64, i64* %p, align 8 47*9880d681SAndroid Build Coastguard Worker ret i64 %v 48*9880d681SAndroid Build Coastguard Worker} 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Worker; The default alignment in LLVM is the same as the defualt alignment in wasm. 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ldi64: 53*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32{{$}} 54*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .result i64{{$}} 55*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.load $push[[NUM:[0-9]+]]=, 0($0){{$}} 56*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return $pop[[NUM]]{{$}} 57*9880d681SAndroid Build Coastguard Workerdefine i64 @ldi64(i64 *%p) { 58*9880d681SAndroid Build Coastguard Worker %v = load i64, i64* %p 59*9880d681SAndroid Build Coastguard Worker ret i64 %v 60*9880d681SAndroid Build Coastguard Worker} 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Worker; 16 is greater than the default alignment so it is ignored. 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ldi64_a16: 65*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32{{$}} 66*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .result i64{{$}} 67*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.load $push[[NUM:[0-9]+]]=, 0($0){{$}} 68*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return $pop[[NUM]]{{$}} 69*9880d681SAndroid Build Coastguard Workerdefine i64 @ldi64_a16(i64 *%p) { 70*9880d681SAndroid Build Coastguard Worker %v = load i64, i64* %p, align 16 71*9880d681SAndroid Build Coastguard Worker ret i64 %v 72*9880d681SAndroid Build Coastguard Worker} 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard Worker; Extending loads. 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ldi8_a1: 77*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32{{$}} 78*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .result i64{{$}} 79*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.load8_u $push[[NUM:[0-9]+]]=, 0($0){{$}} 80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return $pop[[NUM]]{{$}} 81*9880d681SAndroid Build Coastguard Workerdefine i64 @ldi8_a1(i8 *%p) { 82*9880d681SAndroid Build Coastguard Worker %v = load i8, i8* %p, align 1 83*9880d681SAndroid Build Coastguard Worker %w = zext i8 %v to i64 84*9880d681SAndroid Build Coastguard Worker ret i64 %w 85*9880d681SAndroid Build Coastguard Worker} 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ldi8_a2: 88*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32{{$}} 89*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .result i64{{$}} 90*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.load8_u $push[[NUM:[0-9]+]]=, 0($0){{$}} 91*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return $pop[[NUM]]{{$}} 92*9880d681SAndroid Build Coastguard Workerdefine i64 @ldi8_a2(i8 *%p) { 93*9880d681SAndroid Build Coastguard Worker %v = load i8, i8* %p, align 2 94*9880d681SAndroid Build Coastguard Worker %w = zext i8 %v to i64 95*9880d681SAndroid Build Coastguard Worker ret i64 %w 96*9880d681SAndroid Build Coastguard Worker} 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ldi16_a1: 99*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32{{$}} 100*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .result i64{{$}} 101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.load16_u $push[[NUM:[0-9]+]]=, 0($0):p2align=0{{$}} 102*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return $pop[[NUM]]{{$}} 103*9880d681SAndroid Build Coastguard Workerdefine i64 @ldi16_a1(i16 *%p) { 104*9880d681SAndroid Build Coastguard Worker %v = load i16, i16* %p, align 1 105*9880d681SAndroid Build Coastguard Worker %w = zext i16 %v to i64 106*9880d681SAndroid Build Coastguard Worker ret i64 %w 107*9880d681SAndroid Build Coastguard Worker} 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ldi16_a2: 110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32{{$}} 111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .result i64{{$}} 112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.load16_u $push[[NUM:[0-9]+]]=, 0($0){{$}} 113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return $pop[[NUM]]{{$}} 114*9880d681SAndroid Build Coastguard Workerdefine i64 @ldi16_a2(i16 *%p) { 115*9880d681SAndroid Build Coastguard Worker %v = load i16, i16* %p, align 2 116*9880d681SAndroid Build Coastguard Worker %w = zext i16 %v to i64 117*9880d681SAndroid Build Coastguard Worker ret i64 %w 118*9880d681SAndroid Build Coastguard Worker} 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ldi16_a4: 121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32{{$}} 122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .result i64{{$}} 123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.load16_u $push[[NUM:[0-9]+]]=, 0($0){{$}} 124*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return $pop[[NUM]]{{$}} 125*9880d681SAndroid Build Coastguard Workerdefine i64 @ldi16_a4(i16 *%p) { 126*9880d681SAndroid Build Coastguard Worker %v = load i16, i16* %p, align 4 127*9880d681SAndroid Build Coastguard Worker %w = zext i16 %v to i64 128*9880d681SAndroid Build Coastguard Worker ret i64 %w 129*9880d681SAndroid Build Coastguard Worker} 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ldi32_a1: 132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32{{$}} 133*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .result i64{{$}} 134*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.load32_u $push[[NUM:[0-9]+]]=, 0($0):p2align=0{{$}} 135*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return $pop[[NUM]]{{$}} 136*9880d681SAndroid Build Coastguard Workerdefine i64 @ldi32_a1(i32 *%p) { 137*9880d681SAndroid Build Coastguard Worker %v = load i32, i32* %p, align 1 138*9880d681SAndroid Build Coastguard Worker %w = zext i32 %v to i64 139*9880d681SAndroid Build Coastguard Worker ret i64 %w 140*9880d681SAndroid Build Coastguard Worker} 141*9880d681SAndroid Build Coastguard Worker 142*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ldi32_a2: 143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32{{$}} 144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .result i64{{$}} 145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.load32_u $push[[NUM:[0-9]+]]=, 0($0):p2align=1{{$}} 146*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return $pop[[NUM]]{{$}} 147*9880d681SAndroid Build Coastguard Workerdefine i64 @ldi32_a2(i32 *%p) { 148*9880d681SAndroid Build Coastguard Worker %v = load i32, i32* %p, align 2 149*9880d681SAndroid Build Coastguard Worker %w = zext i32 %v to i64 150*9880d681SAndroid Build Coastguard Worker ret i64 %w 151*9880d681SAndroid Build Coastguard Worker} 152*9880d681SAndroid Build Coastguard Worker 153*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ldi32_a4: 154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32{{$}} 155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .result i64{{$}} 156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.load32_u $push[[NUM:[0-9]+]]=, 0($0){{$}} 157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return $pop[[NUM]]{{$}} 158*9880d681SAndroid Build Coastguard Workerdefine i64 @ldi32_a4(i32 *%p) { 159*9880d681SAndroid Build Coastguard Worker %v = load i32, i32* %p, align 4 160*9880d681SAndroid Build Coastguard Worker %w = zext i32 %v to i64 161*9880d681SAndroid Build Coastguard Worker ret i64 %w 162*9880d681SAndroid Build Coastguard Worker} 163*9880d681SAndroid Build Coastguard Worker 164*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ldi32_a8: 165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32{{$}} 166*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .result i64{{$}} 167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.load32_u $push[[NUM:[0-9]+]]=, 0($0){{$}} 168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return $pop[[NUM]]{{$}} 169*9880d681SAndroid Build Coastguard Workerdefine i64 @ldi32_a8(i32 *%p) { 170*9880d681SAndroid Build Coastguard Worker %v = load i32, i32* %p, align 8 171*9880d681SAndroid Build Coastguard Worker %w = zext i32 %v to i64 172*9880d681SAndroid Build Coastguard Worker ret i64 %w 173*9880d681SAndroid Build Coastguard Worker} 174*9880d681SAndroid Build Coastguard Worker 175*9880d681SAndroid Build Coastguard Worker; Stores. 176*9880d681SAndroid Build Coastguard Worker 177*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sti64_a1: 178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32, i64{{$}} 179*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.store $drop=, 0($0):p2align=0, $1{{$}} 180*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return{{$}} 181*9880d681SAndroid Build Coastguard Workerdefine void @sti64_a1(i64 *%p, i64 %v) { 182*9880d681SAndroid Build Coastguard Worker store i64 %v, i64* %p, align 1 183*9880d681SAndroid Build Coastguard Worker ret void 184*9880d681SAndroid Build Coastguard Worker} 185*9880d681SAndroid Build Coastguard Worker 186*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sti64_a2: 187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32, i64{{$}} 188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.store $drop=, 0($0):p2align=1, $1{{$}} 189*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return{{$}} 190*9880d681SAndroid Build Coastguard Workerdefine void @sti64_a2(i64 *%p, i64 %v) { 191*9880d681SAndroid Build Coastguard Worker store i64 %v, i64* %p, align 2 192*9880d681SAndroid Build Coastguard Worker ret void 193*9880d681SAndroid Build Coastguard Worker} 194*9880d681SAndroid Build Coastguard Worker 195*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sti64_a4: 196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32, i64{{$}} 197*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.store $drop=, 0($0):p2align=2, $1{{$}} 198*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return{{$}} 199*9880d681SAndroid Build Coastguard Workerdefine void @sti64_a4(i64 *%p, i64 %v) { 200*9880d681SAndroid Build Coastguard Worker store i64 %v, i64* %p, align 4 201*9880d681SAndroid Build Coastguard Worker ret void 202*9880d681SAndroid Build Coastguard Worker} 203*9880d681SAndroid Build Coastguard Worker 204*9880d681SAndroid Build Coastguard Worker; 8 is the default alignment for i32 so no attribute is needed. 205*9880d681SAndroid Build Coastguard Worker 206*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sti64_a8: 207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32, i64{{$}} 208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.store $drop=, 0($0), $1{{$}} 209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return{{$}} 210*9880d681SAndroid Build Coastguard Workerdefine void @sti64_a8(i64 *%p, i64 %v) { 211*9880d681SAndroid Build Coastguard Worker store i64 %v, i64* %p, align 8 212*9880d681SAndroid Build Coastguard Worker ret void 213*9880d681SAndroid Build Coastguard Worker} 214*9880d681SAndroid Build Coastguard Worker 215*9880d681SAndroid Build Coastguard Worker; The default alignment in LLVM is the same as the defualt alignment in wasm. 216*9880d681SAndroid Build Coastguard Worker 217*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sti64: 218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32, i64{{$}} 219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.store $drop=, 0($0), $1{{$}} 220*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return{{$}} 221*9880d681SAndroid Build Coastguard Workerdefine void @sti64(i64 *%p, i64 %v) { 222*9880d681SAndroid Build Coastguard Worker store i64 %v, i64* %p 223*9880d681SAndroid Build Coastguard Worker ret void 224*9880d681SAndroid Build Coastguard Worker} 225*9880d681SAndroid Build Coastguard Worker 226*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sti64_a16: 227*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32, i64{{$}} 228*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.store $drop=, 0($0), $1{{$}} 229*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return{{$}} 230*9880d681SAndroid Build Coastguard Workerdefine void @sti64_a16(i64 *%p, i64 %v) { 231*9880d681SAndroid Build Coastguard Worker store i64 %v, i64* %p, align 16 232*9880d681SAndroid Build Coastguard Worker ret void 233*9880d681SAndroid Build Coastguard Worker} 234*9880d681SAndroid Build Coastguard Worker 235*9880d681SAndroid Build Coastguard Worker; Truncating stores. 236*9880d681SAndroid Build Coastguard Worker 237*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sti8_a1: 238*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32, i64{{$}} 239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.store8 $drop=, 0($0), $1{{$}} 240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return{{$}} 241*9880d681SAndroid Build Coastguard Workerdefine void @sti8_a1(i8 *%p, i64 %w) { 242*9880d681SAndroid Build Coastguard Worker %v = trunc i64 %w to i8 243*9880d681SAndroid Build Coastguard Worker store i8 %v, i8* %p, align 1 244*9880d681SAndroid Build Coastguard Worker ret void 245*9880d681SAndroid Build Coastguard Worker} 246*9880d681SAndroid Build Coastguard Worker 247*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sti8_a2: 248*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32, i64{{$}} 249*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.store8 $drop=, 0($0), $1{{$}} 250*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return{{$}} 251*9880d681SAndroid Build Coastguard Workerdefine void @sti8_a2(i8 *%p, i64 %w) { 252*9880d681SAndroid Build Coastguard Worker %v = trunc i64 %w to i8 253*9880d681SAndroid Build Coastguard Worker store i8 %v, i8* %p, align 2 254*9880d681SAndroid Build Coastguard Worker ret void 255*9880d681SAndroid Build Coastguard Worker} 256*9880d681SAndroid Build Coastguard Worker 257*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sti16_a1: 258*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32, i64{{$}} 259*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.store16 $drop=, 0($0):p2align=0, $1{{$}} 260*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return{{$}} 261*9880d681SAndroid Build Coastguard Workerdefine void @sti16_a1(i16 *%p, i64 %w) { 262*9880d681SAndroid Build Coastguard Worker %v = trunc i64 %w to i16 263*9880d681SAndroid Build Coastguard Worker store i16 %v, i16* %p, align 1 264*9880d681SAndroid Build Coastguard Worker ret void 265*9880d681SAndroid Build Coastguard Worker} 266*9880d681SAndroid Build Coastguard Worker 267*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sti16_a2: 268*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32, i64{{$}} 269*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.store16 $drop=, 0($0), $1{{$}} 270*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return{{$}} 271*9880d681SAndroid Build Coastguard Workerdefine void @sti16_a2(i16 *%p, i64 %w) { 272*9880d681SAndroid Build Coastguard Worker %v = trunc i64 %w to i16 273*9880d681SAndroid Build Coastguard Worker store i16 %v, i16* %p, align 2 274*9880d681SAndroid Build Coastguard Worker ret void 275*9880d681SAndroid Build Coastguard Worker} 276*9880d681SAndroid Build Coastguard Worker 277*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sti16_a4: 278*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32, i64{{$}} 279*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.store16 $drop=, 0($0), $1{{$}} 280*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return{{$}} 281*9880d681SAndroid Build Coastguard Workerdefine void @sti16_a4(i16 *%p, i64 %w) { 282*9880d681SAndroid Build Coastguard Worker %v = trunc i64 %w to i16 283*9880d681SAndroid Build Coastguard Worker store i16 %v, i16* %p, align 4 284*9880d681SAndroid Build Coastguard Worker ret void 285*9880d681SAndroid Build Coastguard Worker} 286*9880d681SAndroid Build Coastguard Worker 287*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sti32_a1: 288*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32, i64{{$}} 289*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.store32 $drop=, 0($0):p2align=0, $1{{$}} 290*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return{{$}} 291*9880d681SAndroid Build Coastguard Workerdefine void @sti32_a1(i32 *%p, i64 %w) { 292*9880d681SAndroid Build Coastguard Worker %v = trunc i64 %w to i32 293*9880d681SAndroid Build Coastguard Worker store i32 %v, i32* %p, align 1 294*9880d681SAndroid Build Coastguard Worker ret void 295*9880d681SAndroid Build Coastguard Worker} 296*9880d681SAndroid Build Coastguard Worker 297*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sti32_a2: 298*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32, i64{{$}} 299*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.store32 $drop=, 0($0):p2align=1, $1{{$}} 300*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return{{$}} 301*9880d681SAndroid Build Coastguard Workerdefine void @sti32_a2(i32 *%p, i64 %w) { 302*9880d681SAndroid Build Coastguard Worker %v = trunc i64 %w to i32 303*9880d681SAndroid Build Coastguard Worker store i32 %v, i32* %p, align 2 304*9880d681SAndroid Build Coastguard Worker ret void 305*9880d681SAndroid Build Coastguard Worker} 306*9880d681SAndroid Build Coastguard Worker 307*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sti32_a4: 308*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32, i64{{$}} 309*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.store32 $drop=, 0($0), $1{{$}} 310*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return{{$}} 311*9880d681SAndroid Build Coastguard Workerdefine void @sti32_a4(i32 *%p, i64 %w) { 312*9880d681SAndroid Build Coastguard Worker %v = trunc i64 %w to i32 313*9880d681SAndroid Build Coastguard Worker store i32 %v, i32* %p, align 4 314*9880d681SAndroid Build Coastguard Worker ret void 315*9880d681SAndroid Build Coastguard Worker} 316*9880d681SAndroid Build Coastguard Worker 317*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sti32_a8: 318*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .param i32, i64{{$}} 319*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: i64.store32 $drop=, 0($0), $1{{$}} 320*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: return{{$}} 321*9880d681SAndroid Build Coastguard Workerdefine void @sti32_a8(i32 *%p, i64 %w) { 322*9880d681SAndroid Build Coastguard Worker %v = trunc i64 %w to i32 323*9880d681SAndroid Build Coastguard Worker store i32 %v, i32* %p, align 8 324*9880d681SAndroid Build Coastguard Worker ret void 325*9880d681SAndroid Build Coastguard Worker} 326