1*9880d681SAndroid Build Coastguard Worker; RUN: llc -fast-isel -fast-isel-abort=1 -mtriple=aarch64-apple-darwin -verify-machineinstrs < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asr_zext_i1_i16 4*9880d681SAndroid Build Coastguard Worker; CHECK: uxth {{w[0-9]*}}, wzr 5*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @asr_zext_i1_i16(i1 %b) { 6*9880d681SAndroid Build Coastguard Worker %1 = zext i1 %b to i16 7*9880d681SAndroid Build Coastguard Worker %2 = ashr i16 %1, 1 8*9880d681SAndroid Build Coastguard Worker ret i16 %2 9*9880d681SAndroid Build Coastguard Worker} 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asr_sext_i1_i16 12*9880d681SAndroid Build Coastguard Worker; CHECK: sbfx [[REG1:w[0-9]+]], {{w[0-9]*}}, #0, #1 13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sxth {{w[0-9]*}}, [[REG1]] 14*9880d681SAndroid Build Coastguard Workerdefine signext i16 @asr_sext_i1_i16(i1 %b) { 15*9880d681SAndroid Build Coastguard Worker %1 = sext i1 %b to i16 16*9880d681SAndroid Build Coastguard Worker %2 = ashr i16 %1, 1 17*9880d681SAndroid Build Coastguard Worker ret i16 %2 18*9880d681SAndroid Build Coastguard Worker} 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asr_zext_i1_i32 21*9880d681SAndroid Build Coastguard Worker; CHECK: mov {{w[0-9]*}}, wzr 22*9880d681SAndroid Build Coastguard Workerdefine i32 @asr_zext_i1_i32(i1 %b) { 23*9880d681SAndroid Build Coastguard Worker %1 = zext i1 %b to i32 24*9880d681SAndroid Build Coastguard Worker %2 = ashr i32 %1, 1 25*9880d681SAndroid Build Coastguard Worker ret i32 %2 26*9880d681SAndroid Build Coastguard Worker} 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asr_sext_i1_i32 29*9880d681SAndroid Build Coastguard Worker; CHECK: sbfx {{w[0-9]*}}, {{w[0-9]*}}, #0, #1 30*9880d681SAndroid Build Coastguard Workerdefine i32 @asr_sext_i1_i32(i1 %b) { 31*9880d681SAndroid Build Coastguard Worker %1 = sext i1 %b to i32 32*9880d681SAndroid Build Coastguard Worker %2 = ashr i32 %1, 1 33*9880d681SAndroid Build Coastguard Worker ret i32 %2 34*9880d681SAndroid Build Coastguard Worker} 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asr_zext_i1_i64 37*9880d681SAndroid Build Coastguard Worker; CHECK: mov {{x[0-9]*}}, xzr 38*9880d681SAndroid Build Coastguard Workerdefine i64 @asr_zext_i1_i64(i1 %b) { 39*9880d681SAndroid Build Coastguard Worker %1 = zext i1 %b to i64 40*9880d681SAndroid Build Coastguard Worker %2 = ashr i64 %1, 1 41*9880d681SAndroid Build Coastguard Worker ret i64 %2 42*9880d681SAndroid Build Coastguard Worker} 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asr_sext_i1_i64 45*9880d681SAndroid Build Coastguard Worker; CHECK: sbfx {{x[0-9]*}}, {{x[0-9]*}}, #0, #1 46*9880d681SAndroid Build Coastguard Workerdefine i64 @asr_sext_i1_i64(i1 %b) { 47*9880d681SAndroid Build Coastguard Worker %1 = sext i1 %b to i64 48*9880d681SAndroid Build Coastguard Worker %2 = ashr i64 %1, 1 49*9880d681SAndroid Build Coastguard Worker ret i64 %2 50*9880d681SAndroid Build Coastguard Worker} 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsr_zext_i1_i16 53*9880d681SAndroid Build Coastguard Worker; CHECK: uxth {{w[0-9]*}}, wzr 54*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @lsr_zext_i1_i16(i1 %b) { 55*9880d681SAndroid Build Coastguard Worker %1 = zext i1 %b to i16 56*9880d681SAndroid Build Coastguard Worker %2 = lshr i16 %1, 1 57*9880d681SAndroid Build Coastguard Worker ret i16 %2 58*9880d681SAndroid Build Coastguard Worker} 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsr_sext_i1_i16 61*9880d681SAndroid Build Coastguard Worker; CHECK: sbfx [[REG1:w[0-9]+]], {{w[0-9]*}}, #0, #1 62*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ubfx [[REG2:w[0-9]+]], [[REG1]], #1, #15 63*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sxth {{w[0-9]*}}, [[REG2]] 64*9880d681SAndroid Build Coastguard Workerdefine signext i16 @lsr_sext_i1_i16(i1 %b) { 65*9880d681SAndroid Build Coastguard Worker %1 = sext i1 %b to i16 66*9880d681SAndroid Build Coastguard Worker %2 = lshr i16 %1, 1 67*9880d681SAndroid Build Coastguard Worker ret i16 %2 68*9880d681SAndroid Build Coastguard Worker} 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsr_zext_i1_i32 71*9880d681SAndroid Build Coastguard Worker; CHECK: mov {{w[0-9]*}}, wzr 72*9880d681SAndroid Build Coastguard Workerdefine i32 @lsr_zext_i1_i32(i1 %b) { 73*9880d681SAndroid Build Coastguard Worker %1 = zext i1 %b to i32 74*9880d681SAndroid Build Coastguard Worker %2 = lshr i32 %1, 1 75*9880d681SAndroid Build Coastguard Worker ret i32 %2 76*9880d681SAndroid Build Coastguard Worker} 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsr_sext_i1_i32 79*9880d681SAndroid Build Coastguard Worker; CHECK: sbfx [[REG1:w[0-9]+]], {{w[0-9]*}}, #0, #1 80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: lsr {{w[0-9]*}}, [[REG1:w[0-9]+]], #1 81*9880d681SAndroid Build Coastguard Workerdefine i32 @lsr_sext_i1_i32(i1 %b) { 82*9880d681SAndroid Build Coastguard Worker %1 = sext i1 %b to i32 83*9880d681SAndroid Build Coastguard Worker %2 = lshr i32 %1, 1 84*9880d681SAndroid Build Coastguard Worker ret i32 %2 85*9880d681SAndroid Build Coastguard Worker} 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsr_zext_i1_i64 88*9880d681SAndroid Build Coastguard Worker; CHECK: mov {{x[0-9]*}}, xzr 89*9880d681SAndroid Build Coastguard Workerdefine i64 @lsr_zext_i1_i64(i1 %b) { 90*9880d681SAndroid Build Coastguard Worker %1 = zext i1 %b to i64 91*9880d681SAndroid Build Coastguard Worker %2 = lshr i64 %1, 1 92*9880d681SAndroid Build Coastguard Worker ret i64 %2 93*9880d681SAndroid Build Coastguard Worker} 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_zext_i1_i16 96*9880d681SAndroid Build Coastguard Worker; CHECK: ubfiz {{w[0-9]*}}, {{w[0-9]*}}, #4, #1 97*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @lsl_zext_i1_i16(i1 %b) { 98*9880d681SAndroid Build Coastguard Worker %1 = zext i1 %b to i16 99*9880d681SAndroid Build Coastguard Worker %2 = shl i16 %1, 4 100*9880d681SAndroid Build Coastguard Worker ret i16 %2 101*9880d681SAndroid Build Coastguard Worker} 102*9880d681SAndroid Build Coastguard Worker 103*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_sext_i1_i16 104*9880d681SAndroid Build Coastguard Worker; CHECK: sbfiz {{w[0-9]*}}, {{w[0-9]*}}, #4, #1 105*9880d681SAndroid Build Coastguard Workerdefine signext i16 @lsl_sext_i1_i16(i1 %b) { 106*9880d681SAndroid Build Coastguard Worker %1 = sext i1 %b to i16 107*9880d681SAndroid Build Coastguard Worker %2 = shl i16 %1, 4 108*9880d681SAndroid Build Coastguard Worker ret i16 %2 109*9880d681SAndroid Build Coastguard Worker} 110*9880d681SAndroid Build Coastguard Worker 111*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_zext_i1_i32 112*9880d681SAndroid Build Coastguard Worker; CHECK: ubfiz {{w[0-9]*}}, {{w[0-9]*}}, #4, #1 113*9880d681SAndroid Build Coastguard Workerdefine i32 @lsl_zext_i1_i32(i1 %b) { 114*9880d681SAndroid Build Coastguard Worker %1 = zext i1 %b to i32 115*9880d681SAndroid Build Coastguard Worker %2 = shl i32 %1, 4 116*9880d681SAndroid Build Coastguard Worker ret i32 %2 117*9880d681SAndroid Build Coastguard Worker} 118*9880d681SAndroid Build Coastguard Worker 119*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_sext_i1_i32 120*9880d681SAndroid Build Coastguard Worker; CHECK: sbfiz {{w[0-9]*}}, {{w[0-9]*}}, #4, #1 121*9880d681SAndroid Build Coastguard Workerdefine i32 @lsl_sext_i1_i32(i1 %b) { 122*9880d681SAndroid Build Coastguard Worker %1 = sext i1 %b to i32 123*9880d681SAndroid Build Coastguard Worker %2 = shl i32 %1, 4 124*9880d681SAndroid Build Coastguard Worker ret i32 %2 125*9880d681SAndroid Build Coastguard Worker} 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_zext_i1_i64 128*9880d681SAndroid Build Coastguard Worker; CHECK: ubfiz {{x[0-9]*}}, {{x[0-9]*}}, #4, #1 129*9880d681SAndroid Build Coastguard Workerdefine i64 @lsl_zext_i1_i64(i1 %b) { 130*9880d681SAndroid Build Coastguard Worker %1 = zext i1 %b to i64 131*9880d681SAndroid Build Coastguard Worker %2 = shl i64 %1, 4 132*9880d681SAndroid Build Coastguard Worker ret i64 %2 133*9880d681SAndroid Build Coastguard Worker} 134*9880d681SAndroid Build Coastguard Worker 135*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_sext_i1_i64 136*9880d681SAndroid Build Coastguard Worker; CHECK: sbfiz {{x[0-9]*}}, {{x[0-9]*}}, #4, #1 137*9880d681SAndroid Build Coastguard Workerdefine i64 @lsl_sext_i1_i64(i1 %b) { 138*9880d681SAndroid Build Coastguard Worker %1 = sext i1 %b to i64 139*9880d681SAndroid Build Coastguard Worker %2 = shl i64 %1, 4 140*9880d681SAndroid Build Coastguard Worker ret i64 %2 141*9880d681SAndroid Build Coastguard Worker} 142*9880d681SAndroid Build Coastguard Worker 143*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lslv_i8 144*9880d681SAndroid Build Coastguard Worker; CHECK: and [[REG1:w[0-9]+]], w1, #0xff 145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: lsl [[REG2:w[0-9]+]], w0, [[REG1]] 146*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: and {{w[0-9]+}}, [[REG2]], #0xff 147*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @lslv_i8(i8 %a, i8 %b) { 148*9880d681SAndroid Build Coastguard Worker %1 = shl i8 %a, %b 149*9880d681SAndroid Build Coastguard Worker ret i8 %1 150*9880d681SAndroid Build Coastguard Worker} 151*9880d681SAndroid Build Coastguard Worker 152*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_i8 153*9880d681SAndroid Build Coastguard Worker; CHECK: ubfiz {{w[0-9]*}}, {{w[0-9]*}}, #4, #4 154*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @lsl_i8(i8 %a) { 155*9880d681SAndroid Build Coastguard Worker %1 = shl i8 %a, 4 156*9880d681SAndroid Build Coastguard Worker ret i8 %1 157*9880d681SAndroid Build Coastguard Worker} 158*9880d681SAndroid Build Coastguard Worker 159*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_zext_i8_i16 160*9880d681SAndroid Build Coastguard Worker; CHECK: ubfiz {{w[0-9]*}}, {{w[0-9]*}}, #4, #8 161*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @lsl_zext_i8_i16(i8 %b) { 162*9880d681SAndroid Build Coastguard Worker %1 = zext i8 %b to i16 163*9880d681SAndroid Build Coastguard Worker %2 = shl i16 %1, 4 164*9880d681SAndroid Build Coastguard Worker ret i16 %2 165*9880d681SAndroid Build Coastguard Worker} 166*9880d681SAndroid Build Coastguard Worker 167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_sext_i8_i16 168*9880d681SAndroid Build Coastguard Worker; CHECK: sbfiz {{w[0-9]*}}, {{w[0-9]*}}, #4, #8 169*9880d681SAndroid Build Coastguard Workerdefine signext i16 @lsl_sext_i8_i16(i8 %b) { 170*9880d681SAndroid Build Coastguard Worker %1 = sext i8 %b to i16 171*9880d681SAndroid Build Coastguard Worker %2 = shl i16 %1, 4 172*9880d681SAndroid Build Coastguard Worker ret i16 %2 173*9880d681SAndroid Build Coastguard Worker} 174*9880d681SAndroid Build Coastguard Worker 175*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_zext_i8_i32 176*9880d681SAndroid Build Coastguard Worker; CHECK: ubfiz {{w[0-9]*}}, {{w[0-9]*}}, #4, #8 177*9880d681SAndroid Build Coastguard Workerdefine i32 @lsl_zext_i8_i32(i8 %b) { 178*9880d681SAndroid Build Coastguard Worker %1 = zext i8 %b to i32 179*9880d681SAndroid Build Coastguard Worker %2 = shl i32 %1, 4 180*9880d681SAndroid Build Coastguard Worker ret i32 %2 181*9880d681SAndroid Build Coastguard Worker} 182*9880d681SAndroid Build Coastguard Worker 183*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_sext_i8_i32 184*9880d681SAndroid Build Coastguard Worker; CHECK: sbfiz {{w[0-9]*}}, {{w[0-9]*}}, #4, #8 185*9880d681SAndroid Build Coastguard Workerdefine i32 @lsl_sext_i8_i32(i8 %b) { 186*9880d681SAndroid Build Coastguard Worker %1 = sext i8 %b to i32 187*9880d681SAndroid Build Coastguard Worker %2 = shl i32 %1, 4 188*9880d681SAndroid Build Coastguard Worker ret i32 %2 189*9880d681SAndroid Build Coastguard Worker} 190*9880d681SAndroid Build Coastguard Worker 191*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_zext_i8_i64 192*9880d681SAndroid Build Coastguard Worker; CHECK: ubfiz {{x[0-9]*}}, {{x[0-9]*}}, #4, #8 193*9880d681SAndroid Build Coastguard Workerdefine i64 @lsl_zext_i8_i64(i8 %b) { 194*9880d681SAndroid Build Coastguard Worker %1 = zext i8 %b to i64 195*9880d681SAndroid Build Coastguard Worker %2 = shl i64 %1, 4 196*9880d681SAndroid Build Coastguard Worker ret i64 %2 197*9880d681SAndroid Build Coastguard Worker} 198*9880d681SAndroid Build Coastguard Worker 199*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_sext_i8_i64 200*9880d681SAndroid Build Coastguard Worker; CHECK: sbfiz {{x[0-9]*}}, {{x[0-9]*}}, #4, #8 201*9880d681SAndroid Build Coastguard Workerdefine i64 @lsl_sext_i8_i64(i8 %b) { 202*9880d681SAndroid Build Coastguard Worker %1 = sext i8 %b to i64 203*9880d681SAndroid Build Coastguard Worker %2 = shl i64 %1, 4 204*9880d681SAndroid Build Coastguard Worker ret i64 %2 205*9880d681SAndroid Build Coastguard Worker} 206*9880d681SAndroid Build Coastguard Worker 207*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lslv_i16 208*9880d681SAndroid Build Coastguard Worker; CHECK: and [[REG1:w[0-9]+]], w1, #0xffff 209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: lsl [[REG2:w[0-9]+]], w0, [[REG1]] 210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: and {{w[0-9]+}}, [[REG2]], #0xffff 211*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @lslv_i16(i16 %a, i16 %b) { 212*9880d681SAndroid Build Coastguard Worker %1 = shl i16 %a, %b 213*9880d681SAndroid Build Coastguard Worker ret i16 %1 214*9880d681SAndroid Build Coastguard Worker} 215*9880d681SAndroid Build Coastguard Worker 216*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_i16 217*9880d681SAndroid Build Coastguard Worker; CHECK: ubfiz {{w[0-9]*}}, {{w[0-9]*}}, #8, #8 218*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @lsl_i16(i16 %a) { 219*9880d681SAndroid Build Coastguard Worker %1 = shl i16 %a, 8 220*9880d681SAndroid Build Coastguard Worker ret i16 %1 221*9880d681SAndroid Build Coastguard Worker} 222*9880d681SAndroid Build Coastguard Worker 223*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_zext_i16_i32 224*9880d681SAndroid Build Coastguard Worker; CHECK: ubfiz {{w[0-9]*}}, {{w[0-9]*}}, #8, #16 225*9880d681SAndroid Build Coastguard Workerdefine i32 @lsl_zext_i16_i32(i16 %b) { 226*9880d681SAndroid Build Coastguard Worker %1 = zext i16 %b to i32 227*9880d681SAndroid Build Coastguard Worker %2 = shl i32 %1, 8 228*9880d681SAndroid Build Coastguard Worker ret i32 %2 229*9880d681SAndroid Build Coastguard Worker} 230*9880d681SAndroid Build Coastguard Worker 231*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_sext_i16_i32 232*9880d681SAndroid Build Coastguard Worker; CHECK: sbfiz {{w[0-9]*}}, {{w[0-9]*}}, #8, #16 233*9880d681SAndroid Build Coastguard Workerdefine i32 @lsl_sext_i16_i32(i16 %b) { 234*9880d681SAndroid Build Coastguard Worker %1 = sext i16 %b to i32 235*9880d681SAndroid Build Coastguard Worker %2 = shl i32 %1, 8 236*9880d681SAndroid Build Coastguard Worker ret i32 %2 237*9880d681SAndroid Build Coastguard Worker} 238*9880d681SAndroid Build Coastguard Worker 239*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_zext_i16_i64 240*9880d681SAndroid Build Coastguard Worker; CHECK: ubfiz {{x[0-9]*}}, {{x[0-9]*}}, #8, #16 241*9880d681SAndroid Build Coastguard Workerdefine i64 @lsl_zext_i16_i64(i16 %b) { 242*9880d681SAndroid Build Coastguard Worker %1 = zext i16 %b to i64 243*9880d681SAndroid Build Coastguard Worker %2 = shl i64 %1, 8 244*9880d681SAndroid Build Coastguard Worker ret i64 %2 245*9880d681SAndroid Build Coastguard Worker} 246*9880d681SAndroid Build Coastguard Worker 247*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_sext_i16_i64 248*9880d681SAndroid Build Coastguard Worker; CHECK: sbfiz {{x[0-9]*}}, {{x[0-9]*}}, #8, #16 249*9880d681SAndroid Build Coastguard Workerdefine i64 @lsl_sext_i16_i64(i16 %b) { 250*9880d681SAndroid Build Coastguard Worker %1 = sext i16 %b to i64 251*9880d681SAndroid Build Coastguard Worker %2 = shl i64 %1, 8 252*9880d681SAndroid Build Coastguard Worker ret i64 %2 253*9880d681SAndroid Build Coastguard Worker} 254*9880d681SAndroid Build Coastguard Worker 255*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lslv_i32 256*9880d681SAndroid Build Coastguard Worker; CHECK: lsl {{w[0-9]*}}, w0, w1 257*9880d681SAndroid Build Coastguard Workerdefine zeroext i32 @lslv_i32(i32 %a, i32 %b) { 258*9880d681SAndroid Build Coastguard Worker %1 = shl i32 %a, %b 259*9880d681SAndroid Build Coastguard Worker ret i32 %1 260*9880d681SAndroid Build Coastguard Worker} 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_i32 263*9880d681SAndroid Build Coastguard Worker; CHECK: lsl {{w[0-9]*}}, {{w[0-9]*}}, #16 264*9880d681SAndroid Build Coastguard Workerdefine zeroext i32 @lsl_i32(i32 %a) { 265*9880d681SAndroid Build Coastguard Worker %1 = shl i32 %a, 16 266*9880d681SAndroid Build Coastguard Worker ret i32 %1 267*9880d681SAndroid Build Coastguard Worker} 268*9880d681SAndroid Build Coastguard Worker 269*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_zext_i32_i64 270*9880d681SAndroid Build Coastguard Worker; CHECK: ubfiz {{x[0-9]+}}, {{x[0-9]+}}, #16, #32 271*9880d681SAndroid Build Coastguard Workerdefine i64 @lsl_zext_i32_i64(i32 %b) { 272*9880d681SAndroid Build Coastguard Worker %1 = zext i32 %b to i64 273*9880d681SAndroid Build Coastguard Worker %2 = shl i64 %1, 16 274*9880d681SAndroid Build Coastguard Worker ret i64 %2 275*9880d681SAndroid Build Coastguard Worker} 276*9880d681SAndroid Build Coastguard Worker 277*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_sext_i32_i64 278*9880d681SAndroid Build Coastguard Worker; CHECK: sbfiz {{x[0-9]+}}, {{x[0-9]+}}, #16, #32 279*9880d681SAndroid Build Coastguard Workerdefine i64 @lsl_sext_i32_i64(i32 %b) { 280*9880d681SAndroid Build Coastguard Worker %1 = sext i32 %b to i64 281*9880d681SAndroid Build Coastguard Worker %2 = shl i64 %1, 16 282*9880d681SAndroid Build Coastguard Worker ret i64 %2 283*9880d681SAndroid Build Coastguard Worker} 284*9880d681SAndroid Build Coastguard Worker 285*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lslv_i64 286*9880d681SAndroid Build Coastguard Worker; CHECK: lsl {{x[0-9]*}}, x0, x1 287*9880d681SAndroid Build Coastguard Workerdefine i64 @lslv_i64(i64 %a, i64 %b) { 288*9880d681SAndroid Build Coastguard Worker %1 = shl i64 %a, %b 289*9880d681SAndroid Build Coastguard Worker ret i64 %1 290*9880d681SAndroid Build Coastguard Worker} 291*9880d681SAndroid Build Coastguard Worker 292*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsl_i64 293*9880d681SAndroid Build Coastguard Worker; CHECK: lsl {{x[0-9]*}}, {{x[0-9]*}}, #32 294*9880d681SAndroid Build Coastguard Workerdefine i64 @lsl_i64(i64 %a) { 295*9880d681SAndroid Build Coastguard Worker %1 = shl i64 %a, 32 296*9880d681SAndroid Build Coastguard Worker ret i64 %1 297*9880d681SAndroid Build Coastguard Worker} 298*9880d681SAndroid Build Coastguard Worker 299*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsrv_i8 300*9880d681SAndroid Build Coastguard Worker; CHECK: and [[REG1:w[0-9]+]], w0, #0xff 301*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: and [[REG2:w[0-9]+]], w1, #0xff 302*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: lsr [[REG3:w[0-9]+]], [[REG1]], [[REG2]] 303*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: and {{w[0-9]+}}, [[REG3]], #0xff 304*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @lsrv_i8(i8 %a, i8 %b) { 305*9880d681SAndroid Build Coastguard Worker %1 = lshr i8 %a, %b 306*9880d681SAndroid Build Coastguard Worker ret i8 %1 307*9880d681SAndroid Build Coastguard Worker} 308*9880d681SAndroid Build Coastguard Worker 309*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsr_i8 310*9880d681SAndroid Build Coastguard Worker; CHECK: ubfx {{w[0-9]*}}, {{w[0-9]*}}, #4, #4 311*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @lsr_i8(i8 %a) { 312*9880d681SAndroid Build Coastguard Worker %1 = lshr i8 %a, 4 313*9880d681SAndroid Build Coastguard Worker ret i8 %1 314*9880d681SAndroid Build Coastguard Worker} 315*9880d681SAndroid Build Coastguard Worker 316*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsr_zext_i8_i16 317*9880d681SAndroid Build Coastguard Worker; CHECK: ubfx {{w[0-9]*}}, {{w[0-9]*}}, #4, #4 318*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @lsr_zext_i8_i16(i8 %b) { 319*9880d681SAndroid Build Coastguard Worker %1 = zext i8 %b to i16 320*9880d681SAndroid Build Coastguard Worker %2 = lshr i16 %1, 4 321*9880d681SAndroid Build Coastguard Worker ret i16 %2 322*9880d681SAndroid Build Coastguard Worker} 323*9880d681SAndroid Build Coastguard Worker 324*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsr_sext_i8_i16 325*9880d681SAndroid Build Coastguard Worker; CHECK: sxtb [[REG:w[0-9]+]], w0 326*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ubfx {{w[0-9]*}}, [[REG]], #4, #12 327*9880d681SAndroid Build Coastguard Workerdefine signext i16 @lsr_sext_i8_i16(i8 %b) { 328*9880d681SAndroid Build Coastguard Worker %1 = sext i8 %b to i16 329*9880d681SAndroid Build Coastguard Worker %2 = lshr i16 %1, 4 330*9880d681SAndroid Build Coastguard Worker ret i16 %2 331*9880d681SAndroid Build Coastguard Worker} 332*9880d681SAndroid Build Coastguard Worker 333*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsr_zext_i8_i32 334*9880d681SAndroid Build Coastguard Worker; CHECK: ubfx {{w[0-9]*}}, {{w[0-9]*}}, #4, #4 335*9880d681SAndroid Build Coastguard Workerdefine i32 @lsr_zext_i8_i32(i8 %b) { 336*9880d681SAndroid Build Coastguard Worker %1 = zext i8 %b to i32 337*9880d681SAndroid Build Coastguard Worker %2 = lshr i32 %1, 4 338*9880d681SAndroid Build Coastguard Worker ret i32 %2 339*9880d681SAndroid Build Coastguard Worker} 340*9880d681SAndroid Build Coastguard Worker 341*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsr_sext_i8_i32 342*9880d681SAndroid Build Coastguard Worker; CHECK: sxtb [[REG:w[0-9]+]], w0 343*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: lsr {{w[0-9]*}}, [[REG]], #4 344*9880d681SAndroid Build Coastguard Workerdefine i32 @lsr_sext_i8_i32(i8 %b) { 345*9880d681SAndroid Build Coastguard Worker %1 = sext i8 %b to i32 346*9880d681SAndroid Build Coastguard Worker %2 = lshr i32 %1, 4 347*9880d681SAndroid Build Coastguard Worker ret i32 %2 348*9880d681SAndroid Build Coastguard Worker} 349*9880d681SAndroid Build Coastguard Worker 350*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsrv_i16 351*9880d681SAndroid Build Coastguard Worker; CHECK: and [[REG1:w[0-9]+]], w0, #0xffff 352*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: and [[REG2:w[0-9]+]], w1, #0xffff 353*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: lsr [[REG3:w[0-9]+]], [[REG1]], [[REG2]] 354*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: and {{w[0-9]+}}, [[REG3]], #0xffff 355*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @lsrv_i16(i16 %a, i16 %b) { 356*9880d681SAndroid Build Coastguard Worker %1 = lshr i16 %a, %b 357*9880d681SAndroid Build Coastguard Worker ret i16 %1 358*9880d681SAndroid Build Coastguard Worker} 359*9880d681SAndroid Build Coastguard Worker 360*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsr_i16 361*9880d681SAndroid Build Coastguard Worker; CHECK: ubfx {{w[0-9]*}}, {{w[0-9]*}}, #8, #8 362*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @lsr_i16(i16 %a) { 363*9880d681SAndroid Build Coastguard Worker %1 = lshr i16 %a, 8 364*9880d681SAndroid Build Coastguard Worker ret i16 %1 365*9880d681SAndroid Build Coastguard Worker} 366*9880d681SAndroid Build Coastguard Worker 367*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsrv_i32 368*9880d681SAndroid Build Coastguard Worker; CHECK: lsr {{w[0-9]*}}, w0, w1 369*9880d681SAndroid Build Coastguard Workerdefine zeroext i32 @lsrv_i32(i32 %a, i32 %b) { 370*9880d681SAndroid Build Coastguard Worker %1 = lshr i32 %a, %b 371*9880d681SAndroid Build Coastguard Worker ret i32 %1 372*9880d681SAndroid Build Coastguard Worker} 373*9880d681SAndroid Build Coastguard Worker 374*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsr_i32 375*9880d681SAndroid Build Coastguard Worker; CHECK: lsr {{w[0-9]*}}, {{w[0-9]*}}, #16 376*9880d681SAndroid Build Coastguard Workerdefine zeroext i32 @lsr_i32(i32 %a) { 377*9880d681SAndroid Build Coastguard Worker %1 = lshr i32 %a, 16 378*9880d681SAndroid Build Coastguard Worker ret i32 %1 379*9880d681SAndroid Build Coastguard Worker} 380*9880d681SAndroid Build Coastguard Worker 381*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsrv_i64 382*9880d681SAndroid Build Coastguard Worker; CHECK: lsr {{x[0-9]*}}, x0, x1 383*9880d681SAndroid Build Coastguard Workerdefine i64 @lsrv_i64(i64 %a, i64 %b) { 384*9880d681SAndroid Build Coastguard Worker %1 = lshr i64 %a, %b 385*9880d681SAndroid Build Coastguard Worker ret i64 %1 386*9880d681SAndroid Build Coastguard Worker} 387*9880d681SAndroid Build Coastguard Worker 388*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lsr_i64 389*9880d681SAndroid Build Coastguard Worker; CHECK: lsr {{x[0-9]*}}, {{x[0-9]*}}, #32 390*9880d681SAndroid Build Coastguard Workerdefine i64 @lsr_i64(i64 %a) { 391*9880d681SAndroid Build Coastguard Worker %1 = lshr i64 %a, 32 392*9880d681SAndroid Build Coastguard Worker ret i64 %1 393*9880d681SAndroid Build Coastguard Worker} 394*9880d681SAndroid Build Coastguard Worker 395*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asrv_i8 396*9880d681SAndroid Build Coastguard Worker; CHECK: sxtb [[REG1:w[0-9]+]], w0 397*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: and [[REG2:w[0-9]+]], w1, #0xff 398*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: asr [[REG3:w[0-9]+]], [[REG1]], [[REG2]] 399*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: and {{w[0-9]+}}, [[REG3]], #0xff 400*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @asrv_i8(i8 %a, i8 %b) { 401*9880d681SAndroid Build Coastguard Worker %1 = ashr i8 %a, %b 402*9880d681SAndroid Build Coastguard Worker ret i8 %1 403*9880d681SAndroid Build Coastguard Worker} 404*9880d681SAndroid Build Coastguard Worker 405*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asr_i8 406*9880d681SAndroid Build Coastguard Worker; CHECK: sbfx {{w[0-9]*}}, {{w[0-9]*}}, #4, #4 407*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @asr_i8(i8 %a) { 408*9880d681SAndroid Build Coastguard Worker %1 = ashr i8 %a, 4 409*9880d681SAndroid Build Coastguard Worker ret i8 %1 410*9880d681SAndroid Build Coastguard Worker} 411*9880d681SAndroid Build Coastguard Worker 412*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asr_zext_i8_i16 413*9880d681SAndroid Build Coastguard Worker; CHECK: ubfx {{w[0-9]*}}, {{w[0-9]*}}, #4, #4 414*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @asr_zext_i8_i16(i8 %b) { 415*9880d681SAndroid Build Coastguard Worker %1 = zext i8 %b to i16 416*9880d681SAndroid Build Coastguard Worker %2 = ashr i16 %1, 4 417*9880d681SAndroid Build Coastguard Worker ret i16 %2 418*9880d681SAndroid Build Coastguard Worker} 419*9880d681SAndroid Build Coastguard Worker 420*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asr_sext_i8_i16 421*9880d681SAndroid Build Coastguard Worker; CHECK: sbfx {{w[0-9]*}}, {{w[0-9]*}}, #4, #4 422*9880d681SAndroid Build Coastguard Workerdefine signext i16 @asr_sext_i8_i16(i8 %b) { 423*9880d681SAndroid Build Coastguard Worker %1 = sext i8 %b to i16 424*9880d681SAndroid Build Coastguard Worker %2 = ashr i16 %1, 4 425*9880d681SAndroid Build Coastguard Worker ret i16 %2 426*9880d681SAndroid Build Coastguard Worker} 427*9880d681SAndroid Build Coastguard Worker 428*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asr_zext_i8_i32 429*9880d681SAndroid Build Coastguard Worker; CHECK: ubfx {{w[0-9]*}}, {{w[0-9]*}}, #4, #4 430*9880d681SAndroid Build Coastguard Workerdefine i32 @asr_zext_i8_i32(i8 %b) { 431*9880d681SAndroid Build Coastguard Worker %1 = zext i8 %b to i32 432*9880d681SAndroid Build Coastguard Worker %2 = ashr i32 %1, 4 433*9880d681SAndroid Build Coastguard Worker ret i32 %2 434*9880d681SAndroid Build Coastguard Worker} 435*9880d681SAndroid Build Coastguard Worker 436*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asr_sext_i8_i32 437*9880d681SAndroid Build Coastguard Worker; CHECK: sbfx {{w[0-9]*}}, {{w[0-9]*}}, #4, #4 438*9880d681SAndroid Build Coastguard Workerdefine i32 @asr_sext_i8_i32(i8 %b) { 439*9880d681SAndroid Build Coastguard Worker %1 = sext i8 %b to i32 440*9880d681SAndroid Build Coastguard Worker %2 = ashr i32 %1, 4 441*9880d681SAndroid Build Coastguard Worker ret i32 %2 442*9880d681SAndroid Build Coastguard Worker} 443*9880d681SAndroid Build Coastguard Worker 444*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asrv_i16 445*9880d681SAndroid Build Coastguard Worker; CHECK: sxth [[REG1:w[0-9]+]], w0 446*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: and [[REG2:w[0-9]+]], w1, #0xffff 447*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: asr [[REG3:w[0-9]+]], [[REG1]], [[REG2]] 448*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: and {{w[0-9]+}}, [[REG3]], #0xffff 449*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @asrv_i16(i16 %a, i16 %b) { 450*9880d681SAndroid Build Coastguard Worker %1 = ashr i16 %a, %b 451*9880d681SAndroid Build Coastguard Worker ret i16 %1 452*9880d681SAndroid Build Coastguard Worker} 453*9880d681SAndroid Build Coastguard Worker 454*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asr_i16 455*9880d681SAndroid Build Coastguard Worker; CHECK: sbfx {{w[0-9]*}}, {{w[0-9]*}}, #8, #8 456*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @asr_i16(i16 %a) { 457*9880d681SAndroid Build Coastguard Worker %1 = ashr i16 %a, 8 458*9880d681SAndroid Build Coastguard Worker ret i16 %1 459*9880d681SAndroid Build Coastguard Worker} 460*9880d681SAndroid Build Coastguard Worker 461*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asrv_i32 462*9880d681SAndroid Build Coastguard Worker; CHECK: asr {{w[0-9]*}}, w0, w1 463*9880d681SAndroid Build Coastguard Workerdefine zeroext i32 @asrv_i32(i32 %a, i32 %b) { 464*9880d681SAndroid Build Coastguard Worker %1 = ashr i32 %a, %b 465*9880d681SAndroid Build Coastguard Worker ret i32 %1 466*9880d681SAndroid Build Coastguard Worker} 467*9880d681SAndroid Build Coastguard Worker 468*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asr_i32 469*9880d681SAndroid Build Coastguard Worker; CHECK: asr {{w[0-9]*}}, {{w[0-9]*}}, #16 470*9880d681SAndroid Build Coastguard Workerdefine zeroext i32 @asr_i32(i32 %a) { 471*9880d681SAndroid Build Coastguard Worker %1 = ashr i32 %a, 16 472*9880d681SAndroid Build Coastguard Worker ret i32 %1 473*9880d681SAndroid Build Coastguard Worker} 474*9880d681SAndroid Build Coastguard Worker 475*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asrv_i64 476*9880d681SAndroid Build Coastguard Worker; CHECK: asr {{x[0-9]*}}, x0, x1 477*9880d681SAndroid Build Coastguard Workerdefine i64 @asrv_i64(i64 %a, i64 %b) { 478*9880d681SAndroid Build Coastguard Worker %1 = ashr i64 %a, %b 479*9880d681SAndroid Build Coastguard Worker ret i64 %1 480*9880d681SAndroid Build Coastguard Worker} 481*9880d681SAndroid Build Coastguard Worker 482*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: asr_i64 483*9880d681SAndroid Build Coastguard Worker; CHECK: asr {{x[0-9]*}}, {{x[0-9]*}}, #32 484*9880d681SAndroid Build Coastguard Workerdefine i64 @asr_i64(i64 %a) { 485*9880d681SAndroid Build Coastguard Worker %1 = ashr i64 %a, 32 486*9880d681SAndroid Build Coastguard Worker ret i64 %1 487*9880d681SAndroid Build Coastguard Worker} 488*9880d681SAndroid Build Coastguard Worker 489*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shift_test1 490*9880d681SAndroid Build Coastguard Worker; CHECK: ubfiz {{w[0-9]*}}, {{w[0-9]*}}, #4, #4 491*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sbfx {{w[0-9]*}}, {{w[0-9]*}}, #4, #4 492*9880d681SAndroid Build Coastguard Workerdefine i32 @shift_test1(i8 %a) { 493*9880d681SAndroid Build Coastguard Worker %1 = shl i8 %a, 4 494*9880d681SAndroid Build Coastguard Worker %2 = ashr i8 %1, 4 495*9880d681SAndroid Build Coastguard Worker %3 = sext i8 %2 to i32 496*9880d681SAndroid Build Coastguard Worker ret i32 %3 497*9880d681SAndroid Build Coastguard Worker} 498*9880d681SAndroid Build Coastguard Worker 499*9880d681SAndroid Build Coastguard Worker; Test zero shifts 500*9880d681SAndroid Build Coastguard Worker 501*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shl_zero 502*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: lsl 503*9880d681SAndroid Build Coastguard Workerdefine i32 @shl_zero(i32 %a) { 504*9880d681SAndroid Build Coastguard Worker %1 = shl i32 %a, 0 505*9880d681SAndroid Build Coastguard Worker ret i32 %1 506*9880d681SAndroid Build Coastguard Worker} 507*9880d681SAndroid Build Coastguard Worker 508*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lshr_zero 509*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: lsr 510*9880d681SAndroid Build Coastguard Workerdefine i32 @lshr_zero(i32 %a) { 511*9880d681SAndroid Build Coastguard Worker %1 = lshr i32 %a, 0 512*9880d681SAndroid Build Coastguard Worker ret i32 %1 513*9880d681SAndroid Build Coastguard Worker} 514*9880d681SAndroid Build Coastguard Worker 515*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ashr_zero 516*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: asr 517*9880d681SAndroid Build Coastguard Workerdefine i32 @ashr_zero(i32 %a) { 518*9880d681SAndroid Build Coastguard Worker %1 = ashr i32 %a, 0 519*9880d681SAndroid Build Coastguard Worker ret i32 %1 520*9880d681SAndroid Build Coastguard Worker} 521*9880d681SAndroid Build Coastguard Worker 522*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shl_zext_zero 523*9880d681SAndroid Build Coastguard Worker; CHECK: ubfx x0, x0, #0, #32 524*9880d681SAndroid Build Coastguard Workerdefine i64 @shl_zext_zero(i32 %a) { 525*9880d681SAndroid Build Coastguard Worker %1 = zext i32 %a to i64 526*9880d681SAndroid Build Coastguard Worker %2 = shl i64 %1, 0 527*9880d681SAndroid Build Coastguard Worker ret i64 %2 528*9880d681SAndroid Build Coastguard Worker} 529*9880d681SAndroid Build Coastguard Worker 530*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lshr_zext_zero 531*9880d681SAndroid Build Coastguard Worker; CHECK: ubfx x0, x0, #0, #32 532*9880d681SAndroid Build Coastguard Workerdefine i64 @lshr_zext_zero(i32 %a) { 533*9880d681SAndroid Build Coastguard Worker %1 = zext i32 %a to i64 534*9880d681SAndroid Build Coastguard Worker %2 = lshr i64 %1, 0 535*9880d681SAndroid Build Coastguard Worker ret i64 %2 536*9880d681SAndroid Build Coastguard Worker} 537*9880d681SAndroid Build Coastguard Worker 538*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ashr_zext_zero 539*9880d681SAndroid Build Coastguard Worker; CHECK: ubfx x0, x0, #0, #32 540*9880d681SAndroid Build Coastguard Workerdefine i64 @ashr_zext_zero(i32 %a) { 541*9880d681SAndroid Build Coastguard Worker %1 = zext i32 %a to i64 542*9880d681SAndroid Build Coastguard Worker %2 = ashr i64 %1, 0 543*9880d681SAndroid Build Coastguard Worker ret i64 %2 544*9880d681SAndroid Build Coastguard Worker} 545*9880d681SAndroid Build Coastguard Worker 546