1*9880d681SAndroid Build Coastguard Worker# RUN: llvm-mc -triple hexagon -filetype=obj -o - %s | llvm-objdump -d - | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker# Hexagon Programmer's Reference Manual 11.5 LD 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker# CHECK: 02 40 00 00 5*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 10 c5 c0 49 6*9880d681SAndroid Build Coastguard Workerr17:16 = memd(##168) 7*9880d681SAndroid Build Coastguard Worker# CHECK: d0 c0 d5 91 8*9880d681SAndroid Build Coastguard Workerr17:16 = memd(r21 + #48) 9*9880d681SAndroid Build Coastguard Worker# CHECK: b0 e0 d5 99 10*9880d681SAndroid Build Coastguard Workerr17:16 = memd(r21 ++ #40:circ(m1)) 11*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e2 d5 99 12*9880d681SAndroid Build Coastguard Workerr17:16 = memd(r21 ++ I:circ(m1)) 13*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 14*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 70 d7 d5 9b 15*9880d681SAndroid Build Coastguard Workerr17:16 = memd(r21 = ##31) 16*9880d681SAndroid Build Coastguard Worker# CHECK: b0 c0 d5 9b 17*9880d681SAndroid Build Coastguard Workerr17:16 = memd(r21++#40) 18*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e0 d5 9d 19*9880d681SAndroid Build Coastguard Workerr17:16 = memd(r21++m1) 20*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e0 d5 9f 21*9880d681SAndroid Build Coastguard Workerr17:16 = memd(r21 ++ m1:brev) 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker# Load doubleword conditionally 24*9880d681SAndroid Build Coastguard Worker# CHECK: f0 ff d5 30 25*9880d681SAndroid Build Coastguard Workerif (p3) r17:16 = memd(r21+r31<<#3) 26*9880d681SAndroid Build Coastguard Worker# CHECK: f0 ff d5 31 27*9880d681SAndroid Build Coastguard Workerif (!p3) r17:16 = memd(r21+r31<<#3) 28*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 29*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f0 ff d5 32 30*9880d681SAndroid Build Coastguard Worker{ p3 = r5 31*9880d681SAndroid Build Coastguard Worker if (p3.new) r17:16 = memd(r21+r31<<#3) } 32*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 33*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f0 ff d5 33 34*9880d681SAndroid Build Coastguard Worker{ p3 = r5 35*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17:16 = memd(r21+r31<<#3) } 36*9880d681SAndroid Build Coastguard Worker# CHECK: 70 d8 d5 41 37*9880d681SAndroid Build Coastguard Workerif (p3) r17:16 = memd(r21 + #24) 38*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 39*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 70 d8 d5 43 40*9880d681SAndroid Build Coastguard Worker{ p3 = r5 41*9880d681SAndroid Build Coastguard Worker if (p3.new) r17:16 = memd(r21 + #24) } 42*9880d681SAndroid Build Coastguard Worker# CHECK: 70 d8 d5 45 43*9880d681SAndroid Build Coastguard Workerif (!p3) r17:16 = memd(r21 + #24) 44*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 45*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 70 d8 d5 47 46*9880d681SAndroid Build Coastguard Worker{ p3 = r5 47*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17:16 = memd(r21 + #24) } 48*9880d681SAndroid Build Coastguard Worker# CHECK: b0 e6 d5 9b 49*9880d681SAndroid Build Coastguard Workerif (p3) r17:16 = memd(r21++#40) 50*9880d681SAndroid Build Coastguard Worker# CHECK: b0 ee d5 9b 51*9880d681SAndroid Build Coastguard Workerif (!p3) r17:16 = memd(r21++#40) 52*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 53*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b0 f6 d5 9b 54*9880d681SAndroid Build Coastguard Worker{ p3 = r5 55*9880d681SAndroid Build Coastguard Worker if (p3.new) r17:16 = memd(r21++#40) } 56*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 57*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b0 fe d5 9b 58*9880d681SAndroid Build Coastguard Worker{ p3 = r5 59*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17:16 = memd(r21++#40) } 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker# Load byte 62*9880d681SAndroid Build Coastguard Worker# CHECK: 91 ff 15 3a 63*9880d681SAndroid Build Coastguard Workerr17 = memb(r21 + r31<<#3) 64*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c2 00 49 65*9880d681SAndroid Build Coastguard Workerr17 = memb(#21) 66*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 67*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 c2 00 49 68*9880d681SAndroid Build Coastguard Workerr17 = memb(##21) 69*9880d681SAndroid Build Coastguard Worker# CHECK: f1 c3 15 91 70*9880d681SAndroid Build Coastguard Workerr17 = memb(r21 + #31) 71*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e0 15 99 72*9880d681SAndroid Build Coastguard Workerr17 = memb(r21 ++ #5:circ(m1)) 73*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e2 15 99 74*9880d681SAndroid Build Coastguard Workerr17 = memb(r21 ++ I:circ(m1)) 75*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 76*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 71 d7 15 9b 77*9880d681SAndroid Build Coastguard Workerr17 = memb(r21 = ##31) 78*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c0 15 9b 79*9880d681SAndroid Build Coastguard Workerr17 = memb(r21++#5) 80*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 15 9d 81*9880d681SAndroid Build Coastguard Workerr17 = memb(r21++m1) 82*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 15 9f 83*9880d681SAndroid Build Coastguard Workerr17 = memb(r21 ++ m1:brev) 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Worker# Load byte conditionally 86*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 15 30 87*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memb(r21+r31<<#3) 88*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 15 31 89*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memb(r21+r31<<#3) 90*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 91*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 15 32 92*9880d681SAndroid Build Coastguard Worker{ p3 = r5 93*9880d681SAndroid Build Coastguard Worker if (p3.new) r17 = memb(r21+r31<<#3) } 94*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 95*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 15 33 96*9880d681SAndroid Build Coastguard Worker{ p3 = r5 97*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17 = memb(r21+r31<<#3) } 98*9880d681SAndroid Build Coastguard Worker# CHECK: 91 dd 15 41 99*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memb(r21 + #44) 100*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 101*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 91 dd 15 43 102*9880d681SAndroid Build Coastguard Worker{ p3 = r5 103*9880d681SAndroid Build Coastguard Worker if (p3.new) r17 = memb(r21 + #44) } 104*9880d681SAndroid Build Coastguard Worker# CHECK: 91 dd 15 45 105*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memb(r21 + #44) 106*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 107*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 91 dd 15 47 108*9880d681SAndroid Build Coastguard Worker{ p3 = r5 109*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17 = memb(r21 + #44) } 110*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e6 15 9b 111*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memb(r21++#5) 112*9880d681SAndroid Build Coastguard Worker# CHECK: b1 ee 15 9b 113*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memb(r21++#5) 114*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 115*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 f6 15 9b 116*9880d681SAndroid Build Coastguard Worker{ p3 = r5 117*9880d681SAndroid Build Coastguard Worker if (p3.new) r17 = memb(r21++#5) } 118*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 119*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 fe 15 9b 120*9880d681SAndroid Build Coastguard Worker{ p3 = r5 121*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17 = memb(r21++#5) } 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Worker# Load byte into shifted vector 124*9880d681SAndroid Build Coastguard Worker# CHECK: f0 c3 95 90 125*9880d681SAndroid Build Coastguard Workerr17:16 = memb_fifo(r21 + #31) 126*9880d681SAndroid Build Coastguard Worker# CHECK: b0 e0 95 98 127*9880d681SAndroid Build Coastguard Workerr17:16 = memb_fifo(r21 ++ #5:circ(m1)) 128*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e2 95 98 129*9880d681SAndroid Build Coastguard Workerr17:16 = memb_fifo(r21 ++ I:circ(m1)) 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Worker# Load half into shifted vector 132*9880d681SAndroid Build Coastguard Worker# CHECK: f0 c3 55 90 133*9880d681SAndroid Build Coastguard Workerr17:16 = memh_fifo(r21 + #62) 134*9880d681SAndroid Build Coastguard Worker# CHECK: b0 e0 55 98 135*9880d681SAndroid Build Coastguard Workerr17:16 = memh_fifo(r21 ++ #10:circ(m1)) 136*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e2 55 98 137*9880d681SAndroid Build Coastguard Workerr17:16 = memh_fifo(r21 ++ I:circ(m1)) 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Worker# Load halfword 140*9880d681SAndroid Build Coastguard Worker# CHECK: 91 ff 55 3a 141*9880d681SAndroid Build Coastguard Workerr17 = memh(r21 + r31<<#3) 142*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c2 40 49 143*9880d681SAndroid Build Coastguard Workerr17 = memh(#42) 144*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 145*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 51 c5 40 49 146*9880d681SAndroid Build Coastguard Workerr17 = memh(##42) 147*9880d681SAndroid Build Coastguard Worker# CHECK: f1 c3 55 91 148*9880d681SAndroid Build Coastguard Workerr17 = memh(r21 + #62) 149*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e0 55 99 150*9880d681SAndroid Build Coastguard Workerr17 = memh(r21 ++ #10:circ(m1)) 151*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e2 55 99 152*9880d681SAndroid Build Coastguard Workerr17 = memh(r21 ++ I:circ(m1)) 153*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 154*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 71 d7 55 9b 155*9880d681SAndroid Build Coastguard Workerr17 = memh(r21 = ##31) 156*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c0 55 9b 157*9880d681SAndroid Build Coastguard Workerr17 = memh(r21++#10) 158*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 55 9d 159*9880d681SAndroid Build Coastguard Workerr17 = memh(r21++m1) 160*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 55 9f 161*9880d681SAndroid Build Coastguard Workerr17 = memh(r21 ++ m1:brev) 162*9880d681SAndroid Build Coastguard Worker 163*9880d681SAndroid Build Coastguard Worker# Load halfword conditionally 164*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 55 30 165*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memh(r21+r31<<#3) 166*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 55 31 167*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memh(r21+r31<<#3) 168*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 169*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 55 32 170*9880d681SAndroid Build Coastguard Worker{ p3 = r5 171*9880d681SAndroid Build Coastguard Worker if (p3.new) r17 = memh(r21+r31<<#3) } 172*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 173*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 55 33 174*9880d681SAndroid Build Coastguard Worker{ p3 = r5 175*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17 = memh(r21+r31<<#3) } 176*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e6 55 9b 177*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memh(r21++#10) 178*9880d681SAndroid Build Coastguard Worker# CHECK: b1 ee 55 9b 179*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memh(r21++#10) 180*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 181*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 f6 55 9b 182*9880d681SAndroid Build Coastguard Worker{ p3 = r5 183*9880d681SAndroid Build Coastguard Worker if (p3.new) r17 = memh(r21++#10) } 184*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 185*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 fe 55 9b 186*9880d681SAndroid Build Coastguard Worker{ p3 = r5 187*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17 = memh(r21++#10) } 188*9880d681SAndroid Build Coastguard Worker# CHECK: f1 db 55 41 189*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memh(r21 + #62) 190*9880d681SAndroid Build Coastguard Worker# CHECK: f1 db 55 45 191*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memh(r21 + #62) 192*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 193*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 db 55 43 194*9880d681SAndroid Build Coastguard Worker{ p3 = r5 195*9880d681SAndroid Build Coastguard Worker if (p3.new) r17 = memh(r21 + #62) } 196*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 197*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 db 55 47 198*9880d681SAndroid Build Coastguard Worker{ p3 = r5 199*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17 = memh(r21 + #62) } 200*9880d681SAndroid Build Coastguard Worker 201*9880d681SAndroid Build Coastguard Worker# Load unsigned byte 202*9880d681SAndroid Build Coastguard Worker# CHECK: 91 ff 35 3a 203*9880d681SAndroid Build Coastguard Workerr17 = memub(r21 + r31<<#3) 204*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c2 20 49 205*9880d681SAndroid Build Coastguard Workerr17 = memub(#21) 206*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 207*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 c2 20 49 208*9880d681SAndroid Build Coastguard Workerr17 = memub(##21) 209*9880d681SAndroid Build Coastguard Worker# CHECK: f1 c3 35 91 210*9880d681SAndroid Build Coastguard Workerr17 = memub(r21 + #31) 211*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e0 35 99 212*9880d681SAndroid Build Coastguard Workerr17 = memub(r21 ++ #5:circ(m1)) 213*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e2 35 99 214*9880d681SAndroid Build Coastguard Workerr17 = memub(r21 ++ I:circ(m1)) 215*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 216*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 71 d7 35 9b 217*9880d681SAndroid Build Coastguard Workerr17 = memub(r21 = ##31) 218*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c0 35 9b 219*9880d681SAndroid Build Coastguard Workerr17 = memub(r21++#5) 220*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 35 9d 221*9880d681SAndroid Build Coastguard Workerr17 = memub(r21++m1) 222*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 35 9f 223*9880d681SAndroid Build Coastguard Workerr17 = memub(r21 ++ m1:brev) 224*9880d681SAndroid Build Coastguard Worker 225*9880d681SAndroid Build Coastguard Worker# Load unsigned byte conditionally 226*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 35 30 227*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memub(r21+r31<<#3) 228*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 35 31 229*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memub(r21+r31<<#3) 230*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 231*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 35 32 232*9880d681SAndroid Build Coastguard Worker{ p3 = r5 233*9880d681SAndroid Build Coastguard Worker if (p3.new) r17 = memub(r21+r31<<#3) } 234*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 235*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 35 33 236*9880d681SAndroid Build Coastguard Worker{ p3 = r5 237*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17 = memub(r21+r31<<#3) } 238*9880d681SAndroid Build Coastguard Worker# CHECK: f1 db 35 41 239*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memub(r21 + #31) 240*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 241*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 db 35 43 242*9880d681SAndroid Build Coastguard Worker{ p3 = r5 243*9880d681SAndroid Build Coastguard Worker if (p3.new) r17 = memub(r21 + #31) } 244*9880d681SAndroid Build Coastguard Worker# CHECK: f1 db 35 45 245*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memub(r21 + #31) 246*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 247*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 db 35 47 248*9880d681SAndroid Build Coastguard Worker{ p3 = r5 249*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17 = memub(r21 + #31) } 250*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e6 35 9b 251*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memub(r21++#5) 252*9880d681SAndroid Build Coastguard Worker# CHECK: b1 ee 35 9b 253*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memub(r21++#5) 254*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 255*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 f6 35 9b 256*9880d681SAndroid Build Coastguard Worker{ p3 = r5 257*9880d681SAndroid Build Coastguard Worker if (p3.new) r17 = memub(r21++#5) } 258*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 259*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 fe 35 9b 260*9880d681SAndroid Build Coastguard Worker{ p3 = r5 261*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17 = memub(r21++#5) } 262*9880d681SAndroid Build Coastguard Worker 263*9880d681SAndroid Build Coastguard Worker# Load unsigned halfword 264*9880d681SAndroid Build Coastguard Worker# CHECK: 91 ff 75 3a 265*9880d681SAndroid Build Coastguard Workerr17 = memuh(r21 + r31<<#3) 266*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c2 60 49 267*9880d681SAndroid Build Coastguard Workerr17 = memuh(#42) 268*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 269*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 51 c5 60 49 270*9880d681SAndroid Build Coastguard Workerr17 = memuh(##42) 271*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c2 75 91 272*9880d681SAndroid Build Coastguard Workerr17 = memuh(r21 + #42) 273*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e0 75 99 274*9880d681SAndroid Build Coastguard Workerr17 = memuh(r21 ++ #10:circ(m1)) 275*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e2 75 99 276*9880d681SAndroid Build Coastguard Workerr17 = memuh(r21 ++ I:circ(m1)) 277*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 278*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 71 d7 75 9b 279*9880d681SAndroid Build Coastguard Workerr17 = memuh(r21 = ##31) 280*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c0 75 9b 281*9880d681SAndroid Build Coastguard Workerr17 = memuh(r21++#10) 282*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 75 9d 283*9880d681SAndroid Build Coastguard Workerr17 = memuh(r21++m1) 284*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 75 9f 285*9880d681SAndroid Build Coastguard Workerr17 = memuh(r21 ++ m1:brev) 286*9880d681SAndroid Build Coastguard Worker 287*9880d681SAndroid Build Coastguard Worker# Load unsigned halfword conditionally 288*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 75 30 289*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memuh(r21+r31<<#3) 290*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 75 31 291*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memuh(r21+r31<<#3) 292*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 293*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 75 32 294*9880d681SAndroid Build Coastguard Worker{ p3 = r5 295*9880d681SAndroid Build Coastguard Worker if (p3.new) r17 = memuh(r21+r31<<#3) } 296*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 297*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 75 33 298*9880d681SAndroid Build Coastguard Worker{ p3 = r5 299*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17 = memuh(r21+r31<<#3) } 300*9880d681SAndroid Build Coastguard Worker# CHECK: b1 da 75 41 301*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memuh(r21 + #42) 302*9880d681SAndroid Build Coastguard Worker# CHECK: b1 da 75 45 303*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memuh(r21 + #42) 304*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 305*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 da 75 43 306*9880d681SAndroid Build Coastguard Worker{ p3 = r5 307*9880d681SAndroid Build Coastguard Worker if (p3.new) r17 = memuh(r21 + #42) } 308*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 309*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 da 75 47 310*9880d681SAndroid Build Coastguard Worker{ p3 = r5 311*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17 = memuh(r21 + #42) } 312*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e6 75 9b 313*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memuh(r21++#10) 314*9880d681SAndroid Build Coastguard Worker# CHECK: b1 ee 75 9b 315*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memuh(r21++#10) 316*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 317*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 f6 75 9b 318*9880d681SAndroid Build Coastguard Worker{ p3 = r5 319*9880d681SAndroid Build Coastguard Worker if (p3.new) r17 = memuh(r21++#10) } 320*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 321*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 fe 75 9b 322*9880d681SAndroid Build Coastguard Worker{ p3 = r5 323*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17 = memuh(r21++#10) } 324*9880d681SAndroid Build Coastguard Worker 325*9880d681SAndroid Build Coastguard Worker# Load word 326*9880d681SAndroid Build Coastguard Worker# CHECK: 91 ff 95 3a 327*9880d681SAndroid Build Coastguard Workerr17 = memw(r21 + r31<<#3) 328*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c2 80 49 329*9880d681SAndroid Build Coastguard Workerr17 = memw(#84) 330*9880d681SAndroid Build Coastguard Worker# CHECK: 01 40 00 00 331*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 91 c2 80 49 332*9880d681SAndroid Build Coastguard Workerr17 = memw(##84) 333*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c2 95 91 334*9880d681SAndroid Build Coastguard Workerr17 = memw(r21 + #84) 335*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e0 95 99 336*9880d681SAndroid Build Coastguard Workerr17 = memw(r21 ++ #20:circ(m1)) 337*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e2 95 99 338*9880d681SAndroid Build Coastguard Workerr17 = memw(r21 ++ I:circ(m1)) 339*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 340*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 71 d7 95 9b 341*9880d681SAndroid Build Coastguard Workerr17 = memw(r21 = ##31) 342*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c0 95 9b 343*9880d681SAndroid Build Coastguard Workerr17 = memw(r21++#20) 344*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 95 9d 345*9880d681SAndroid Build Coastguard Workerr17 = memw(r21++m1) 346*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 95 9f 347*9880d681SAndroid Build Coastguard Workerr17 = memw(r21 ++ m1:brev) 348*9880d681SAndroid Build Coastguard Worker 349*9880d681SAndroid Build Coastguard Worker# Load word conditionally 350*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 95 30 351*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memw(r21+r31<<#3) 352*9880d681SAndroid Build Coastguard Worker# CHECK: f1 ff 95 31 353*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memw(r21+r31<<#3) 354*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 355*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 95 32 356*9880d681SAndroid Build Coastguard Worker{ p3 = r5 357*9880d681SAndroid Build Coastguard Worker if (p3.new) r17 = memw(r21+r31<<#3) } 358*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 359*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 ff 95 33 360*9880d681SAndroid Build Coastguard Worker{ p3 = r5 361*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17 = memw(r21+r31<<#3) } 362*9880d681SAndroid Build Coastguard Worker# CHECK: b1 da 95 41 363*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memw(r21 + #84) 364*9880d681SAndroid Build Coastguard Worker# CHECK: b1 da 95 45 365*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memw(r21 + #84) 366*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 367*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 da 95 43 368*9880d681SAndroid Build Coastguard Worker{ p3 = r5 369*9880d681SAndroid Build Coastguard Worker if (p3.new) r17 = memw(r21 + #84) } 370*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 371*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 da 95 47 372*9880d681SAndroid Build Coastguard Worker{ p3 = r5 373*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17 = memw(r21 + #84) } 374*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e6 95 9b 375*9880d681SAndroid Build Coastguard Workerif (p3) r17 = memw(r21++#20) 376*9880d681SAndroid Build Coastguard Worker# CHECK: b1 ee 95 9b 377*9880d681SAndroid Build Coastguard Workerif (!p3) r17 = memw(r21++#20) 378*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 379*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 f6 95 9b 380*9880d681SAndroid Build Coastguard Worker{ p3 = r5 381*9880d681SAndroid Build Coastguard Worker if (p3.new) r17 = memw(r21++#20) } 382*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 383*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: b1 fe 95 9b 384*9880d681SAndroid Build Coastguard Worker{ p3 = r5 385*9880d681SAndroid Build Coastguard Worker if (!p3.new) r17 = memw(r21++#20) } 386*9880d681SAndroid Build Coastguard Worker 387*9880d681SAndroid Build Coastguard Worker# Deallocate stack frame 388*9880d681SAndroid Build Coastguard Worker# CHECK: 1e c0 1e 90 389*9880d681SAndroid Build Coastguard Workerdeallocframe 390*9880d681SAndroid Build Coastguard Worker 391*9880d681SAndroid Build Coastguard Worker# Deallocate stack frame and return 392*9880d681SAndroid Build Coastguard Worker# CHECK: 1e c0 1e 96 393*9880d681SAndroid Build Coastguard Workerdealloc_return 394*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 395*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 1e cb 1e 96 396*9880d681SAndroid Build Coastguard Worker{ p3 = r5 397*9880d681SAndroid Build Coastguard Worker if (p3.new) dealloc_return:nt } 398*9880d681SAndroid Build Coastguard Worker# CHECK: 1e d3 1e 96 399*9880d681SAndroid Build Coastguard Workerif (p3) dealloc_return 400*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 401*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 1e db 1e 96 402*9880d681SAndroid Build Coastguard Worker{ p3 = r5 403*9880d681SAndroid Build Coastguard Worker if (p3.new) dealloc_return:t } 404*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 405*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 1e eb 1e 96 406*9880d681SAndroid Build Coastguard Worker{ p3 = r5 407*9880d681SAndroid Build Coastguard Worker if (!p3.new) dealloc_return:nt } 408*9880d681SAndroid Build Coastguard Worker# CHECK: 1e f3 1e 96 409*9880d681SAndroid Build Coastguard Workerif (!p3) dealloc_return 410*9880d681SAndroid Build Coastguard Worker# CHECK: 03 40 45 85 411*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 1e fb 1e 96 412*9880d681SAndroid Build Coastguard Worker{ p3 = r5 413*9880d681SAndroid Build Coastguard Worker if (!p3.new) dealloc_return:t } 414*9880d681SAndroid Build Coastguard Worker 415*9880d681SAndroid Build Coastguard Worker# Load and unpack bytes to halfwords 416*9880d681SAndroid Build Coastguard Worker# CHECK: f1 c3 35 90 417*9880d681SAndroid Build Coastguard Workerr17 = membh(r21 + #62) 418*9880d681SAndroid Build Coastguard Worker# CHECK: f1 c3 75 90 419*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21 + #62) 420*9880d681SAndroid Build Coastguard Worker# CHECK: f0 c3 b5 90 421*9880d681SAndroid Build Coastguard Workerr17:16 = memubh(r21 + #124) 422*9880d681SAndroid Build Coastguard Worker# CHECK: f0 c3 f5 90 423*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21 + #124) 424*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e0 35 98 425*9880d681SAndroid Build Coastguard Workerr17 = membh(r21 ++ #10:circ(m1)) 426*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e2 35 98 427*9880d681SAndroid Build Coastguard Workerr17 = membh(r21 ++ I:circ(m1)) 428*9880d681SAndroid Build Coastguard Worker# CHECK: b1 e0 75 98 429*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21 ++ #10:circ(m1)) 430*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e2 75 98 431*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21 ++ I:circ(m1)) 432*9880d681SAndroid Build Coastguard Worker# CHECK: b0 e0 f5 98 433*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21 ++ #20:circ(m1)) 434*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e2 f5 98 435*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21 ++ I:circ(m1)) 436*9880d681SAndroid Build Coastguard Worker# CHECK: b0 e0 b5 98 437*9880d681SAndroid Build Coastguard Workerr17:16 = memubh(r21 ++ #20:circ(m1)) 438*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e2 b5 98 439*9880d681SAndroid Build Coastguard Workerr17:16 = memubh(r21 ++ I:circ(m1)) 440*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 441*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 71 d7 35 9a 442*9880d681SAndroid Build Coastguard Workerr17 = membh(r21 = ##31) 443*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c0 35 9a 444*9880d681SAndroid Build Coastguard Workerr17 = membh(r21++#10) 445*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 446*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 71 d7 75 9a 447*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21 = ##31) 448*9880d681SAndroid Build Coastguard Worker# CHECK: b1 c0 75 9a 449*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21++#10) 450*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 451*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 70 d7 b5 9a 452*9880d681SAndroid Build Coastguard Workerr17:16 = memubh(r21 = ##31) 453*9880d681SAndroid Build Coastguard Worker# CHECK: b0 c0 b5 9a 454*9880d681SAndroid Build Coastguard Workerr17:16 = memubh(r21++#20) 455*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 456*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: 70 d7 f5 9a 457*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21 = ##31) 458*9880d681SAndroid Build Coastguard Worker# CHECK: b0 c0 f5 9a 459*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21++#20) 460*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 461*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 f7 35 9c 462*9880d681SAndroid Build Coastguard Workerr17 = membh(r21<<#3 + ##31) 463*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 35 9c 464*9880d681SAndroid Build Coastguard Workerr17 = membh(r21++m1) 465*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 466*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f1 f7 75 9c 467*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21<<#3 + ##31) 468*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 75 9c 469*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21++m1) 470*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 471*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f0 f7 f5 9c 472*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21<<#3 + ##31) 473*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e0 f5 9c 474*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21++m1) 475*9880d681SAndroid Build Coastguard Worker# CHECK: 00 40 00 00 476*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: f0 f7 b5 9c 477*9880d681SAndroid Build Coastguard Workerr17:16 = memubh(r21<<#3 + ##31) 478*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 35 9c 479*9880d681SAndroid Build Coastguard Workerr17 = membh(r21++m1) 480*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 75 9c 481*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21++m1) 482*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e0 f5 9c 483*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21++m1) 484*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e0 b5 9c 485*9880d681SAndroid Build Coastguard Workerr17:16 = memubh(r21++m1) 486*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 35 9e 487*9880d681SAndroid Build Coastguard Workerr17 = membh(r21 ++ m1:brev) 488*9880d681SAndroid Build Coastguard Worker# CHECK: 11 e0 75 9e 489*9880d681SAndroid Build Coastguard Workerr17 = memubh(r21 ++ m1:brev) 490*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e0 b5 9e 491*9880d681SAndroid Build Coastguard Workerr17:16 = memubh(r21 ++ m1:brev) 492*9880d681SAndroid Build Coastguard Worker# CHECK: 10 e0 f5 9e 493*9880d681SAndroid Build Coastguard Workerr17:16 = membh(r21 ++ m1:brev) 494