499 lines · plain
1# RUN: llvm-mc -triple hexagon -filetype=obj -o - %s | llvm-objdump -d - | FileCheck %s2# Hexagon Programmer's Reference Manual 11.5 LD3 4# Load doubleword5# CHECK: 90 ff d5 3a6r17:16 = memd(r21 + r31<<#3)7# CHECK: b0 c2 c0 498r17:16 = memd(gp+#168)9# CHECK: 02 40 00 0010# CHECK-NEXT: 10 c5 c0 4911r17:16 = memd(##168)12# CHECK: d0 c0 d5 9113r17:16 = memd(r21 + #48)14# CHECK: b0 e0 d5 9915r17:16 = memd(r21 ++ #40:circ(m1))16# CHECK: 10 e2 d5 9917r17:16 = memd(r21 ++ I:circ(m1))18# CHECK: 00 40 00 0019# CHECK-NEXT: 70 d7 d5 9b20r17:16 = memd(r21 = ##31)21# CHECK: b0 c0 d5 9b22r17:16 = memd(r21++#40)23# CHECK: 10 e0 d5 9d24r17:16 = memd(r21++m1)25# CHECK: 10 e0 d5 9f26r17:16 = memd(r21 ++ m1:brev)27 28# Load doubleword conditionally29# CHECK: f0 ff d5 3030if (p3) r17:16 = memd(r21+r31<<#3)31# CHECK: f0 ff d5 3132if (!p3) r17:16 = memd(r21+r31<<#3)33# CHECK: 03 40 45 8534# CHECK-NEXT: f0 ff d5 3235{ p3 = r536 if (p3.new) r17:16 = memd(r21+r31<<#3) }37# CHECK: 03 40 45 8538# CHECK-NEXT: f0 ff d5 3339{ p3 = r540 if (!p3.new) r17:16 = memd(r21+r31<<#3) }41# CHECK: 70 d8 d5 4142if (p3) r17:16 = memd(r21 + #24)43# CHECK: 03 40 45 8544# CHECK-NEXT: 70 d8 d5 4345{ p3 = r546 if (p3.new) r17:16 = memd(r21 + #24) }47# CHECK: 70 d8 d5 4548if (!p3) r17:16 = memd(r21 + #24)49# CHECK: 03 40 45 8550# CHECK-NEXT: 70 d8 d5 4751{ p3 = r552 if (!p3.new) r17:16 = memd(r21 + #24) }53# CHECK: b0 e6 d5 9b54if (p3) r17:16 = memd(r21++#40)55# CHECK: b0 ee d5 9b56if (!p3) r17:16 = memd(r21++#40)57# CHECK: 03 40 45 8558# CHECK-NEXT: b0 f6 d5 9b59{ p3 = r560 if (p3.new) r17:16 = memd(r21++#40) }61# CHECK: 03 40 45 8562# CHECK-NEXT: b0 fe d5 9b63{ p3 = r564 if (!p3.new) r17:16 = memd(r21++#40) }65 66# Load byte67# CHECK: 91 ff 15 3a68r17 = memb(r21 + r31<<#3)69# CHECK: b1 c2 00 4970r17 = memb(gp+#21)71# CHECK: 00 40 00 0072# CHECK-NEXT: b1 c2 00 4973r17 = memb(##21)74# CHECK: f1 c3 15 9175r17 = memb(r21 + #31)76# CHECK: b1 e0 15 9977r17 = memb(r21 ++ #5:circ(m1))78# CHECK: 11 e2 15 9979r17 = memb(r21 ++ I:circ(m1))80# CHECK: 00 40 00 0081# CHECK-NEXT: 71 d7 15 9b82r17 = memb(r21 = ##31)83# CHECK: b1 c0 15 9b84r17 = memb(r21++#5)85# CHECK: 11 e0 15 9d86r17 = memb(r21++m1)87# CHECK: 11 e0 15 9f88r17 = memb(r21 ++ m1:brev)89 90# Load byte conditionally91# CHECK: f1 ff 15 3092if (p3) r17 = memb(r21+r31<<#3)93# CHECK: f1 ff 15 3194if (!p3) r17 = memb(r21+r31<<#3)95# CHECK: 03 40 45 8596# CHECK-NEXT: f1 ff 15 3297{ p3 = r598 if (p3.new) r17 = memb(r21+r31<<#3) }99# CHECK: 03 40 45 85100# CHECK-NEXT: f1 ff 15 33101{ p3 = r5102 if (!p3.new) r17 = memb(r21+r31<<#3) }103# CHECK: 91 dd 15 41104if (p3) r17 = memb(r21 + #44)105# CHECK: 03 40 45 85106# CHECK-NEXT: 91 dd 15 43107{ p3 = r5108 if (p3.new) r17 = memb(r21 + #44) }109# CHECK: 91 dd 15 45110if (!p3) r17 = memb(r21 + #44)111# CHECK: 03 40 45 85112# CHECK-NEXT: 91 dd 15 47113{ p3 = r5114 if (!p3.new) r17 = memb(r21 + #44) }115# CHECK: b1 e6 15 9b116if (p3) r17 = memb(r21++#5)117# CHECK: b1 ee 15 9b118if (!p3) r17 = memb(r21++#5)119# CHECK: 03 40 45 85120# CHECK-NEXT: b1 f6 15 9b121{ p3 = r5122 if (p3.new) r17 = memb(r21++#5) }123# CHECK: 03 40 45 85124# CHECK-NEXT: b1 fe 15 9b125{ p3 = r5126 if (!p3.new) r17 = memb(r21++#5) }127 128# Load byte into shifted vector129# CHECK: f0 c3 95 90130r17:16 = memb_fifo(r21 + #31)131# CHECK: b0 e0 95 98132r17:16 = memb_fifo(r21 ++ #5:circ(m1))133# CHECK: 10 e2 95 98134r17:16 = memb_fifo(r21 ++ I:circ(m1))135 136# Load half into shifted vector137# CHECK: f0 c3 55 90138r17:16 = memh_fifo(r21 + #62)139# CHECK: b0 e0 55 98140r17:16 = memh_fifo(r21 ++ #10:circ(m1))141# CHECK: 10 e2 55 98142r17:16 = memh_fifo(r21 ++ I:circ(m1))143 144# Load halfword145# CHECK: 91 ff 55 3a146r17 = memh(r21 + r31<<#3)147# CHECK: b1 c2 40 49148r17 = memh(gp+#42)149# CHECK: 00 40 00 00150# CHECK-NEXT: 51 c5 40 49151r17 = memh(##42)152# CHECK: f1 c3 55 91153r17 = memh(r21 + #62)154# CHECK: b1 e0 55 99155r17 = memh(r21 ++ #10:circ(m1))156# CHECK: 11 e2 55 99157r17 = memh(r21 ++ I:circ(m1))158# CHECK: 00 40 00 00159# CHECK-NEXT: 71 d7 55 9b160r17 = memh(r21 = ##31)161# CHECK: b1 c0 55 9b162r17 = memh(r21++#10)163# CHECK: 11 e0 55 9d164r17 = memh(r21++m1)165# CHECK: 11 e0 55 9f166r17 = memh(r21 ++ m1:brev)167 168# Load halfword conditionally169# CHECK: f1 ff 55 30170if (p3) r17 = memh(r21+r31<<#3)171# CHECK: f1 ff 55 31172if (!p3) r17 = memh(r21+r31<<#3)173# CHECK: 03 40 45 85174# CHECK-NEXT: f1 ff 55 32175{ p3 = r5176 if (p3.new) r17 = memh(r21+r31<<#3) }177# CHECK: 03 40 45 85178# CHECK-NEXT: f1 ff 55 33179{ p3 = r5180 if (!p3.new) r17 = memh(r21+r31<<#3) }181# CHECK: b1 e6 55 9b182if (p3) r17 = memh(r21++#10)183# CHECK: b1 ee 55 9b184if (!p3) r17 = memh(r21++#10)185# CHECK: 03 40 45 85186# CHECK-NEXT: b1 f6 55 9b187{ p3 = r5188 if (p3.new) r17 = memh(r21++#10) }189# CHECK: 03 40 45 85190# CHECK-NEXT: b1 fe 55 9b191{ p3 = r5192 if (!p3.new) r17 = memh(r21++#10) }193# CHECK: f1 db 55 41194if (p3) r17 = memh(r21 + #62)195# CHECK: f1 db 55 45196if (!p3) r17 = memh(r21 + #62)197# CHECK: 03 40 45 85198# CHECK-NEXT: f1 db 55 43199{ p3 = r5200 if (p3.new) r17 = memh(r21 + #62) }201# CHECK: 03 40 45 85202# CHECK-NEXT: f1 db 55 47203{ p3 = r5204 if (!p3.new) r17 = memh(r21 + #62) }205 206# Load unsigned byte207# CHECK: 91 ff 35 3a208r17 = memub(r21 + r31<<#3)209# CHECK: b1 c2 20 49210r17 = memub(gp+#21)211# CHECK: 00 40 00 00212# CHECK-NEXT: b1 c2 20 49213r17 = memub(##21)214# CHECK: f1 c3 35 91215r17 = memub(r21 + #31)216# CHECK: b1 e0 35 99217r17 = memub(r21 ++ #5:circ(m1))218# CHECK: 11 e2 35 99219r17 = memub(r21 ++ I:circ(m1))220# CHECK: 00 40 00 00221# CHECK-NEXT: 71 d7 35 9b222r17 = memub(r21 = ##31)223# CHECK: b1 c0 35 9b224r17 = memub(r21++#5)225# CHECK: 11 e0 35 9d226r17 = memub(r21++m1)227# CHECK: 11 e0 35 9f228r17 = memub(r21 ++ m1:brev)229 230# Load unsigned byte conditionally231# CHECK: f1 ff 35 30232if (p3) r17 = memub(r21+r31<<#3)233# CHECK: f1 ff 35 31234if (!p3) r17 = memub(r21+r31<<#3)235# CHECK: 03 40 45 85236# CHECK-NEXT: f1 ff 35 32237{ p3 = r5238 if (p3.new) r17 = memub(r21+r31<<#3) }239# CHECK: 03 40 45 85240# CHECK-NEXT: f1 ff 35 33241{ p3 = r5242 if (!p3.new) r17 = memub(r21+r31<<#3) }243# CHECK: f1 db 35 41244if (p3) r17 = memub(r21 + #31)245# CHECK: 03 40 45 85246# CHECK-NEXT: f1 db 35 43247{ p3 = r5248 if (p3.new) r17 = memub(r21 + #31) }249# CHECK: f1 db 35 45250if (!p3) r17 = memub(r21 + #31)251# CHECK: 03 40 45 85252# CHECK-NEXT: f1 db 35 47253{ p3 = r5254 if (!p3.new) r17 = memub(r21 + #31) }255# CHECK: b1 e6 35 9b256if (p3) r17 = memub(r21++#5)257# CHECK: b1 ee 35 9b258if (!p3) r17 = memub(r21++#5)259# CHECK: 03 40 45 85260# CHECK-NEXT: b1 f6 35 9b261{ p3 = r5262 if (p3.new) r17 = memub(r21++#5) }263# CHECK: 03 40 45 85264# CHECK-NEXT: b1 fe 35 9b265{ p3 = r5266 if (!p3.new) r17 = memub(r21++#5) }267 268# Load unsigned halfword269# CHECK: 91 ff 75 3a270r17 = memuh(r21 + r31<<#3)271# CHECK: b1 c2 60 49272r17 = memuh(gp+#42)273# CHECK: 00 40 00 00274# CHECK-NEXT: 51 c5 60 49275r17 = memuh(##42)276# CHECK: b1 c2 75 91277r17 = memuh(r21 + #42)278# CHECK: b1 e0 75 99279r17 = memuh(r21 ++ #10:circ(m1))280# CHECK: 11 e2 75 99281r17 = memuh(r21 ++ I:circ(m1))282# CHECK: 00 40 00 00283# CHECK-NEXT: 71 d7 75 9b284r17 = memuh(r21 = ##31)285# CHECK: b1 c0 75 9b286r17 = memuh(r21++#10)287# CHECK: 11 e0 75 9d288r17 = memuh(r21++m1)289# CHECK: 11 e0 75 9f290r17 = memuh(r21 ++ m1:brev)291 292# Load unsigned halfword conditionally293# CHECK: f1 ff 75 30294if (p3) r17 = memuh(r21+r31<<#3)295# CHECK: f1 ff 75 31296if (!p3) r17 = memuh(r21+r31<<#3)297# CHECK: 03 40 45 85298# CHECK-NEXT: f1 ff 75 32299{ p3 = r5300 if (p3.new) r17 = memuh(r21+r31<<#3) }301# CHECK: 03 40 45 85302# CHECK-NEXT: f1 ff 75 33303{ p3 = r5304 if (!p3.new) r17 = memuh(r21+r31<<#3) }305# CHECK: b1 da 75 41306if (p3) r17 = memuh(r21 + #42)307# CHECK: b1 da 75 45308if (!p3) r17 = memuh(r21 + #42)309# CHECK: 03 40 45 85310# CHECK-NEXT: b1 da 75 43311{ p3 = r5312 if (p3.new) r17 = memuh(r21 + #42) }313# CHECK: 03 40 45 85314# CHECK-NEXT: b1 da 75 47315{ p3 = r5316 if (!p3.new) r17 = memuh(r21 + #42) }317# CHECK: b1 e6 75 9b318if (p3) r17 = memuh(r21++#10)319# CHECK: b1 ee 75 9b320if (!p3) r17 = memuh(r21++#10)321# CHECK: 03 40 45 85322# CHECK-NEXT: b1 f6 75 9b323{ p3 = r5324 if (p3.new) r17 = memuh(r21++#10) }325# CHECK: 03 40 45 85326# CHECK-NEXT: b1 fe 75 9b327{ p3 = r5328 if (!p3.new) r17 = memuh(r21++#10) }329 330# Load word331# CHECK: 91 ff 95 3a332r17 = memw(r21 + r31<<#3)333# CHECK: b1 c2 80 49334r17 = memw(gp+#84)335# CHECK: 01 40 00 00336# CHECK-NEXT: 91 c2 80 49337r17 = memw(##84)338# CHECK: b1 c2 95 91339r17 = memw(r21 + #84)340# CHECK: b1 e0 95 99341r17 = memw(r21 ++ #20:circ(m1))342# CHECK: 11 e2 95 99343r17 = memw(r21 ++ I:circ(m1))344# CHECK: 00 40 00 00345# CHECK-NEXT: 71 d7 95 9b346r17 = memw(r21 = ##31)347# CHECK: b1 c0 95 9b348r17 = memw(r21++#20)349# CHECK: 11 e0 95 9d350r17 = memw(r21++m1)351# CHECK: 11 e0 95 9f352r17 = memw(r21 ++ m1:brev)353 354# Load word conditionally355# CHECK: f1 ff 95 30356if (p3) r17 = memw(r21+r31<<#3)357# CHECK: f1 ff 95 31358if (!p3) r17 = memw(r21+r31<<#3)359# CHECK: 03 40 45 85360# CHECK-NEXT: f1 ff 95 32361{ p3 = r5362 if (p3.new) r17 = memw(r21+r31<<#3) }363# CHECK: 03 40 45 85364# CHECK-NEXT: f1 ff 95 33365{ p3 = r5366 if (!p3.new) r17 = memw(r21+r31<<#3) }367# CHECK: b1 da 95 41368if (p3) r17 = memw(r21 + #84)369# CHECK: b1 da 95 45370if (!p3) r17 = memw(r21 + #84)371# CHECK: 03 40 45 85372# CHECK-NEXT: b1 da 95 43373{ p3 = r5374 if (p3.new) r17 = memw(r21 + #84) }375# CHECK: 03 40 45 85376# CHECK-NEXT: b1 da 95 47377{ p3 = r5378 if (!p3.new) r17 = memw(r21 + #84) }379# CHECK: b1 e6 95 9b380if (p3) r17 = memw(r21++#20)381# CHECK: b1 ee 95 9b382if (!p3) r17 = memw(r21++#20)383# CHECK: 03 40 45 85384# CHECK-NEXT: b1 f6 95 9b385{ p3 = r5386 if (p3.new) r17 = memw(r21++#20) }387# CHECK: 03 40 45 85388# CHECK-NEXT: b1 fe 95 9b389{ p3 = r5390 if (!p3.new) r17 = memw(r21++#20) }391 392# Deallocate stack frame393# CHECK: 1e c0 1e 90394deallocframe395 396# Deallocate stack frame and return397# CHECK: 1e c0 1e 96398dealloc_return399# CHECK: 03 40 45 85400# CHECK-NEXT: 1e cb 1e 96401{ p3 = r5402 if (p3.new) dealloc_return:nt }403# CHECK: 1e d3 1e 96404if (p3) dealloc_return405# CHECK: 03 40 45 85406# CHECK-NEXT: 1e db 1e 96407{ p3 = r5408 if (p3.new) dealloc_return:t }409# CHECK: 03 40 45 85410# CHECK-NEXT: 1e eb 1e 96411{ p3 = r5412 if (!p3.new) dealloc_return:nt }413# CHECK: 1e f3 1e 96414if (!p3) dealloc_return415# CHECK: 03 40 45 85416# CHECK-NEXT: 1e fb 1e 96417{ p3 = r5418 if (!p3.new) dealloc_return:t }419 420# Load and unpack bytes to halfwords421# CHECK: f1 c3 35 90422r17 = membh(r21 + #62)423# CHECK: f1 c3 75 90424r17 = memubh(r21 + #62)425# CHECK: f0 c3 b5 90426r17:16 = memubh(r21 + #124)427# CHECK: f0 c3 f5 90428r17:16 = membh(r21 + #124)429# CHECK: b1 e0 35 98430r17 = membh(r21 ++ #10:circ(m1))431# CHECK: 11 e2 35 98432r17 = membh(r21 ++ I:circ(m1))433# CHECK: b1 e0 75 98434r17 = memubh(r21 ++ #10:circ(m1))435# CHECK: 11 e2 75 98436r17 = memubh(r21 ++ I:circ(m1))437# CHECK: b0 e0 f5 98438r17:16 = membh(r21 ++ #20:circ(m1))439# CHECK: 10 e2 f5 98440r17:16 = membh(r21 ++ I:circ(m1))441# CHECK: b0 e0 b5 98442r17:16 = memubh(r21 ++ #20:circ(m1))443# CHECK: 10 e2 b5 98444r17:16 = memubh(r21 ++ I:circ(m1))445# CHECK: 00 40 00 00446# CHECK-NEXT: 71 d7 35 9a447r17 = membh(r21 = ##31)448# CHECK: b1 c0 35 9a449r17 = membh(r21++#10)450# CHECK: 00 40 00 00451# CHECK-NEXT: 71 d7 75 9a452r17 = memubh(r21 = ##31)453# CHECK: b1 c0 75 9a454r17 = memubh(r21++#10)455# CHECK: 00 40 00 00456# CHECK-NEXT: 70 d7 b5 9a457r17:16 = memubh(r21 = ##31)458# CHECK: b0 c0 b5 9a459r17:16 = memubh(r21++#20)460# CHECK: 00 40 00 00461# CHECK-NEXT: 70 d7 f5 9a462r17:16 = membh(r21 = ##31)463# CHECK: b0 c0 f5 9a464r17:16 = membh(r21++#20)465# CHECK: 00 40 00 00466# CHECK-NEXT: f1 f7 35 9c467r17 = membh(r21<<#3 + ##31)468# CHECK: 11 e0 35 9c469r17 = membh(r21++m1)470# CHECK: 00 40 00 00471# CHECK-NEXT: f1 f7 75 9c472r17 = memubh(r21<<#3 + ##31)473# CHECK: 11 e0 75 9c474r17 = memubh(r21++m1)475# CHECK: 00 40 00 00476# CHECK-NEXT: f0 f7 f5 9c477r17:16 = membh(r21<<#3 + ##31)478# CHECK: 10 e0 f5 9c479r17:16 = membh(r21++m1)480# CHECK: 00 40 00 00481# CHECK-NEXT: f0 f7 b5 9c482r17:16 = memubh(r21<<#3 + ##31)483# CHECK: 11 e0 35 9c484r17 = membh(r21++m1)485# CHECK: 11 e0 75 9c486r17 = memubh(r21++m1)487# CHECK: 10 e0 f5 9c488r17:16 = membh(r21++m1)489# CHECK: 10 e0 b5 9c490r17:16 = memubh(r21++m1)491# CHECK: 11 e0 35 9e492r17 = membh(r21 ++ m1:brev)493# CHECK: 11 e0 75 9e494r17 = memubh(r21 ++ m1:brev)495# CHECK: 10 e0 b5 9e496r17:16 = memubh(r21 ++ m1:brev)497# CHECK: 10 e0 f5 9e498r17:16 = membh(r21 ++ m1:brev)499