1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel -relocation-model=pic -O0 -fast-isel-abort=1 -mcpu=mips32r2 < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel -relocation-model=pic -O0 -fast-isel-abort=1 -mcpu=mips32 < %s | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker@ub1 = common global i8 0, align 1 5*9880d681SAndroid Build Coastguard Worker@ub2 = common global i8 0, align 1 6*9880d681SAndroid Build Coastguard Worker@ub3 = common global i8 0, align 1 7*9880d681SAndroid Build Coastguard Worker@uc1 = common global i8 0, align 1 8*9880d681SAndroid Build Coastguard Worker@uc2 = common global i8 0, align 1 9*9880d681SAndroid Build Coastguard Worker@uc3 = common global i8 0, align 1 10*9880d681SAndroid Build Coastguard Worker@us1 = common global i16 0, align 2 11*9880d681SAndroid Build Coastguard Worker@us2 = common global i16 0, align 2 12*9880d681SAndroid Build Coastguard Worker@us3 = common global i16 0, align 2 13*9880d681SAndroid Build Coastguard Worker@ub = common global i8 0, align 1 14*9880d681SAndroid Build Coastguard Worker@uc = common global i8 0, align 1 15*9880d681SAndroid Build Coastguard Worker@us = common global i16 0, align 2 16*9880d681SAndroid Build Coastguard Worker@.str = private unnamed_addr constant [4 x i8] c"%i\0A\00", align 1 17*9880d681SAndroid Build Coastguard Worker@ui = common global i32 0, align 4 18*9880d681SAndroid Build Coastguard Worker@ui1 = common global i32 0, align 4 19*9880d681SAndroid Build Coastguard Worker@ui2 = common global i32 0, align 4 20*9880d681SAndroid Build Coastguard Worker@ui3 = common global i32 0, align 4 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 23*9880d681SAndroid Build Coastguard Workerdefine void @andUb() #0 { 24*9880d681SAndroid Build Coastguard Workerentry: 25*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* @ub1, align 1 26*9880d681SAndroid Build Coastguard Worker %1 = load i8, i8* @ub2, align 1 27*9880d681SAndroid Build Coastguard Worker %conv0 = trunc i8 %0 to i1 28*9880d681SAndroid Build Coastguard Worker %conv1 = trunc i8 %1 to i1 29*9880d681SAndroid Build Coastguard Worker %and0 = and i1 %conv1, %conv0 30*9880d681SAndroid Build Coastguard Worker %conv3 = zext i1 %and0 to i8 31*9880d681SAndroid Build Coastguard Worker store i8 %conv3, i8* @ub, align 1, !tbaa !2 32*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent andUb 33*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 34*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 35*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 36*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB_ADDR:[0-9]+]], %got(ub)($[[REG_GP]]) 37*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB2_ADDR:[0-9]+]], %got(ub2)($[[REG_GP]]) 38*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB1_ADDR:[0-9]+]], %got(ub1)($[[REG_GP]]) 39*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UB1:[0-9]+]], 0($[[UB1_ADDR]]) 40*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UB2:[0-9]+]], 0($[[UB2_ADDR]]) 41*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: and $[[RES1:[0-9]+]], $[[UB2]], $[[UB1]] 42*9880d681SAndroid Build Coastguard Worker; CHECK: andi $[[RES:[0-9]+]], $[[RES1]], 1 43*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UB_ADDR]]) 44*9880d681SAndroid Build Coastguard Worker ret void 45*9880d681SAndroid Build Coastguard Worker} 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 48*9880d681SAndroid Build Coastguard Workerdefine void @andUb0() #0 { 49*9880d681SAndroid Build Coastguard Workerentry: 50*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* @ub1, align 1, !tbaa !2 51*9880d681SAndroid Build Coastguard Worker %conv = trunc i8 %0 to i1 52*9880d681SAndroid Build Coastguard Worker %and = and i1 %conv, 0 53*9880d681SAndroid Build Coastguard Worker %conv1 = zext i1 %and to i8 54*9880d681SAndroid Build Coastguard Worker store i8 %conv1, i8* @ub, align 1, !tbaa !2 55*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent andUb0 56*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 57*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 58*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 59*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB_ADDR:[0-9]+]], %got(ub)($[[REG_GP]]) 60*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB1_ADDR:[0-9]+]], %got(ub1)($[[REG_GP]]) 61*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UB1:[0-9]+]], 0($[[UB1_ADDR]]) 62*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: and $[[RES1:[0-9]+]], $[[UB1]], $zero 63*9880d681SAndroid Build Coastguard Worker; CHECK: andi $[[RES:[0-9]+]], $[[RES1]], 1 64*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UB_ADDR]]) 65*9880d681SAndroid Build Coastguard Worker; CHECK: .end andUb0 66*9880d681SAndroid Build Coastguard Worker ret void 67*9880d681SAndroid Build Coastguard Worker} 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 70*9880d681SAndroid Build Coastguard Workerdefine void @andUb1() #0 { 71*9880d681SAndroid Build Coastguard Worker; clang uses i8 constants for booleans, so we test with an i8 1. 72*9880d681SAndroid Build Coastguard Workerentry: 73*9880d681SAndroid Build Coastguard Worker %x = load i8, i8* @ub1, align 1, !tbaa !2 74*9880d681SAndroid Build Coastguard Worker %and = and i8 %x, 1 75*9880d681SAndroid Build Coastguard Worker %conv = trunc i8 %and to i1 76*9880d681SAndroid Build Coastguard Worker %conv1 = zext i1 %conv to i8 77*9880d681SAndroid Build Coastguard Worker store i8 %conv1, i8* @ub, align 1, !tbaa !2 78*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent andUb1 79*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 80*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 81*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 82*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB_ADDR:[0-9]+]], %got(ub)($[[REG_GP]]) 83*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[CONST:[0-9]+]], $zero, 1 84*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB1_ADDR:[0-9]+]], %got(ub1)($[[REG_GP]]) 85*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UB1:[0-9]+]], 0($[[UB1_ADDR]]) 86*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: and $[[RES1:[0-9]+]], $[[UB1]], $[[CONST]] 87*9880d681SAndroid Build Coastguard Worker; CHECK: andi $[[RES:[0-9]+]], $[[RES1]], 1 88*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UB_ADDR]]) 89*9880d681SAndroid Build Coastguard Worker; CHECK: .end andUb1 90*9880d681SAndroid Build Coastguard Worker ret void 91*9880d681SAndroid Build Coastguard Worker} 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 94*9880d681SAndroid Build Coastguard Workerdefine void @orUb() #0 { 95*9880d681SAndroid Build Coastguard Workerentry: 96*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* @ub1, align 1 97*9880d681SAndroid Build Coastguard Worker %1 = load i8, i8* @ub2, align 1 98*9880d681SAndroid Build Coastguard Worker %conv0 = trunc i8 %0 to i1 99*9880d681SAndroid Build Coastguard Worker %conv1 = trunc i8 %1 to i1 100*9880d681SAndroid Build Coastguard Worker %or0 = or i1 %conv1, %conv0 101*9880d681SAndroid Build Coastguard Worker %conv3 = zext i1 %or0 to i8 102*9880d681SAndroid Build Coastguard Worker store i8 %conv3, i8* @ub, align 1, !tbaa !2 103*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent orUb 104*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 105*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 106*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 107*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB_ADDR:[0-9]+]], %got(ub)($[[REG_GP]]) 108*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB2_ADDR:[0-9]+]], %got(ub2)($[[REG_GP]]) 109*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB1_ADDR:[0-9]+]], %got(ub1)($[[REG_GP]]) 110*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UB1:[0-9]+]], 0($[[UB1_ADDR]]) 111*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UB2:[0-9]+]], 0($[[UB2_ADDR]]) 112*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: or $[[RES1:[0-9]+]], $[[UB2]], $[[UB1]] 113*9880d681SAndroid Build Coastguard Worker; CHECK: andi $[[RES:[0-9]+]], $[[RES1]], 1 114*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UB_ADDR]]) 115*9880d681SAndroid Build Coastguard Worker ret void 116*9880d681SAndroid Build Coastguard Worker} 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 119*9880d681SAndroid Build Coastguard Workerdefine void @orUb0() #0 { 120*9880d681SAndroid Build Coastguard Workerentry: 121*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* @ub1, align 1, !tbaa !2 122*9880d681SAndroid Build Coastguard Worker %conv = trunc i8 %0 to i1 123*9880d681SAndroid Build Coastguard Worker %or = or i1 %conv, 0 124*9880d681SAndroid Build Coastguard Worker %conv1 = zext i1 %or to i8 125*9880d681SAndroid Build Coastguard Worker store i8 %conv1, i8* @ub, align 1, !tbaa !2 126*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent orUb0 127*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 128*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 129*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 130*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB_ADDR:[0-9]+]], %got(ub)($[[REG_GP]]) 131*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB1_ADDR:[0-9]+]], %got(ub1)($[[REG_GP]]) 132*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UB1:[0-9]+]], 0($[[UB1_ADDR]]) 133*9880d681SAndroid Build Coastguard Worker; CHECK: andi $[[RES:[0-9]+]], $[[UB1]], 1 134*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UB_ADDR]]) 135*9880d681SAndroid Build Coastguard Worker; CHECK: .end orUb0 136*9880d681SAndroid Build Coastguard Worker ret void 137*9880d681SAndroid Build Coastguard Worker} 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 140*9880d681SAndroid Build Coastguard Workerdefine void @orUb1() #0 { 141*9880d681SAndroid Build Coastguard Workerentry: 142*9880d681SAndroid Build Coastguard Worker %x = load i8, i8* @ub1, align 1, !tbaa !2 143*9880d681SAndroid Build Coastguard Worker %or = or i8 %x, 1 144*9880d681SAndroid Build Coastguard Worker %conv = trunc i8 %or to i1 145*9880d681SAndroid Build Coastguard Worker %conv1 = zext i1 %conv to i8 146*9880d681SAndroid Build Coastguard Worker store i8 %conv1, i8* @ub, align 1, !tbaa !2 147*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent orUb1 148*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 149*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 150*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 151*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB_ADDR:[0-9]+]], %got(ub)($[[REG_GP]]) 152*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[CONST:[0-9]+]], $zero, 1 153*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB1_ADDR:[0-9]+]], %got(ub1)($[[REG_GP]]) 154*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UB1:[0-9]+]], 0($[[UB1_ADDR]]) 155*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: or $[[RES1:[0-9]+]], $[[UB1]], $[[CONST]] 156*9880d681SAndroid Build Coastguard Worker; CHECK: andi $[[RES:[0-9]+]], $[[RES1]], 1 157*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UB_ADDR]]) 158*9880d681SAndroid Build Coastguard Worker; CHECK: .end orUb1 159*9880d681SAndroid Build Coastguard Worker ret void 160*9880d681SAndroid Build Coastguard Worker} 161*9880d681SAndroid Build Coastguard Worker 162*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 163*9880d681SAndroid Build Coastguard Workerdefine void @xorUb() #0 { 164*9880d681SAndroid Build Coastguard Workerentry: 165*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* @ub1, align 1 166*9880d681SAndroid Build Coastguard Worker %1 = load i8, i8* @ub2, align 1 167*9880d681SAndroid Build Coastguard Worker %conv0 = trunc i8 %0 to i1 168*9880d681SAndroid Build Coastguard Worker %conv1 = trunc i8 %1 to i1 169*9880d681SAndroid Build Coastguard Worker %xor0 = xor i1 %conv1, %conv0 170*9880d681SAndroid Build Coastguard Worker %conv3 = zext i1 %xor0 to i8 171*9880d681SAndroid Build Coastguard Worker store i8 %conv3, i8* @ub, align 1, !tbaa !2 172*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent xorUb 173*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 174*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 175*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 176*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB_ADDR:[0-9]+]], %got(ub)($[[REG_GP]]) 177*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB2_ADDR:[0-9]+]], %got(ub2)($[[REG_GP]]) 178*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB1_ADDR:[0-9]+]], %got(ub1)($[[REG_GP]]) 179*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UB1:[0-9]+]], 0($[[UB1_ADDR]]) 180*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UB2:[0-9]+]], 0($[[UB2_ADDR]]) 181*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: xor $[[RES1:[0-9]+]], $[[UB2]], $[[UB1]] 182*9880d681SAndroid Build Coastguard Worker; CHECK: andi $[[RES:[0-9]+]], $[[RES1]], 1 183*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UB_ADDR]]) 184*9880d681SAndroid Build Coastguard Worker ret void 185*9880d681SAndroid Build Coastguard Worker} 186*9880d681SAndroid Build Coastguard Worker 187*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 188*9880d681SAndroid Build Coastguard Workerdefine void @xorUb0() #0 { 189*9880d681SAndroid Build Coastguard Workerentry: 190*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* @ub1, align 1, !tbaa !2 191*9880d681SAndroid Build Coastguard Worker %conv = trunc i8 %0 to i1 192*9880d681SAndroid Build Coastguard Worker %xor = xor i1 %conv, 0 193*9880d681SAndroid Build Coastguard Worker %conv1 = zext i1 %xor to i8 194*9880d681SAndroid Build Coastguard Worker store i8 %conv1, i8* @ub, align 1, !tbaa !2 195*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent xorUb0 196*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 197*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 198*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 199*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB_ADDR:[0-9]+]], %got(ub)($[[REG_GP]]) 200*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB1_ADDR:[0-9]+]], %got(ub1)($[[REG_GP]]) 201*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UB1:[0-9]+]], 0($[[UB1_ADDR]]) 202*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: xor $[[RES1:[0-9]+]], $[[UB1]], $zero 203*9880d681SAndroid Build Coastguard Worker; CHECK: andi $[[RES:[0-9]+]], $[[RES1]], 1 204*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UB_ADDR]]) 205*9880d681SAndroid Build Coastguard Worker; CHECK: .end xorUb0 206*9880d681SAndroid Build Coastguard Worker ret void 207*9880d681SAndroid Build Coastguard Worker} 208*9880d681SAndroid Build Coastguard Worker 209*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 210*9880d681SAndroid Build Coastguard Workerdefine void @xorUb1() #0 { 211*9880d681SAndroid Build Coastguard Workerentry: 212*9880d681SAndroid Build Coastguard Worker %x = load i8, i8* @ub1, align 1, !tbaa !2 213*9880d681SAndroid Build Coastguard Worker %xor = xor i8 1, %x 214*9880d681SAndroid Build Coastguard Worker %conv = trunc i8 %xor to i1 215*9880d681SAndroid Build Coastguard Worker %conv1 = zext i1 %conv to i8 216*9880d681SAndroid Build Coastguard Worker store i8 %conv1, i8* @ub, align 1, !tbaa !2 217*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent xorUb1 218*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 219*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 220*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 221*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB_ADDR:[0-9]+]], %got(ub)($[[REG_GP]]) 222*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[CONST:[0-9]+]], $zero, 1 223*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UB1_ADDR:[0-9]+]], %got(ub1)($[[REG_GP]]) 224*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UB1:[0-9]+]], 0($[[UB1_ADDR]]) 225*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: xor $[[RES1:[0-9]+]], $[[UB1]], $[[CONST]] 226*9880d681SAndroid Build Coastguard Worker; CHECK: andi $[[RES:[0-9]+]], $[[RES1]], 1 227*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UB_ADDR]]) 228*9880d681SAndroid Build Coastguard Worker; CHECK: .end xorUb1 229*9880d681SAndroid Build Coastguard Worker ret void 230*9880d681SAndroid Build Coastguard Worker} 231*9880d681SAndroid Build Coastguard Worker 232*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 233*9880d681SAndroid Build Coastguard Workerdefine void @andUc() #0 { 234*9880d681SAndroid Build Coastguard Workerentry: 235*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* @uc1, align 1, !tbaa !2 236*9880d681SAndroid Build Coastguard Worker %1 = load i8, i8* @uc2, align 1, !tbaa !2 237*9880d681SAndroid Build Coastguard Worker %and3 = and i8 %1, %0 238*9880d681SAndroid Build Coastguard Worker store i8 %and3, i8* @uc, align 1, !tbaa !2 239*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent andUc 240*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 241*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 242*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 243*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC_ADDR:[0-9]+]], %got(uc)($[[REG_GP]]) 244*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC2_ADDR:[0-9]+]], %got(uc2)($[[REG_GP]]) 245*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC1_ADDR:[0-9]+]], %got(uc1)($[[REG_GP]]) 246*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UC1:[0-9]+]], 0($[[UC1_ADDR]]) 247*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UC2:[0-9]+]], 0($[[UC2_ADDR]]) 248*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: and $[[RES:[0-9]+]], $[[UC2]], $[[UB1]] 249*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UC_ADDR]]) 250*9880d681SAndroid Build Coastguard Worker ret void 251*9880d681SAndroid Build Coastguard Worker} 252*9880d681SAndroid Build Coastguard Worker 253*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 254*9880d681SAndroid Build Coastguard Workerdefine void @andUc0() #0 { 255*9880d681SAndroid Build Coastguard Workerentry: 256*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* @uc1, align 1, !tbaa !2 257*9880d681SAndroid Build Coastguard Worker %and = and i8 %0, 67 258*9880d681SAndroid Build Coastguard Worker store i8 %and, i8* @uc, align 1, !tbaa !2 259*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent andUc0 260*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 261*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 262*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 263*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC_ADDR:[0-9]+]], %got(uc)($[[REG_GP]]) 264*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC1_ADDR:[0-9]+]], %got(uc1)($[[REG_GP]]) 265*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UC1:[0-9]+]], 0($[[UC1_ADDR]]) 266*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[CONST_67:[0-9]+]], $zero, 67 267*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: and $[[RES:[0-9]+]], $[[UC1]], $[[CONST_67]] 268*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UC_ADDR]]) 269*9880d681SAndroid Build Coastguard Worker; CHECK: .end andUc0 270*9880d681SAndroid Build Coastguard Worker ret void 271*9880d681SAndroid Build Coastguard Worker} 272*9880d681SAndroid Build Coastguard Worker 273*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 274*9880d681SAndroid Build Coastguard Workerdefine void @andUc1() #0 { 275*9880d681SAndroid Build Coastguard Workerentry: 276*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* @uc1, align 1, !tbaa !2 277*9880d681SAndroid Build Coastguard Worker %and = and i8 %0, 167 278*9880d681SAndroid Build Coastguard Worker store i8 %and, i8* @uc, align 1, !tbaa !2 279*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent andUc1 280*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 281*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 282*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 283*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC_ADDR:[0-9]+]], %got(uc)($[[REG_GP]]) 284*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC1_ADDR:[0-9]+]], %got(uc1)($[[REG_GP]]) 285*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UC1:[0-9]+]], 0($[[UC1_ADDR]]) 286*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[CONST_167:[0-9]+]], $zero, 167 287*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: and $[[RES:[0-9]+]], $[[UC1]], $[[CONST_167]] 288*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UC_ADDR]]) 289*9880d681SAndroid Build Coastguard Worker; CHECK: .end andUc1 290*9880d681SAndroid Build Coastguard Worker ret void 291*9880d681SAndroid Build Coastguard Worker} 292*9880d681SAndroid Build Coastguard Worker 293*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 294*9880d681SAndroid Build Coastguard Workerdefine void @orUc() #0 { 295*9880d681SAndroid Build Coastguard Workerentry: 296*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* @uc1, align 1, !tbaa !2 297*9880d681SAndroid Build Coastguard Worker %1 = load i8, i8* @uc2, align 1, !tbaa !2 298*9880d681SAndroid Build Coastguard Worker %or3 = or i8 %1, %0 299*9880d681SAndroid Build Coastguard Worker store i8 %or3, i8* @uc, align 1, !tbaa !2 300*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent orUc 301*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 302*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 303*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 304*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC_ADDR:[0-9]+]], %got(uc)($[[REG_GP]]) 305*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC2_ADDR:[0-9]+]], %got(uc2)($[[REG_GP]]) 306*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC1_ADDR:[0-9]+]], %got(uc1)($[[REG_GP]]) 307*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UC1:[0-9]+]], 0($[[UC1_ADDR]]) 308*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UC2:[0-9]+]], 0($[[UC2_ADDR]]) 309*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: or $[[RES:[0-9]+]], $[[UC2]], $[[UC1]] 310*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UC_ADDR]]) 311*9880d681SAndroid Build Coastguard Worker; CHECK: .end orUc 312*9880d681SAndroid Build Coastguard Worker ret void 313*9880d681SAndroid Build Coastguard Worker} 314*9880d681SAndroid Build Coastguard Worker 315*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 316*9880d681SAndroid Build Coastguard Workerdefine void @orUc0() #0 { 317*9880d681SAndroid Build Coastguard Workerentry: 318*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* @uc1, align 1, !tbaa !2 319*9880d681SAndroid Build Coastguard Worker %or = or i8 %0, 69 320*9880d681SAndroid Build Coastguard Worker store i8 %or, i8* @uc, align 1, !tbaa !2 321*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent orUc0 322*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 323*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 324*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 325*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC_ADDR:[0-9]+]], %got(uc)($[[REG_GP]]) 326*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC1_ADDR:[0-9]+]], %got(uc1)($[[REG_GP]]) 327*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UC1:[0-9]+]], 0($[[UC1_ADDR]]) 328*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[CONST_69:[0-9]+]], $zero, 69 329*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: or $[[RES:[0-9]+]], $[[UC1]], $[[CONST_69]] 330*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UC_ADDR]]) 331*9880d681SAndroid Build Coastguard Worker; CHECK: .end orUc0 332*9880d681SAndroid Build Coastguard Worker ret void 333*9880d681SAndroid Build Coastguard Worker} 334*9880d681SAndroid Build Coastguard Worker 335*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 336*9880d681SAndroid Build Coastguard Workerdefine void @orUc1() #0 { 337*9880d681SAndroid Build Coastguard Workerentry: 338*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* @uc1, align 1, !tbaa !2 339*9880d681SAndroid Build Coastguard Worker %or = or i8 %0, 238 340*9880d681SAndroid Build Coastguard Worker store i8 %or, i8* @uc, align 1, !tbaa !2 341*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent orUc1 342*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 343*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 344*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 345*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC_ADDR:[0-9]+]], %got(uc)($[[REG_GP]]) 346*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC1_ADDR:[0-9]+]], %got(uc1)($[[REG_GP]]) 347*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UC1:[0-9]+]], 0($[[UC1_ADDR]]) 348*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[CONST_238:[0-9]+]], $zero, 238 349*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: or $[[RES:[0-9]+]], $[[UC1]], $[[CONST_238]] 350*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UC_ADDR]]) 351*9880d681SAndroid Build Coastguard Worker; CHECK: .end orUc1 352*9880d681SAndroid Build Coastguard Worker ret void 353*9880d681SAndroid Build Coastguard Worker} 354*9880d681SAndroid Build Coastguard Worker 355*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 356*9880d681SAndroid Build Coastguard Workerdefine void @xorUc() #0 { 357*9880d681SAndroid Build Coastguard Workerentry: 358*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* @uc1, align 1, !tbaa !2 359*9880d681SAndroid Build Coastguard Worker %1 = load i8, i8* @uc2, align 1, !tbaa !2 360*9880d681SAndroid Build Coastguard Worker %xor3 = xor i8 %1, %0 361*9880d681SAndroid Build Coastguard Worker store i8 %xor3, i8* @uc, align 1, !tbaa !2 362*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent xorUc 363*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 364*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 365*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 366*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC_ADDR:[0-9]+]], %got(uc)($[[REG_GP]]) 367*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC2_ADDR:[0-9]+]], %got(uc2)($[[REG_GP]]) 368*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC1_ADDR:[0-9]+]], %got(uc1)($[[REG_GP]]) 369*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UC1:[0-9]+]], 0($[[UC1_ADDR]]) 370*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UC2:[0-9]+]], 0($[[UC2_ADDR]]) 371*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: xor $[[RES:[0-9]+]], $[[UC2]], $[[UC1]] 372*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UC_ADDR]]) 373*9880d681SAndroid Build Coastguard Worker; CHECK: .end xorUc 374*9880d681SAndroid Build Coastguard Worker ret void 375*9880d681SAndroid Build Coastguard Worker} 376*9880d681SAndroid Build Coastguard Worker 377*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 378*9880d681SAndroid Build Coastguard Workerdefine void @xorUc0() #0 { 379*9880d681SAndroid Build Coastguard Workerentry: 380*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* @uc1, align 1, !tbaa !2 381*9880d681SAndroid Build Coastguard Worker %xor = xor i8 %0, 23 382*9880d681SAndroid Build Coastguard Worker store i8 %xor, i8* @uc, align 1, !tbaa !2 383*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent xorUc0 384*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 385*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 386*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 387*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC_ADDR:[0-9]+]], %got(uc)($[[REG_GP]]) 388*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC1_ADDR:[0-9]+]], %got(uc1)($[[REG_GP]]) 389*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UC1:[0-9]+]], 0($[[UC1_ADDR]]) 390*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[CONST_23:[0-9]+]], $zero, 23 391*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: xor $[[RES:[0-9]+]], $[[UC1]], $[[CONST_23]] 392*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UC_ADDR]]) 393*9880d681SAndroid Build Coastguard Worker; CHECK: .end xorUc0 394*9880d681SAndroid Build Coastguard Worker ret void 395*9880d681SAndroid Build Coastguard Worker} 396*9880d681SAndroid Build Coastguard Worker 397*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 398*9880d681SAndroid Build Coastguard Workerdefine void @xorUc1() #0 { 399*9880d681SAndroid Build Coastguard Workerentry: 400*9880d681SAndroid Build Coastguard Worker %0 = load i8, i8* @uc1, align 1, !tbaa !2 401*9880d681SAndroid Build Coastguard Worker %xor = xor i8 %0, 120 402*9880d681SAndroid Build Coastguard Worker store i8 %xor, i8* @uc, align 1, !tbaa !2 403*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent xorUc1 404*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 405*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 406*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 407*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC_ADDR:[0-9]+]], %got(uc)($[[REG_GP]]) 408*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[UC1_ADDR:[0-9]+]], %got(uc1)($[[REG_GP]]) 409*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lbu $[[UC1:[0-9]+]], 0($[[UC1_ADDR]]) 410*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[CONST_120:[0-9]+]], $zero, 120 411*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: xor $[[RES:[0-9]+]], $[[UC1]], $[[CONST_120]] 412*9880d681SAndroid Build Coastguard Worker; CHECK: sb $[[RES]], 0($[[UC_ADDR]]) 413*9880d681SAndroid Build Coastguard Worker; CHECK: .end xorUc1 414*9880d681SAndroid Build Coastguard Worker ret void 415*9880d681SAndroid Build Coastguard Worker} 416*9880d681SAndroid Build Coastguard Worker 417*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 418*9880d681SAndroid Build Coastguard Workerdefine void @andUs() #0 { 419*9880d681SAndroid Build Coastguard Workerentry: 420*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* @us1, align 2, !tbaa !5 421*9880d681SAndroid Build Coastguard Worker %1 = load i16, i16* @us2, align 2, !tbaa !5 422*9880d681SAndroid Build Coastguard Worker %and3 = and i16 %1, %0 423*9880d681SAndroid Build Coastguard Worker store i16 %and3, i16* @us, align 2, !tbaa !5 424*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent andUs 425*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 426*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 427*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 428*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US_ADDR:[0-9]+]], %got(us)($[[REG_GP]]) 429*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US2_ADDR:[0-9]+]], %got(us2)($[[REG_GP]]) 430*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US1_ADDR:[0-9]+]], %got(us1)($[[REG_GP]]) 431*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lhu $[[US1:[0-9]+]], 0($[[US1_ADDR]]) 432*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lhu $[[US2:[0-9]+]], 0($[[US2_ADDR]]) 433*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: and $[[RES:[0-9]+]], $[[US2]], $[[UB1]] 434*9880d681SAndroid Build Coastguard Worker; CHECK: sh $[[RES]], 0($[[US_ADDR]]) 435*9880d681SAndroid Build Coastguard Worker; CHECK: .end andUs 436*9880d681SAndroid Build Coastguard Worker ret void 437*9880d681SAndroid Build Coastguard Worker} 438*9880d681SAndroid Build Coastguard Worker 439*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 440*9880d681SAndroid Build Coastguard Workerdefine void @andUs0() #0 { 441*9880d681SAndroid Build Coastguard Workerentry: 442*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* @us1, align 2, !tbaa !5 443*9880d681SAndroid Build Coastguard Worker %and = and i16 %0, 4660 444*9880d681SAndroid Build Coastguard Worker store i16 %and, i16* @us, align 2, !tbaa !5 445*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent andUs0 446*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 447*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 448*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 449*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US_ADDR:[0-9]+]], %got(us)($[[REG_GP]]) 450*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US1_ADDR:[0-9]+]], %got(us1)($[[REG_GP]]) 451*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lhu $[[US1:[0-9]+]], 0($[[US1_ADDR]]) 452*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[CONST_4660:[0-9]+]], $zero, 4660 453*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: and $[[RES:[0-9]+]], $[[US1]], $[[CONST_4660]] 454*9880d681SAndroid Build Coastguard Worker; CHECK: sh $[[RES]], 0($[[US_ADDR]]) 455*9880d681SAndroid Build Coastguard Worker; CHECK: .end andUs0 456*9880d681SAndroid Build Coastguard Worker ret void 457*9880d681SAndroid Build Coastguard Worker} 458*9880d681SAndroid Build Coastguard Worker 459*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 460*9880d681SAndroid Build Coastguard Workerdefine void @andUs1() #0 { 461*9880d681SAndroid Build Coastguard Workerentry: 462*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* @us1, align 2, !tbaa !5 463*9880d681SAndroid Build Coastguard Worker %and = and i16 %0, 61351 464*9880d681SAndroid Build Coastguard Worker store i16 %and, i16* @us, align 2, !tbaa !5 465*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent andUs1 466*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 467*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 468*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 469*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US_ADDR:[0-9]+]], %got(us)($[[REG_GP]]) 470*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US1_ADDR:[0-9]+]], %got(us1)($[[REG_GP]]) 471*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lhu $[[US1:[0-9]+]], 0($[[US1_ADDR]]) 472*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ori $[[CONST_61351:[0-9]+]], $zero, 61351 473*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: and $[[RES:[0-9]+]], $[[US1]], $[[CONST_61351]] 474*9880d681SAndroid Build Coastguard Worker; CHECK: sh $[[RES]], 0($[[US_ADDR]]) 475*9880d681SAndroid Build Coastguard Worker; CHECK: .end andUs1 476*9880d681SAndroid Build Coastguard Worker ret void 477*9880d681SAndroid Build Coastguard Worker} 478*9880d681SAndroid Build Coastguard Worker 479*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 480*9880d681SAndroid Build Coastguard Workerdefine void @orUs() #0 { 481*9880d681SAndroid Build Coastguard Workerentry: 482*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* @us1, align 2, !tbaa !5 483*9880d681SAndroid Build Coastguard Worker %1 = load i16, i16* @us2, align 2, !tbaa !5 484*9880d681SAndroid Build Coastguard Worker %or3 = or i16 %1, %0 485*9880d681SAndroid Build Coastguard Worker store i16 %or3, i16* @us, align 2, !tbaa !5 486*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent orUs 487*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 488*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 489*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 490*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US_ADDR:[0-9]+]], %got(us)($[[REG_GP]]) 491*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US2_ADDR:[0-9]+]], %got(us2)($[[REG_GP]]) 492*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US1_ADDR:[0-9]+]], %got(us1)($[[REG_GP]]) 493*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lhu $[[US1:[0-9]+]], 0($[[US1_ADDR]]) 494*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lhu $[[US2:[0-9]+]], 0($[[US2_ADDR]]) 495*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: or $[[RES:[0-9]+]], $[[US2]], $[[US1]] 496*9880d681SAndroid Build Coastguard Worker; CHECK: sh $[[RES]], 0($[[US_ADDR]]) 497*9880d681SAndroid Build Coastguard Worker; CHECK: .end orUs 498*9880d681SAndroid Build Coastguard Worker ret void 499*9880d681SAndroid Build Coastguard Worker} 500*9880d681SAndroid Build Coastguard Worker 501*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 502*9880d681SAndroid Build Coastguard Workerdefine void @orUs0() #0 { 503*9880d681SAndroid Build Coastguard Workerentry: 504*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* @us1, align 2, !tbaa !5 505*9880d681SAndroid Build Coastguard Worker %or = or i16 %0, 17666 506*9880d681SAndroid Build Coastguard Worker store i16 %or, i16* @us, align 2, !tbaa !5 507*9880d681SAndroid Build Coastguard Worker ret void 508*9880d681SAndroid Build Coastguard Worker} 509*9880d681SAndroid Build Coastguard Worker 510*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 511*9880d681SAndroid Build Coastguard Workerdefine void @orUs1() #0 { 512*9880d681SAndroid Build Coastguard Workerentry: 513*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* @us1, align 2, !tbaa !5 514*9880d681SAndroid Build Coastguard Worker %or = or i16 %0, 60945 515*9880d681SAndroid Build Coastguard Worker store i16 %or, i16* @us, align 2, !tbaa !5 516*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent orUs1 517*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 518*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 519*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 520*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US_ADDR:[0-9]+]], %got(us)($[[REG_GP]]) 521*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US1_ADDR:[0-9]+]], %got(us1)($[[REG_GP]]) 522*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lhu $[[US1:[0-9]+]], 0($[[US1_ADDR]]) 523*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ori $[[CONST_60945:[0-9]+]], $zero, 60945 524*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: or $[[RES:[0-9]+]], $[[US1]], $[[CONST_60945]] 525*9880d681SAndroid Build Coastguard Worker; CHECK: sh $[[RES]], 0($[[US_ADDR]]) 526*9880d681SAndroid Build Coastguard Worker; CHECK: .end orUs1 527*9880d681SAndroid Build Coastguard Worker ret void 528*9880d681SAndroid Build Coastguard Worker} 529*9880d681SAndroid Build Coastguard Worker 530*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 531*9880d681SAndroid Build Coastguard Workerdefine void @xorUs() #0 { 532*9880d681SAndroid Build Coastguard Workerentry: 533*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* @us1, align 2, !tbaa !5 534*9880d681SAndroid Build Coastguard Worker %1 = load i16, i16* @us2, align 2, !tbaa !5 535*9880d681SAndroid Build Coastguard Worker %xor3 = xor i16 %1, %0 536*9880d681SAndroid Build Coastguard Worker store i16 %xor3, i16* @us, align 2, !tbaa !5 537*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent xorUs 538*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 539*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 540*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 541*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US_ADDR:[0-9]+]], %got(us)($[[REG_GP]]) 542*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US2_ADDR:[0-9]+]], %got(us2)($[[REG_GP]]) 543*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US1_ADDR:[0-9]+]], %got(us1)($[[REG_GP]]) 544*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lhu $[[US1:[0-9]+]], 0($[[US1_ADDR]]) 545*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lhu $[[US2:[0-9]+]], 0($[[US2_ADDR]]) 546*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: xor $[[RES:[0-9]+]], $[[US2]], $[[US1]] 547*9880d681SAndroid Build Coastguard Worker; CHECK: sh $[[RES]], 0($[[US_ADDR]]) 548*9880d681SAndroid Build Coastguard Worker; CHECK: .end xorUs 549*9880d681SAndroid Build Coastguard Worker ret void 550*9880d681SAndroid Build Coastguard Worker} 551*9880d681SAndroid Build Coastguard Worker 552*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 553*9880d681SAndroid Build Coastguard Workerdefine void @xorUs0() #0 { 554*9880d681SAndroid Build Coastguard Workerentry: 555*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* @us1, align 2, !tbaa !5 556*9880d681SAndroid Build Coastguard Worker %xor = xor i16 %0, 6062 557*9880d681SAndroid Build Coastguard Worker store i16 %xor, i16* @us, align 2, !tbaa !5 558*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent xorUs0 559*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 560*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 561*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 562*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US_ADDR:[0-9]+]], %got(us)($[[REG_GP]]) 563*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US1_ADDR:[0-9]+]], %got(us1)($[[REG_GP]]) 564*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lhu $[[US1:[0-9]+]], 0($[[US1_ADDR]]) 565*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[CONST_6062:[0-9]+]], $zero, 6062 566*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: xor $[[RES:[0-9]+]], $[[US1]], $[[CONST_6062]] 567*9880d681SAndroid Build Coastguard Worker; CHECK: sh $[[RES]], 0($[[US_ADDR]]) 568*9880d681SAndroid Build Coastguard Worker; CHECK: .end xorUs0 569*9880d681SAndroid Build Coastguard Worker 570*9880d681SAndroid Build Coastguard Worker ret void 571*9880d681SAndroid Build Coastguard Worker} 572*9880d681SAndroid Build Coastguard Worker 573*9880d681SAndroid Build Coastguard Worker; Function Attrs: noinline nounwind 574*9880d681SAndroid Build Coastguard Workerdefine void @xorUs1() #0 { 575*9880d681SAndroid Build Coastguard Workerentry: 576*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* @us1, align 2, !tbaa !5 577*9880d681SAndroid Build Coastguard Worker %xor = xor i16 %0, 60024 578*9880d681SAndroid Build Coastguard Worker store i16 %xor, i16* @us, align 2, !tbaa !5 579*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: .ent xorUs1 580*9880d681SAndroid Build Coastguard Worker; CHECK: lui $[[REG_GPa:[0-9]+]], %hi(_gp_disp) 581*9880d681SAndroid Build Coastguard Worker; CHECK: addiu $[[REG_GPb:[0-9]+]], $[[REG_GPa]], %lo(_gp_disp) 582*9880d681SAndroid Build Coastguard Worker; CHECK: addu $[[REG_GP:[0-9]+]], $[[REG_GPb]], $25 583*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US_ADDR:[0-9]+]], %got(us)($[[REG_GP]]) 584*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[US1_ADDR:[0-9]+]], %got(us1)($[[REG_GP]]) 585*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lhu $[[US1:[0-9]+]], 0($[[US1_ADDR]]) 586*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ori $[[CONST_60024:[0-9]+]], $zero, 60024 587*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: xor $[[RES:[0-9]+]], $[[US1]], $[[CONST_60024]] 588*9880d681SAndroid Build Coastguard Worker; CHECK: sh $[[RES]], 0($[[US_ADDR]]) 589*9880d681SAndroid Build Coastguard Worker; CHECK: .end xorUs1 590*9880d681SAndroid Build Coastguard Worker ret void 591*9880d681SAndroid Build Coastguard Worker} 592*9880d681SAndroid Build Coastguard Worker 593*9880d681SAndroid Build Coastguard Workerattributes #0 = { noinline nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } 594*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } 595*9880d681SAndroid Build Coastguard Workerattributes #2 = { nounwind } 596*9880d681SAndroid Build Coastguard Worker 597*9880d681SAndroid Build Coastguard Worker!llvm.module.flags = !{!0} 598*9880d681SAndroid Build Coastguard Worker!llvm.ident = !{!1} 599*9880d681SAndroid Build Coastguard Worker 600*9880d681SAndroid Build Coastguard Worker!0 = !{i32 1, !"PIC Level", i32 2} 601*9880d681SAndroid Build Coastguard Worker!1 = !{!"clang version 3.7.0 (trunk)"} 602*9880d681SAndroid Build Coastguard Worker!2 = !{!3, !3, i64 0} 603*9880d681SAndroid Build Coastguard Worker!3 = !{!"omnipotent char", !4, i64 0} 604*9880d681SAndroid Build Coastguard Worker!4 = !{!"Simple C/C++ TBAA"} 605*9880d681SAndroid Build Coastguard Worker!5 = !{!6, !6, i64 0} 606*9880d681SAndroid Build Coastguard Worker!6 = !{!"short", !3, i64 0} 607