1# RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s 2# Hexagon Programmer's Reference Manual 11.8 ST 3 4# Store doubleword 50x9e 0xf5 0xd1 0x3b 6# CHECK: memd(r17 + r21<<#3) = r31:30 70x28 0xd4 0xc0 0x48 8# CHECK: memd(##320) = r21:20 90x15 0xd4 0xd1 0xa1 10# CHECK: memd(r17+#168) = r21:20 110x02 0xf4 0xd1 0xa9 12# CHECK: memd(r17 ++ I:circ(m1)) = r21:20 130x28 0xf4 0xd1 0xa9 14# CHECK: memd(r17 ++ #40:circ(m1)) = r21:20 150x28 0xd4 0xd1 0xab 16# CHECK: memd(r17++#40) = r21:20 170x00 0xf4 0xd1 0xad 18# CHECK: memd(r17++m1) = r21:20 190x00 0xf4 0xd1 0xaf 20# CHECK: memd(r17 ++ m1:brev) = r21:20 21 22# Store doubleword conditionally 230xfe 0xf5 0xd1 0x34 24# CHECK: if (p3) memd(r17+r21<<#3) = r31:30 250xfe 0xf5 0xd1 0x35 26# CHECK: if (!p3) memd(r17+r21<<#3) = r31:30 270x03 0x40 0x45 0x85 0xfe 0xf5 0xd1 0x36 28# CHECK: p3 = r5 29# CHECK-NEXT: if (p3.new) memd(r17+r21<<#3) = r31:30 300x03 0x40 0x45 0x85 0xfe 0xf5 0xd1 0x37 31# CHECK: p3 = r5 32# CHECK-NEXT: if (!p3.new) memd(r17+r21<<#3) = r31:30 330xab 0xde 0xd1 0x40 34# CHECK: if (p3) memd(r17+#168) = r31:30 350xab 0xde 0xd1 0x44 36# CHECK: if (!p3) memd(r17+#168) = r31:30 370x03 0x40 0x45 0x85 0xab 0xde 0xd1 0x42 38# CHECK: p3 = r5 39# CHECK-NEXT: if (p3.new) memd(r17+#168) = r31:30 400x03 0x40 0x45 0x85 0xab 0xde 0xd1 0x46 41# CHECK: p3 = r5 42# CHECK-NEXT: if (!p3.new) memd(r17+#168) = r31:30 430x2b 0xf4 0xd1 0xab 44# CHECK: if (p3) memd(r17++#40) = r21:20 450x2f 0xf4 0xd1 0xab 46# CHECK: if (!p3) memd(r17++#40) = r21:20 470x03 0x40 0x45 0x85 0xab 0xf4 0xd1 0xab 48# CHECK: p3 = r5 49# CHECK-NEXT: if (p3.new) memd(r17++#40) = r21:20 500x03 0x40 0x45 0x85 0xaf 0xf4 0xd1 0xab 51# CHECK: p3 = r5 52# CHECK-NEXT: if (!p3.new) memd(r17++#40) = r21:20 53 54# Store byte 550x9f 0xf5 0x11 0x3b 56# CHECK: memb(r17 + r21<<#3) = r31 570x9f 0xca 0x11 0x3c 58# CHECK: memb(r17+#21)=#31 590x15 0xd5 0x00 0x48 60# CHECK: memb(##21) = r21 610x15 0xd5 0x11 0xa1 62# CHECK: memb(r17+#21) = r21 630x02 0xf5 0x11 0xa9 64# CHECK: memb(r17 ++ I:circ(m1)) = r21 650x28 0xf5 0x11 0xa9 66# CHECK: memb(r17 ++ #5:circ(m1)) = r21 670x28 0xd5 0x11 0xab 68# CHECK: memb(r17++#5) = r21 690x00 0xf5 0x11 0xad 70# CHECK: memb(r17++m1) = r21 710x00 0xf5 0x11 0xaf 72# CHECK: memb(r17 ++ m1:brev) = r21 73 74# Store byte conditionally 750xff 0xf5 0x11 0x34 76# CHECK: if (p3) memb(r17+r21<<#3) = r31 770xff 0xf5 0x11 0x35 78# CHECK: if (!p3) memb(r17+r21<<#3) = r31 790x03 0x40 0x45 0x85 0xff 0xf5 0x11 0x36 80# CHECK: p3 = r5 81# CHECK-NEXT: if (p3.new) memb(r17+r21<<#3) = r31 820x03 0x40 0x45 0x85 0xff 0xf5 0x11 0x37 83# CHECK: p3 = r5 84# CHECK-NEXT: if (!p3.new) memb(r17+r21<<#3) = r31 850xff 0xca 0x11 0x38 86# CHECK: if (p3) memb(r17+#21)=#31 870xff 0xca 0x91 0x38 88# CHECK: if (!p3) memb(r17+#21)=#31 890x03 0x40 0x45 0x85 0xff 0xca 0x11 0x39 90# CHECK: p3 = r5 91# CHECK-NEXT: if (p3.new) memb(r17+#21)=#31 920x03 0x40 0x45 0x85 0xff 0xca 0x91 0x39 93# CHECK: p3 = r5 94# CHECK-NEXT: if (!p3.new) memb(r17+#21)=#31 950xab 0xdf 0x11 0x40 96# CHECK: if (p3) memb(r17+#21) = r31 970xab 0xdf 0x11 0x44 98# CHECK: if (!p3) memb(r17+#21) = r31 990x03 0x40 0x45 0x85 0xab 0xdf 0x11 0x42 100# CHECK: p3 = r5 101# CHECK-NEXT: if (p3.new) memb(r17+#21) = r31 1020x03 0x40 0x45 0x85 0xab 0xdf 0x11 0x46 103# CHECK: p3 = r5 104# CHECK-NEXT: if (!p3.new) memb(r17+#21) = r31 1050x2b 0xf5 0x11 0xab 106# CHECK: if (p3) memb(r17++#5) = r21 1070x2f 0xf5 0x11 0xab 108# CHECK: if (!p3) memb(r17++#5) = r21 1090x03 0x40 0x45 0x85 0xab 0xf5 0x11 0xab 110# CHECK: p3 = r5 111# CHECK-NEXT: if (p3.new) memb(r17++#5) = r21 1120x03 0x40 0x45 0x85 0xaf 0xf5 0x11 0xab 113# CHECK: p3 = r5 114# CHECK-NEXT: if (!p3.new) memb(r17++#5) = r21 115 116# Store halfword 1170x9f 0xf5 0x51 0x3b 118# CHECK: memh(r17 + r21<<#3) = r31 1190x9f 0xf5 0x71 0x3b 120# CHECK: memh(r17 + r21<<#3) = r31.h 1210x95 0xcf 0x31 0x3c 122# CHECK: memh(r17+#62)=#21 1230x2a 0xd5 0x40 0x48 124# CHECK: memh(##84) = r21 1250x2a 0xd5 0x60 0x48 126# CHECK: memh(##84) = r21.h 1270x15 0xdf 0x51 0xa1 128# CHECK: memh(r17+#42) = r31 1290x15 0xdf 0x71 0xa1 130# CHECK: memh(r17+#42) = r31.h 1310x02 0xf5 0x51 0xa9 132# CHECK: memh(r17 ++ I:circ(m1)) = r21 1330x28 0xf5 0x51 0xa9 134# CHECK: memh(r17 ++ #10:circ(m1)) = r21 1350x02 0xf5 0x71 0xa9 136# CHECK: memh(r17 ++ I:circ(m1)) = r21.h 1370x28 0xf5 0x71 0xa9 138# CHECK: memh(r17 ++ #10:circ(m1)) = r21.h 1390x28 0xd5 0x51 0xab 140# CHECK: memh(r17++#10) = r21 1410x28 0xd5 0x71 0xab 142# CHECK: memh(r17++#10) = r21.h 1430x00 0xf5 0x51 0xad 144# CHECK: memh(r17++m1) = r21 1450x00 0xf5 0x71 0xad 146# CHECK: memh(r17++m1) = r21.h 1470x00 0xf5 0x51 0xaf 148# CHECK: memh(r17 ++ m1:brev) = r21 1490x00 0xf5 0x71 0xaf 150# CHECK: memh(r17 ++ m1:brev) = r21.h 151 152# Store halfword conditionally 1530xff 0xf5 0x51 0x34 154# CHECK: if (p3) memh(r17+r21<<#3) = r31 1550xff 0xf5 0x71 0x34 156# CHECK: if (p3) memh(r17+r21<<#3) = r31.h 1570xff 0xf5 0x51 0x35 158# CHECK: if (!p3) memh(r17+r21<<#3) = r31 1590xff 0xf5 0x71 0x35 160# CHECK: if (!p3) memh(r17+r21<<#3) = r31.h 1610x03 0x40 0x45 0x85 0xff 0xf5 0x51 0x36 162# CHECK: p3 = r5 163# CHECK-NEXT: if (p3.new) memh(r17+r21<<#3) = r31 1640x03 0x40 0x45 0x85 0xff 0xf5 0x71 0x36 165# CHECK: p3 = r5 166# CHECK-NEXT: if (p3.new) memh(r17+r21<<#3) = r31.h 1670x03 0x40 0x45 0x85 0xff 0xf5 0x51 0x37 168# CHECK: p3 = r5 169# CHECK-NEXT: if (!p3.new) memh(r17+r21<<#3) = r31 1700x03 0x40 0x45 0x85 0xff 0xf5 0x71 0x37 171# CHECK: p3 = r5 172# CHECK-NEXT: if (!p3.new) memh(r17+r21<<#3) = r31.h 1730xf5 0xcf 0x31 0x38 174# CHECK: if (p3) memh(r17+#62)=#21 1750xf5 0xcf 0xb1 0x38 176# CHECK: if (!p3) memh(r17+#62)=#21 1770x03 0x40 0x45 0x85 0xf5 0xcf 0x31 0x39 178# CHECK: p3 = r5 179# CHECK-NEXT: if (p3.new) memh(r17+#62)=#21 1800x03 0x40 0x45 0x85 0xf5 0xcf 0xb1 0x39 181# CHECK: p3 = r5 182# CHECK-NEXT: if (!p3.new) memh(r17+#62)=#21 1830xfb 0xd5 0x51 0x40 184# CHECK: if (p3) memh(r17+#62) = r21 1850xfb 0xd5 0x71 0x40 186# CHECK: if (p3) memh(r17+#62) = r21.h 1870xfb 0xd5 0x51 0x44 188# CHECK: if (!p3) memh(r17+#62) = r21 1890xfb 0xd5 0x71 0x44 190# CHECK: if (!p3) memh(r17+#62) = r21.h 1910x03 0x40 0x45 0x85 0xfb 0xd5 0x51 0x42 192# CHECK: p3 = r5 193# CHECK-NEXT: if (p3.new) memh(r17+#62) = r21 1940x03 0x40 0x45 0x85 0xfb 0xd5 0x71 0x42 195# CHECK: p3 = r5 196# CHECK-NEXT: if (p3.new) memh(r17+#62) = r21.h 1970x03 0x40 0x45 0x85 0xfb 0xd5 0x51 0x46 198# CHECK: p3 = r5 199# CHECK-NEXT: if (!p3.new) memh(r17+#62) = r21 2000x03 0x40 0x45 0x85 0xfb 0xd5 0x71 0x46 201# CHECK: p3 = r5 202# CHECK-NEXT: if (!p3.new) memh(r17+#62) = r21.h 2030x2b 0xf5 0x51 0xab 204# CHECK: if (p3) memh(r17++#10) = r21 2050x2f 0xf5 0x51 0xab 206# CHECK: if (!p3) memh(r17++#10) = r21 2070x03 0x40 0x45 0x85 0xab 0xf5 0x51 0xab 208# CHECK: p3 = r5 209# CHECK-NEXT: if (p3.new) memh(r17++#10) = r21 2100x03 0x40 0x45 0x85 0xaf 0xf5 0x51 0xab 211# CHECK: p3 = r5 212# CHECK-NEXT: if (!p3.new) memh(r17++#10) = r21 2130x2b 0xf5 0x71 0xab 214# CHECK: if (p3) memh(r17++#10) = r21.h 2150x2f 0xf5 0x71 0xab 216# CHECK: if (!p3) memh(r17++#10) = r21.h 2170x03 0x40 0x45 0x85 0xab 0xf5 0x71 0xab 218# CHECK: p3 = r5 219# CHECK-NEXT: if (p3.new) memh(r17++#10) = r21.h 2200x03 0x40 0x45 0x85 0xaf 0xf5 0x71 0xab 221# CHECK: p3 = r5 222# CHECK-NEXT: if (!p3.new) memh(r17++#10) = r21.h 223 224# Store word 2250x9f 0xf5 0x91 0x3b 226# CHECK: memw(r17 + r21<<#3) = r31 2270x9f 0xca 0x51 0x3c 228# CHECK: memw(r17+#84)=#31 2290x15 0xdf 0x91 0xa1 230# CHECK: memw(r17+#84) = r31 2310x14 0xd5 0x80 0x48 232# CHECK: memw(##80) = r21 2330x02 0xf5 0x91 0xa9 234# CHECK: memw(r17 ++ I:circ(m1)) = r21 2350x28 0xf5 0x91 0xa9 236# CHECK: memw(r17 ++ #20:circ(m1)) = r21 2370x28 0xd5 0x91 0xab 238# CHECK: memw(r17++#20) = r21 2390x00 0xf5 0x91 0xad 240# CHECK: memw(r17++m1) = r21 2410x00 0xf5 0x91 0xaf 242# CHECK: memw(r17 ++ m1:brev) = r21 243 244# Store word conditionally 2450xff 0xf5 0x91 0x34 246# CHECK: if (p3) memw(r17+r21<<#3) = r31 2470xff 0xf5 0x91 0x35 248# CHECK: if (!p3) memw(r17+r21<<#3) = r31 2490x03 0x40 0x45 0x85 0xff 0xf5 0x91 0x36 250# CHECK: p3 = r5 251# CHECK-NEXT: if (p3.new) memw(r17+r21<<#3) = r31 2520x03 0x40 0x45 0x85 0xff 0xf5 0x91 0x37 253# CHECK: p3 = r5 254# CHECK-NEXT: if (!p3.new) memw(r17+r21<<#3) = r31 2550xff 0xca 0x51 0x38 256# CHECK: if (p3) memw(r17+#84)=#31 2570xff 0xca 0xd1 0x38 258# CHECK: if (!p3) memw(r17+#84)=#31 2590x03 0x40 0x45 0x85 0xff 0xca 0x51 0x39 260# CHECK: p3 = r5 261# CHECK-NEXT: if (p3.new) memw(r17+#84)=#31 2620x03 0x40 0x45 0x85 0xff 0xca 0xd1 0x39 263# CHECK: p3 = r5 264# CHECK-NEXT: if (!p3.new) memw(r17+#84)=#31 2650xab 0xdf 0x91 0x40 266# CHECK: if (p3) memw(r17+#84) = r31 2670xab 0xdf 0x91 0x44 268# CHECK: if (!p3) memw(r17+#84) = r31 2690x03 0x40 0x45 0x85 0xab 0xdf 0x91 0x42 270# CHECK: p3 = r5 271# CHECK-NEXT: if (p3.new) memw(r17+#84) = r31 2720x03 0x40 0x45 0x85 0xab 0xdf 0x91 0x46 273# CHECK: p3 = r5 274# CHECK-NEXT: if (!p3.new) memw(r17+#84) = r31 2750x2b 0xf5 0x91 0xab 276# CHECK: if (p3) memw(r17++#20) = r21 2770x2f 0xf5 0x91 0xab 278# CHECK: if (!p3) memw(r17++#20) = r21 2790x03 0x40 0x45 0x85 0xaf 0xf5 0x91 0xab 280# CHECK: p3 = r5 281# CHECK-NEXT: if (!p3.new) memw(r17++#20) = r21 2820x03 0x40 0x45 0x85 0xab 0xf5 0x91 0xab 283# CHECK: p3 = r5 284# CHECK-NEXT: if (p3.new) memw(r17++#20) = r21 285 286# Allocate stack frame 2870x1f 0xc0 0x9d 0xa0 288# CHECK: allocframe(#248)