439 lines · plain
1# RUN: llvm-mc -triple hexagon -disassemble < %s | FileCheck %s2# Hexagon Programmer's Reference Manual 11.5 LD3 4# Load doubleword50x90 0xff 0xd5 0x3a6# CHECK: r17:16 = memd(r21+r31<<#3)70xb0 0xc2 0xc0 0x498# CHECK: r17:16 = memd(gp+#168)90x02 0x40 0x00 0x00 0x10 0xc5 0xc0 0x4910# CHECK: r17:16 = memd(##168)110xd0 0xc0 0xd5 0x9112# CHECK: r17:16 = memd(r21+#48)130xb0 0xe0 0xd5 0x9914# CHECK: r17:16 = memd(r21++#40:circ(m1))150x10 0xe2 0xd5 0x9916# CHECK: r17:16 = memd(r21++I:circ(m1))170x00 0x40 0x00 0x00 0x70 0xd7 0xd5 0x9b18# CHECK: r17:16 = memd(r21=##31)190xb0 0xc0 0xd5 0x9b20# CHECK: r17:16 = memd(r21++#40)210x10 0xe0 0xd5 0x9d22# CHECK: r17:16 = memd(r21++m1)230x10 0xe0 0xd5 0x9f24# CHECK: r17:16 = memd(r21++m1:brev)25 26# Load doubleword conditionally270xf0 0xff 0xd5 0x3028# CHECK: if (p3) r17:16 = memd(r21+r31<<#3)290xf0 0xff 0xd5 0x3130# CHECK: if (!p3) r17:16 = memd(r21+r31<<#3)310x03 0x40 0x45 0x85 0xf0 0xff 0xd5 0x3232# CHECK: p3 = r533# CHECK-NEXT: if (p3.new) r17:16 = memd(r21+r31<<#3)340x03 0x40 0x45 0x85 0xf0 0xff 0xd5 0x3335# CHECK: p3 = r536# CHECK-NEXT: if (!p3.new) r17:16 = memd(r21+r31<<#3)370x70 0xd8 0xd5 0x4138# CHECK: if (p3) r17:16 = memd(r21+#24)390x03 0x40 0x45 0x85 0x70 0xd8 0xd5 0x4340# CHECK: p3 = r541# CHECK-NEXT: if (p3.new) r17:16 = memd(r21+#24)420x70 0xd8 0xd5 0x4543# CHECK: if (!p3) r17:16 = memd(r21+#24)440x03 0x40 0x45 0x85 0x70 0xd8 0xd5 0x4745# CHECK: p3 = r546# CHECK-NEXT: if (!p3.new) r17:16 = memd(r21+#24)470xb0 0xe6 0xd5 0x9b48# CHECK: if (p3) r17:16 = memd(r21++#40)490xb0 0xee 0xd5 0x9b50# CHECK: if (!p3) r17:16 = memd(r21++#40)510x03 0x40 0x45 0x85 0xb0 0xf6 0xd5 0x9b52# CHECK: p3 = r553# CHECK-NEXT: if (p3.new) r17:16 = memd(r21++#40)540x03 0x40 0x45 0x85 0xb0 0xfe 0xd5 0x9b55# CHECK: p3 = r556# CHECK-NEXT: if (!p3.new) r17:16 = memd(r21++#40)57 58# Load byte590x91 0xff 0x15 0x3a60# CHECK: r17 = memb(r21+r31<<#3)610xb1 0xc2 0x00 0x4962# CHECK: r17 = memb(gp+#21)630x00 0x40 0x00 0x00 0xb1 0xc2 0x00 0x4964# CHECK: r17 = memb(##21)650xf1 0xc3 0x15 0x9166# CHECK: r17 = memb(r21+#31)670xb1 0xe0 0x15 0x9968# CHECK: r17 = memb(r21++#5:circ(m1))690x11 0xe2 0x15 0x9970# CHECK: r17 = memb(r21++I:circ(m1))710x00 0x40 0x00 0x00 0x71 0xd7 0x15 0x9b72# CHECK: r17 = memb(r21=##31)730xb1 0xc0 0x15 0x9b74# CHECK: r17 = memb(r21++#5)750x11 0xe0 0x15 0x9d76# CHECK: r17 = memb(r21++m1)770x11 0xe0 0x15 0x9f78# CHECK: r17 = memb(r21++m1:brev)79 80# Load byte conditionally810xf1 0xff 0x15 0x3082# CHECK: if (p3) r17 = memb(r21+r31<<#3)830xf1 0xff 0x15 0x3184# CHECK: if (!p3) r17 = memb(r21+r31<<#3)850x03 0x40 0x45 0x85 0xf1 0xff 0x15 0x3286# CHECK: p3 = r587# CHECK-NEXT: if (p3.new) r17 = memb(r21+r31<<#3)880x03 0x40 0x45 0x85 0xf1 0xff 0x15 0x3389# CHECK: p3 = r590# CHECK-NEXT: if (!p3.new) r17 = memb(r21+r31<<#3)910x91 0xdd 0x15 0x4192# CHECK: if (p3) r17 = memb(r21+#44)930x03 0x40 0x45 0x85 0x91 0xdd 0x15 0x4394# CHECK: p3 = r595# CHECK-NEXT: if (p3.new) r17 = memb(r21+#44)960x91 0xdd 0x15 0x4597# CHECK: if (!p3) r17 = memb(r21+#44)980x03 0x40 0x45 0x85 0x91 0xdd 0x15 0x4799# CHECK: p3 = r5100# CHECK-NEXT: if (!p3.new) r17 = memb(r21+#44)1010xb1 0xe6 0x15 0x9b102# CHECK: if (p3) r17 = memb(r21++#5)1030xb1 0xee 0x15 0x9b104# CHECK: if (!p3) r17 = memb(r21++#5)1050x03 0x40 0x45 0x85 0xb1 0xf6 0x15 0x9b106# CHECK: p3 = r5107# CHECK-NEXT: if (p3.new) r17 = memb(r21++#5)1080x03 0x40 0x45 0x85 0xb1 0xfe 0x15 0x9b109# CHECK: p3 = r5110# CHECK-NEXT: if (!p3.new) r17 = memb(r21++#5)111 112# Load byte into shifted vector1130xf0 0xc3 0x95 0x90114# CHECK: r17:16 = memb_fifo(r21+#31)1150xb0 0xe0 0x95 0x98116# CHECK: r17:16 = memb_fifo(r21++#5:circ(m1))1170x10 0xe2 0x95 0x98118# CHECK: r17:16 = memb_fifo(r21++I:circ(m1))119 120# Load half into shifted vector1210xf0 0xc3 0x55 0x90122# CHECK: r17:16 = memh_fifo(r21+#62)1230xb0 0xe0 0x55 0x98124# CHECK: r17:16 = memh_fifo(r21++#10:circ(m1))1250x10 0xe2 0x55 0x98126# CHECK: r17:16 = memh_fifo(r21++I:circ(m1))127 128# Load halfword1290x91 0xff 0x55 0x3a130# CHECK: r17 = memh(r21+r31<<#3)1310xb1 0xc2 0x40 0x49132# CHECK: r17 = memh(gp+#42)1330x00 0x40 0x00 0x00 0x51 0xc5 0x40 0x49134# CHECK: r17 = memh(##42)1350xf1 0xc3 0x55 0x91136# CHECK: r17 = memh(r21+#62)1370xb1 0xe0 0x55 0x99138# CHECK: r17 = memh(r21++#10:circ(m1))1390x11 0xe2 0x55 0x99140# CHECK: r17 = memh(r21++I:circ(m1))1410x00 0x40 0x00 0x00 0x71 0xd7 0x55 0x9b142# CHECK: r17 = memh(r21=##31)1430xb1 0xc0 0x55 0x9b144# CHECK: r17 = memh(r21++#10)1450x11 0xe0 0x55 0x9d146# CHECK: r17 = memh(r21++m1)1470x11 0xe0 0x55 0x9f148# CHECK: r17 = memh(r21++m1:brev)149 150# Load halfword conditionally1510xf1 0xff 0x55 0x30152# CHECK: if (p3) r17 = memh(r21+r31<<#3)1530xf1 0xff 0x55 0x31154# CHECK: if (!p3) r17 = memh(r21+r31<<#3)1550x03 0x40 0x45 0x85 0xf1 0xff 0x55 0x32156# CHECK: p3 = r5157# CHECK-NEXT: if (p3.new) r17 = memh(r21+r31<<#3)1580x03 0x40 0x45 0x85 0xf1 0xff 0x55 0x33159# CHECK: p3 = r5160# CHECK-NEXT: if (!p3.new) r17 = memh(r21+r31<<#3)1610xb1 0xe6 0x55 0x9b162# CHECK: if (p3) r17 = memh(r21++#10)1630xb1 0xee 0x55 0x9b164# CHECK: if (!p3) r17 = memh(r21++#10)1650x03 0x40 0x45 0x85 0xb1 0xf6 0x55 0x9b166# CHECK: p3 = r5167# CHECK-NEXT: if (p3.new) r17 = memh(r21++#10)1680x03 0x40 0x45 0x85 0xb1 0xfe 0x55 0x9b169# CHECK: p3 = r5170# CHECK-NEXT: if (!p3.new) r17 = memh(r21++#10)1710xf1 0xdb 0x55 0x41172# CHECK: if (p3) r17 = memh(r21+#62)1730xf1 0xdb 0x55 0x45174# CHECK: if (!p3) r17 = memh(r21+#62)1750x03 0x40 0x45 0x85 0xf1 0xdb 0x55 0x43176# CHECK: p3 = r5177# CHECK-NEXT: if (p3.new) r17 = memh(r21+#62)1780x03 0x40 0x45 0x85 0xf1 0xdb 0x55 0x47179# CHECK: p3 = r5180# CHECK-NEXT: if (!p3.new) r17 = memh(r21+#62)181 182# Load unsigned byte1830x91 0xff 0x35 0x3a184# CHECK: r17 = memub(r21+r31<<#3)1850xb1 0xc2 0x20 0x49186# CHECK: r17 = memub(gp+#21)1870x00 0x40 0x00 0x00 0xb1 0xc2 0x20 0x49188# CHECK: r17 = memub(##21)1890xf1 0xc3 0x35 0x91190# CHECK: r17 = memub(r21+#31)1910xb1 0xe0 0x35 0x99192# CHECK: r17 = memub(r21++#5:circ(m1))1930x11 0xe2 0x35 0x99194# CHECK: r17 = memub(r21++I:circ(m1))1950x00 0x40 0x00 0x00 0x71 0xd7 0x35 0x9b196# CHECK: r17 = memub(r21=##31)1970xb1 0xc0 0x35 0x9b198# CHECK: r17 = memub(r21++#5)1990x11 0xe0 0x35 0x9d200# CHECK: r17 = memub(r21++m1)2010x11 0xe0 0x35 0x9f202# CHECK: r17 = memub(r21++m1:brev)203 204# Load unsigned byte conditionally2050xf1 0xff 0x35 0x30206# CHECK: if (p3) r17 = memub(r21+r31<<#3)2070xf1 0xff 0x35 0x31208# CHECK: if (!p3) r17 = memub(r21+r31<<#3)2090x03 0x40 0x45 0x85 0xf1 0xff 0x35 0x32210# CHECK: p3 = r5211# CHECK-NEXT: if (p3.new) r17 = memub(r21+r31<<#3)2120x03 0x40 0x45 0x85 0xf1 0xff 0x35 0x33213# CHECK: p3 = r5214# CHECK-NEXT: if (!p3.new) r17 = memub(r21+r31<<#3)2150xf1 0xdb 0x35 0x41216# CHECK: if (p3) r17 = memub(r21+#31)2170x03 0x40 0x45 0x85 0xf1 0xdb 0x35 0x43218# CHECK: p3 = r5219# CHECK-NEXT: if (p3.new) r17 = memub(r21+#31)2200xf1 0xdb 0x35 0x45221# CHECK: if (!p3) r17 = memub(r21+#31)2220x03 0x40 0x45 0x85 0xf1 0xdb 0x35 0x47223# CHECK: p3 = r5224# CHECK-NEXT: if (!p3.new) r17 = memub(r21+#31)2250xb1 0xe6 0x35 0x9b226# CHECK: if (p3) r17 = memub(r21++#5)2270xb1 0xee 0x35 0x9b228# CHECK: if (!p3) r17 = memub(r21++#5)2290x03 0x40 0x45 0x85 0xb1 0xf6 0x35 0x9b230# CHECK: p3 = r5231# CHECK-NEXT: if (p3.new) r17 = memub(r21++#5)2320x03 0x40 0x45 0x85 0xb1 0xfe 0x35 0x9b233# CHECK: p3 = r5234# CHECK-NEXT: if (!p3.new) r17 = memub(r21++#5)235 236# Load unsigned halfword2370x91 0xff 0x75 0x3a238# CHECK: r17 = memuh(r21+r31<<#3)2390xb1 0xc2 0x60 0x49240# CHECK: r17 = memuh(gp+#42)2410x00 0x40 0x00 0x00 0x51 0xc5 0x60 0x49242# CHECK: r17 = memuh(##42)2430xb1 0xc2 0x75 0x91244# CHECK: r17 = memuh(r21+#42)2450xb1 0xe0 0x75 0x99246# CHECK: r17 = memuh(r21++#10:circ(m1))2470x11 0xe2 0x75 0x99248# CHECK: r17 = memuh(r21++I:circ(m1))2490x00 0x40 0x00 0x00 0x71 0xd7 0x75 0x9b250# CHECK: r17 = memuh(r21=##31)2510xb1 0xc0 0x75 0x9b252# CHECK: r17 = memuh(r21++#10)2530x11 0xe0 0x75 0x9d254# CHECK: r17 = memuh(r21++m1)2550x11 0xe0 0x75 0x9f256# CHECK: r17 = memuh(r21++m1:brev)257 258# Load unsigned halfword conditionally2590xf1 0xff 0x75 0x30260# CHECK: if (p3) r17 = memuh(r21+r31<<#3)2610xf1 0xff 0x75 0x31262# CHECK: if (!p3) r17 = memuh(r21+r31<<#3)2630x03 0x40 0x45 0x85 0xf1 0xff 0x75 0x32264# CHECK: p3 = r5265# CHECK-NEXT: if (p3.new) r17 = memuh(r21+r31<<#3)2660x03 0x40 0x45 0x85 0xf1 0xff 0x75 0x33267# CHECK: p3 = r5268# CHECK-NEXT: if (!p3.new) r17 = memuh(r21+r31<<#3)2690xb1 0xda 0x75 0x41270# CHECK: if (p3) r17 = memuh(r21+#42)2710xb1 0xda 0x75 0x45272# CHECK: if (!p3) r17 = memuh(r21+#42)2730x03 0x40 0x45 0x85 0xb1 0xda 0x75 0x43274# CHECK: p3 = r5275# CHECK-NEXT: if (p3.new) r17 = memuh(r21+#42)2760x03 0x40 0x45 0x85 0xb1 0xda 0x75 0x47277# CHECK: p3 = r5278# CHECK-NEXT: if (!p3.new) r17 = memuh(r21+#42)2790xb1 0xe6 0x75 0x9b280# CHECK: if (p3) r17 = memuh(r21++#10)2810xb1 0xee 0x75 0x9b282# CHECK: if (!p3) r17 = memuh(r21++#10)2830x03 0x40 0x45 0x85 0xb1 0xf6 0x75 0x9b284# CHECK: p3 = r5285# CHECK-NEXT: if (p3.new) r17 = memuh(r21++#10)2860x03 0x40 0x45 0x85 0xb1 0xfe 0x75 0x9b287# CHECK: p3 = r5288# CHECK-NEXT: if (!p3.new) r17 = memuh(r21++#10)289 290# Load word2910x91 0xff 0x95 0x3a292# CHECK: r17 = memw(r21+r31<<#3)2930xb1 0xc2 0x80 0x49294# CHECK: r17 = memw(gp+#84)2950x01 0x40 0x00 0x00 0x91 0xc2 0x80 0x49296# CHECK: r17 = memw(##84)2970xb1 0xc2 0x95 0x91298# CHECK: r17 = memw(r21+#84)2990xb1 0xe0 0x95 0x99300# CHECK: r17 = memw(r21++#20:circ(m1))3010x11 0xe2 0x95 0x99302# CHECK: r17 = memw(r21++I:circ(m1))3030x00 0x40 0x00 0x00 0x71 0xd7 0x95 0x9b304# CHECK: r17 = memw(r21=##31)3050xb1 0xc0 0x95 0x9b306# CHECK: r17 = memw(r21++#20)3070x11 0xe0 0x95 0x9d308# CHECK: r17 = memw(r21++m1)3090x11 0xe0 0x95 0x9f310# CHECK: r17 = memw(r21++m1:brev)311 312# Load word conditionally3130xf1 0xff 0x95 0x30314# CHECK: if (p3) r17 = memw(r21+r31<<#3)3150xf1 0xff 0x95 0x31316# CHECK: if (!p3) r17 = memw(r21+r31<<#3)3170x03 0x40 0x45 0x85 0xf1 0xff 0x95 0x32318# CHECK: p3 = r5319# CHECK-NEXT: if (p3.new) r17 = memw(r21+r31<<#3)3200x03 0x40 0x45 0x85 0xf1 0xff 0x95 0x33321# CHECK: p3 = r5322# CHECK-NEXT: if (!p3.new) r17 = memw(r21+r31<<#3)3230xb1 0xda 0x95 0x41324# CHECK: if (p3) r17 = memw(r21+#84)3250xb1 0xda 0x95 0x45326# CHECK: if (!p3) r17 = memw(r21+#84)3270x03 0x40 0x45 0x85 0xb1 0xda 0x95 0x43328# CHECK: p3 = r5329# CHECK-NEXT: if (p3.new) r17 = memw(r21+#84)3300x03 0x40 0x45 0x85 0xb1 0xda 0x95 0x47331# CHECK: p3 = r5332# CHECK-NEXT: if (!p3.new) r17 = memw(r21+#84)3330xb1 0xe6 0x95 0x9b334# CHECK: if (p3) r17 = memw(r21++#20)3350xb1 0xee 0x95 0x9b336# CHECK: if (!p3) r17 = memw(r21++#20)3370x03 0x40 0x45 0x85 0xb1 0xf6 0x95 0x9b338# CHECK: p3 = r5339# CHECK-NEXT: if (p3.new) r17 = memw(r21++#20)3400x03 0x40 0x45 0x85 0xb1 0xfe 0x95 0x9b341# CHECK: p3 = r5342# CHECK-NEXT: if (!p3.new) r17 = memw(r21++#20)343 344# Deallocate stack frame3450x1e 0xc0 0x1e 0x90346# CHECK: deallocframe347 348# Deallocate stack frame and return3490x1e 0xc0 0x1e 0x96350# CHECK: dealloc_return3510x03 0x40 0x45 0x85 0x1e 0xcb 0x1e 0x96352# CHECK: p3 = r5353# CHECK-NEXT: if (p3.new) dealloc_return:nt3540x1e 0xd3 0x1e 0x96355# CHECK: if (p3) dealloc_return3560x03 0x40 0x45 0x85 0x1e 0xdb 0x1e 0x96357# CHECK: p3 = r5358# CHECK-NEXT: if (p3.new) dealloc_return:t3590x03 0x40 0x45 0x85 0x1e 0xeb 0x1e 0x96360# CHECK: p3 = r5361# CHECK-NEXT: if (!p3.new) dealloc_return:nt3620x1e 0xf3 0x1e 0x96363# CHECK: if (!p3) dealloc_return3640x03 0x40 0x45 0x85 0x1e 0xfb 0x1e 0x96365# CHECK: p3 = r5366# CHECK-NEXT: if (!p3.new) dealloc_return:t367 368# Load and unpack bytes to halfwords3690xf1 0xc3 0x35 0x90370# CHECK: r17 = membh(r21+#62)3710xf1 0xc3 0x75 0x90372# CHECK: r17 = memubh(r21+#62)3730xf0 0xc3 0xb5 0x90374# CHECK: r17:16 = memubh(r21+#124)3750xf0 0xc3 0xf5 0x90376# CHECK: r17:16 = membh(r21+#124)3770xb1 0xe0 0x35 0x98378# CHECK: r17 = membh(r21++#10:circ(m1))3790x11 0xe2 0x35 0x98380# CHECK: r17 = membh(r21++I:circ(m1))3810xb1 0xe0 0x75 0x98382# CHECK: r17 = memubh(r21++#10:circ(m1))3830x11 0xe2 0x75 0x98384# CHECK: r17 = memubh(r21++I:circ(m1))3850xb0 0xe0 0xf5 0x98386# CHECK: r17:16 = membh(r21++#20:circ(m1))3870x10 0xe2 0xf5 0x98388# CHECK: r17:16 = membh(r21++I:circ(m1))3890xb0 0xe0 0xb5 0x98390# CHECK: r17:16 = memubh(r21++#20:circ(m1))3910x10 0xe2 0xb5 0x98392# CHECK: r17:16 = memubh(r21++I:circ(m1))3930x00 0x40 0x00 0x00 0x71 0xd7 0x35 0x9a394# CHECK: r17 = membh(r21=##31)3950xb1 0xc0 0x35 0x9a396# CHECK: r17 = membh(r21++#10)3970x00 0x40 0x00 0x00 0x71 0xd7 0x75 0x9a398# CHECK: r17 = memubh(r21=##31)3990xb1 0xc0 0x75 0x9a400# CHECK: r17 = memubh(r21++#10)4010x00 0x40 0x00 0x00 0x70 0xd7 0xb5 0x9a402# CHECK: r17:16 = memubh(r21=##31)4030xb0 0xc0 0xb5 0x9a404# CHECK: r17:16 = memubh(r21++#20)4050x00 0x40 0x00 0x00 0x70 0xd7 0xf5 0x9a406# CHECK: r17:16 = membh(r21=##31)4070xb0 0xc0 0xf5 0x9a408# CHECK: r17:16 = membh(r21++#20)4090x00 0x40 0x00 0x00 0xf1 0xf7 0x35 0x9c410# CHECK: r17 = membh(r21<<#3+##31)4110x11 0xe0 0x35 0x9c412# CHECK: r17 = membh(r21++m1)4130x00 0x40 0x00 0x00 0xf1 0xf7 0x75 0x9c414# CHECK: r17 = memubh(r21<<#3+##31)4150x11 0xe0 0x75 0x9c416# CHECK: r17 = memubh(r21++m1)4170x00 0x40 0x00 0x00 0xf0 0xf7 0xf5 0x9c418# CHECK: r17:16 = membh(r21<<#3+##31)4190x10 0xe0 0xf5 0x9c420# CHECK: r17:16 = membh(r21++m1)4210x00 0x40 0x00 0x00 0xf0 0xf7 0xb5 0x9c422# CHECK: r17:16 = memubh(r21<<#3+##31)4230x11 0xe0 0x35 0x9c424# CHECK: r17 = membh(r21++m1)4250x11 0xe0 0x75 0x9c426# CHECK: r17 = memubh(r21++m1)4270x10 0xe0 0xf5 0x9c428# CHECK: r17:16 = membh(r21++m1)4290x10 0xe0 0xb5 0x9c430# CHECK: r17:16 = memubh(r21++m1)4310x11 0xe0 0x35 0x9e432# CHECK: r17 = membh(r21++m1:brev)4330x11 0xe0 0x75 0x9e434# CHECK: r17 = memubh(r21++m1:brev)4350x10 0xe0 0xb5 0x9e436# CHECK: r17:16 = memubh(r21++m1:brev)4370x10 0xe0 0xf5 0x9e438# CHECK: r17:16 = membh(r21++m1:brev)439