brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.2 KiB · 95b4485 Raw
527 lines · plain
1# RUN: llvm-mc -triple arm64-apple-darwin --disassemble < %s | FileCheck %s2 3#==---------------------------------------------------------------------------==4# Add/Subtract with carry/borrow5#==---------------------------------------------------------------------------==6 70x41 0x00 0x03 0x1a80x41 0x00 0x03 0x9a90x85 0x00 0x03 0x3a100x85 0x00 0x03 0xba11 12# CHECK: adc  w1, w2, w313# CHECK: adc  x1, x2, x314# CHECK: adcs w5, w4, w315# CHECK: adcs x5, x4, x316 170x41 0x00 0x03 0x5a180x41 0x00 0x03 0xda190x41 0x00 0x03 0x7a200x41 0x00 0x03 0xfa21 22# CHECK: sbc  w1, w2, w323# CHECK: sbc  x1, x2, x324# CHECK: sbcs w1, w2, w325# CHECK: sbcs x1, x2, x326 27#==---------------------------------------------------------------------------==28# Add/Subtract with (optionally shifted) immediate29#==---------------------------------------------------------------------------==30 310x83 0x00 0x10 0x11320x83 0x00 0x10 0x9133 34# CHECK: add w3, w4, #102435# CHECK: add x3, x4, #102436 370x83 0x00 0x50 0x11380x83 0x00 0x40 0x11390x83 0x00 0x50 0x91400x83 0x00 0x40 0x91410xff 0x83 0x00 0x9142 43# CHECK: add w3, w4, #1024, lsl #1244# CHECK: add x3, x4, #1024, lsl #1245# CHECK: add x3, x4, #0, lsl #1246# CHECK: add sp, sp, #3247 480x83 0x00 0x10 0x31490x83 0x00 0x50 0x31500x83 0x00 0x10 0xb1510x83 0x00 0x50 0xb1520xff 0x83 0x00 0xb153 54# CHECK: adds w3, w4, #102455# CHECK: adds w3, w4, #1024, lsl #1256# CHECK: adds x3, x4, #102457# CHECK: adds x3, x4, #1024, lsl #1258# CHECK: cmn  sp, #3259 600x83 0x00 0x10 0x51610x83 0x00 0x50 0x51620x83 0x00 0x10 0xd1630x83 0x00 0x50 0xd1640xff 0x83 0x00 0xd165 66# CHECK: sub w3, w4, #102467# CHECK: sub w3, w4, #1024, lsl #1268# CHECK: sub x3, x4, #102469# CHECK: sub x3, x4, #1024, lsl #1270# CHECK: sub sp, sp, #3271 720x83 0x00 0x10 0x71730x83 0x00 0x50 0x71740x83 0x00 0x10 0xf1750x83 0x00 0x50 0xf1760xff 0x83 0x00 0xf177 78# CHECK: subs w3, w4, #102479# CHECK: subs w3, w4, #1024, lsl #1280# CHECK: subs x3, x4, #102481# CHECK: subs x3, x4, #1024, lsl #1282# CHECK: cmp  sp, #3283 84#==---------------------------------------------------------------------------==85# Add/Subtract register with (optional) shift86#==---------------------------------------------------------------------------==87 880xac 0x01 0x0e 0x0b890xac 0x01 0x0e 0x8b900xac 0x31 0x0e 0x0b910xac 0x31 0x0e 0x8b920xac 0x29 0x4e 0x0b930xac 0x29 0x4e 0x8b940xac 0x1d 0x8e 0x0b950xac 0x9d 0x8e 0x8b96 97# CHECK: add w12, w13, w1498# CHECK: add x12, x13, x1499# CHECK: add w12, w13, w14, lsl #12100# CHECK: add x12, x13, x14, lsl #12101# CHECK: add w12, w13, w14, lsr #10102# CHECK: add x12, x13, x14, lsr #10103# CHECK: add w12, w13, w14, asr #7104# CHECK: add x12, x13, x14, asr #39105 1060xac 0x01 0x0e 0x4b1070xac 0x01 0x0e 0xcb1080xac 0x31 0x0e 0x4b1090xac 0x31 0x0e 0xcb1100xac 0x29 0x4e 0x4b1110xac 0x29 0x4e 0xcb1120xac 0x1d 0x8e 0x4b1130xac 0x9d 0x8e 0xcb114 115# CHECK: sub w12, w13, w14116# CHECK: sub x12, x13, x14117# CHECK: sub w12, w13, w14, lsl #12118# CHECK: sub x12, x13, x14, lsl #12119# CHECK: sub w12, w13, w14, lsr #10120# CHECK: sub x12, x13, x14, lsr #10121# CHECK: sub w12, w13, w14, asr #7122# CHECK: sub x12, x13, x14, asr #39123 1240xac 0x01 0x0e 0x2b1250xac 0x01 0x0e 0xab1260xac 0x31 0x0e 0x2b1270xac 0x31 0x0e 0xab1280xac 0x29 0x4e 0x2b1290xac 0x29 0x4e 0xab1300xac 0x1d 0x8e 0x2b1310xac 0x9d 0x8e 0xab132 133# CHECK: adds w12, w13, w14134# CHECK: adds x12, x13, x14135# CHECK: adds w12, w13, w14, lsl #12136# CHECK: adds x12, x13, x14, lsl #12137# CHECK: adds w12, w13, w14, lsr #10138# CHECK: adds x12, x13, x14, lsr #10139# CHECK: adds w12, w13, w14, asr #7140# CHECK: adds x12, x13, x14, asr #39141 1420xac 0x01 0x0e 0x6b1430xac 0x01 0x0e 0xeb1440xac 0x31 0x0e 0x6b1450xac 0x31 0x0e 0xeb1460xac 0x29 0x4e 0x6b1470xac 0x29 0x4e 0xeb1480xac 0x1d 0x8e 0x6b1490xac 0x9d 0x8e 0xeb150 151# CHECK: subs w12, w13, w14152# CHECK: subs x12, x13, x14153# CHECK: subs w12, w13, w14, lsl #12154# CHECK: subs x12, x13, x14, lsl #12155# CHECK: subs w12, w13, w14, lsr #10156# CHECK: subs x12, x13, x14, lsr #10157# CHECK: subs w12, w13, w14, asr #7158# CHECK: subs x12, x13, x14, asr #39159 160#==---------------------------------------------------------------------------==161# Add/Subtract with (optional) extend162#==---------------------------------------------------------------------------==163 1640x41 0x00 0x23 0x0b1650x41 0x20 0x23 0x0b1660x41 0x40 0x23 0x0b1670x41 0x60 0x23 0x0b1680x41 0x80 0x23 0x0b1690x41 0xa0 0x23 0x0b1700x41 0xc0 0x23 0x0b1710x41 0xe0 0x23 0x0b172 173# CHECK: add w1, w2, w3, uxtb174# CHECK: add w1, w2, w3, uxth175# CHECK: add w1, w2, w3176# CHECK: add w1, w2, w3, uxtx177# CHECK: add w1, w2, w3, sxtb178# CHECK: add w1, w2, w3, sxth179# CHECK: add w1, w2, w3, sxtw180# CHECK: add w1, w2, w3, sxtx181 1820x41 0x00 0x23 0x8b1830x41 0x20 0x23 0x8b1840x41 0x40 0x23 0x8b1850x41 0x80 0x23 0x8b1860x41 0xa0 0x23 0x8b1870x41 0xc0 0x23 0x8b188 189# CHECK: add x1, x2, w3, uxtb190# CHECK: add x1, x2, w3, uxth191# CHECK: add x1, x2, w3, uxtw192# CHECK: add x1, x2, w3, sxtb193# CHECK: add x1, x2, w3, sxth194# CHECK: add x1, x2, w3, sxtw195 1960xe1 0x43 0x23 0x0b1970xe1 0x43 0x23 0x0b1980x5f 0x60 0x23 0x8b1990x5f 0x60 0x23 0x8b200 201# CHECK: add w1, wsp, w3202# CHECK: add w1, wsp, w3203# CHECK: add sp, x2, x3204# CHECK: add sp, x2, x3205 2060x41 0x00 0x23 0x4b2070x41 0x20 0x23 0x4b2080x41 0x40 0x23 0x4b2090x41 0x60 0x23 0x4b2100x41 0x80 0x23 0x4b2110x41 0xa0 0x23 0x4b2120x41 0xc0 0x23 0x4b2130x41 0xe0 0x23 0x4b214 215# CHECK: sub w1, w2, w3, uxtb216# CHECK: sub w1, w2, w3, uxth217# CHECK: sub w1, w2, w3218# CHECK: sub w1, w2, w3, uxtx219# CHECK: sub w1, w2, w3, sxtb220# CHECK: sub w1, w2, w3, sxth221# CHECK: sub w1, w2, w3, sxtw222# CHECK: sub w1, w2, w3, sxtx223 2240x41 0x00 0x23 0xcb2250x41 0x20 0x23 0xcb2260x41 0x40 0x23 0xcb2270x41 0x80 0x23 0xcb2280x41 0xa0 0x23 0xcb2290x41 0xc0 0x23 0xcb230 231# CHECK: sub x1, x2, w3, uxtb232# CHECK: sub x1, x2, w3, uxth233# CHECK: sub x1, x2, w3, uxtw234# CHECK: sub x1, x2, w3, sxtb235# CHECK: sub x1, x2, w3, sxth236# CHECK: sub x1, x2, w3, sxtw237 2380xe1 0x43 0x23 0x4b2390xe1 0x43 0x23 0x4b2400x5f 0x60 0x23 0xcb2410x5f 0x60 0x23 0xcb242 243# CHECK: sub w1, wsp, w3244# CHECK: sub w1, wsp, w3245# CHECK: sub sp, x2, x3246# CHECK: sub sp, x2, x3247 2480x41 0x00 0x23 0x2b2490x41 0x20 0x23 0x2b2500x41 0x40 0x23 0x2b2510x41 0x60 0x23 0x2b2520x41 0x80 0x23 0x2b2530x41 0xa0 0x23 0x2b2540x41 0xc0 0x23 0x2b2550x41 0xe0 0x23 0x2b256 257# CHECK: adds w1, w2, w3, uxtb258# CHECK: adds w1, w2, w3, uxth259# CHECK: adds w1, w2, w3260# CHECK: adds w1, w2, w3, uxtx261# CHECK: adds w1, w2, w3, sxtb262# CHECK: adds w1, w2, w3, sxth263# CHECK: adds w1, w2, w3, sxtw264# CHECK: adds w1, w2, w3, sxtx265 2660x41 0x00 0x23 0xab2670x41 0x20 0x23 0xab2680x41 0x40 0x23 0xab2690x41 0x80 0x23 0xab2700x41 0xa0 0x23 0xab2710x41 0xc0 0x23 0xab272 273# CHECK: adds x1, x2, w3, uxtb274# CHECK: adds x1, x2, w3, uxth275# CHECK: adds x1, x2, w3, uxtw276# CHECK: adds x1, x2, w3, sxtb277# CHECK: adds x1, x2, w3, sxth278# CHECK: adds x1, x2, w3, sxtw279 2800xe1 0x43 0x23 0x2b2810xe1 0x43 0x23 0x2b282 283# CHECK: adds w1, wsp, w3284# CHECK: adds w1, wsp, w3285 2860x41 0x00 0x23 0x6b2870x41 0x20 0x23 0x6b2880x41 0x40 0x23 0x6b2890x41 0x60 0x23 0x6b2900x41 0x80 0x23 0x6b2910x41 0xa0 0x23 0x6b2920x41 0xc0 0x23 0x6b2930x41 0xe0 0x23 0x6b294 295# CHECK: subs w1, w2, w3, uxtb296# CHECK: subs w1, w2, w3, uxth297# CHECK: subs w1, w2, w3298# CHECK: subs w1, w2, w3, uxtx299# CHECK: subs w1, w2, w3, sxtb300# CHECK: subs w1, w2, w3, sxth301# CHECK: subs w1, w2, w3, sxtw302# CHECK: subs w1, w2, w3, sxtx303 3040x41 0x00 0x23 0xeb3050x41 0x20 0x23 0xeb3060x41 0x40 0x23 0xeb3070x41 0x80 0x23 0xeb3080x41 0xa0 0x23 0xeb3090x41 0xc0 0x23 0xeb310 311# CHECK: subs x1, x2, w3, uxtb312# CHECK: subs x1, x2, w3, uxth313# CHECK: subs x1, x2, w3, uxtw314# CHECK: subs x1, x2, w3, sxtb315# CHECK: subs x1, x2, w3, sxth316# CHECK: subs x1, x2, w3, sxtw317 3180xe1 0x43 0x23 0x6b3190xe1 0x43 0x23 0x6b320 321# CHECK: subs w1, wsp, w3322# CHECK: subs w1, wsp, w3323 3240x1f 0x41 0x28 0xeb3250x3f 0x41 0x28 0x6b3260xff 0x43 0x28 0x6b3270xff 0x43 0x28 0xeb328 329# CHECK: cmp x8, w8, uxtw330# CHECK: cmp w9, w8, uxtw331# CHECK: cmp wsp, w8332# CHECK: cmp sp, w8333 3340x3f 0x41 0x28 0x4b3350xe1 0x43 0x28 0x4b3360xff 0x43 0x28 0x4b3370x3f 0x41 0x28 0xcb3380xe1 0x43 0x28 0xcb3390xff 0x43 0x28 0xcb3400xe1 0x43 0x28 0x6b3410xe1 0x43 0x28 0xeb342 343# CHECK: sub wsp, w9, w8344# CHECK: sub w1, wsp, w8345# CHECK: sub wsp, wsp, w8346# CHECK: sub sp, x9, w8347# CHECK: sub x1, sp, w8348# CHECK: sub sp, sp, w8349# CHECK: subs w1, wsp, w8350# CHECK: subs x1, sp, w8351 352#==---------------------------------------------------------------------------==353# Signed/Unsigned divide354#==---------------------------------------------------------------------------==355 3560x41 0x0c 0xc3 0x1a3570x41 0x0c 0xc3 0x9a3580x41 0x08 0xc3 0x1a3590x41 0x08 0xc3 0x9a360 361# CHECK: sdiv w1, w2, w3362# CHECK: sdiv x1, x2, x3363# CHECK: udiv w1, w2, w3364# CHECK: udiv x1, x2, x3365 366#==---------------------------------------------------------------------------==367# Variable shifts368#==---------------------------------------------------------------------------==369 370  0x41 0x28 0xc3 0x1a371# CHECK: asr w1, w2, w3372  0x41 0x28 0xc3 0x9a373# CHECK: asr x1, x2, x3374  0x41 0x20 0xc3 0x1a375# CHECK: lsl w1, w2, w3376  0x41 0x20 0xc3 0x9a377# CHECK: lsl x1, x2, x3378  0x41 0x24 0xc3 0x1a379# CHECK: lsr w1, w2, w3380  0x41 0x24 0xc3 0x9a381# CHECK: lsr x1, x2, x3382  0x41 0x2c 0xc3 0x1a383# CHECK: ror w1, w2, w3384  0x41 0x2c 0xc3 0x9a385# CHECK: ror x1, x2, x3386 387#==---------------------------------------------------------------------------==388# One operand instructions389#==---------------------------------------------------------------------------==390 391  0x41 0x14 0xc0 0x5a392# CHECK: cls w1, w2393  0x41 0x14 0xc0 0xda394# CHECK: cls x1, x2395  0x41 0x10 0xc0 0x5a396# CHECK: clz w1, w2397  0x41 0x10 0xc0 0xda398# CHECK: clz x1, x2399  0x41 0x00 0xc0 0x5a400# CHECK: rbit w1, w2401  0x41 0x00 0xc0 0xda402# CHECK: rbit x1, x2403  0x41 0x08 0xc0 0x5a404# CHECK: rev w1, w2405  0x41 0x0c 0xc0 0xda406# CHECK: rev x1, x2407  0x41 0x04 0xc0 0x5a408# CHECK: rev16 w1, w2409  0x41 0x04 0xc0 0xda410# CHECK: rev16 x1, x2411  0x41 0x08 0xc0 0xda412# CHECK: rev32 x1, x2413 414#==---------------------------------------------------------------------------==415# 6.6.1 Multiply-add instructions416#==---------------------------------------------------------------------------==417 4180x41 0x10 0x03 0x1b4190x41 0x10 0x03 0x9b4200x41 0x90 0x03 0x1b4210x41 0x90 0x03 0x9b4220x41 0x10 0x23 0x9b4230x41 0x90 0x23 0x9b4240x41 0x10 0xa3 0x9b4250x41 0x90 0xa3 0x9b426 427# CHECK: madd   w1, w2, w3, w4428# CHECK: madd   x1, x2, x3, x4429# CHECK: msub   w1, w2, w3, w4430# CHECK: msub   x1, x2, x3, x4431# CHECK: smaddl x1, w2, w3, x4432# CHECK: smsubl x1, w2, w3, x4433# CHECK: umaddl x1, w2, w3, x4434# CHECK: umsubl x1, w2, w3, x4435 436#==---------------------------------------------------------------------------==437# Multiply-high instructions438#==---------------------------------------------------------------------------==439 4400x41 0x7c 0x43 0x9b4410x41 0x7c 0xc3 0x9b442 443# CHECK: smulh x1, x2, x3444# CHECK: umulh x1, x2, x3445 446#==---------------------------------------------------------------------------==447# Move immediate instructions448#==---------------------------------------------------------------------------==449 4500x20 0x00 0x80 0x524510x20 0x00 0x80 0xd24520x20 0x00 0xa0 0x524530x20 0x00 0xa0 0xd2454 455# CHECK: mov w0, #1456# CHECK: mov x0, #1457# CHECK: mov w0, #65536458# CHECK: mov x0, #65536459 4600x40 0x00 0x80 0x124610x40 0x00 0x80 0x924620x40 0x00 0xa0 0x124630x40 0x00 0xa0 0x92464 465# CHECK: mov w0, #-3466# CHECK: mov x0, #-3467# CHECK: mov w0, #-131073468# CHECK: mov x0, #-131073469 4700x20 0x00 0x80 0x724710x20 0x00 0x80 0xf24720x20 0x00 0xa0 0x724730x20 0x00 0xa0 0xf2474 475# CHECK: movk w0, #1476# CHECK: movk x0, #1477# CHECK: movk w0, #1, lsl #16478# CHECK: movk x0, #1, lsl #16479 480#==---------------------------------------------------------------------------==481# Conditionally set flags instructions482#==---------------------------------------------------------------------------==483 484  0x1f 0x00 0x00 0x31485# CHECK: cmn w0, #0486  0x1f 0xfc 0x03 0xb1487# CHECK: x0, #255488 489  0x23 0x08 0x42 0x3a490# CHECK: ccmn w1, #2, #3, eq491  0x23 0x08 0x42 0xba492# CHECK: ccmn x1, #2, #3, eq493  0x23 0x08 0x42 0x7a494# CHECK: ccmp w1, #2, #3, eq495  0x23 0x08 0x42 0xfa496# CHECK: ccmp x1, #2, #3, eq497 498  0x23 0x00 0x42 0x3a499# CHECK: ccmn w1, w2, #3, eq500  0x23 0x00 0x42 0xba501# CHECK: ccmn x1, x2, #3, eq502  0x23 0x00 0x42 0x7a503# CHECK: ccmp w1, w2, #3, eq504  0x23 0x00 0x42 0xfa505# CHECK: ccmp x1, x2, #3, eq506 507#==---------------------------------------------------------------------------==508# Conditional select instructions509#==---------------------------------------------------------------------------==510 511  0x41 0x00 0x83 0x1a512# CHECK: csel w1, w2, w3, eq513  0x41 0x00 0x83 0x9a514# CHECK: csel x1, x2, x3, eq515  0x41 0x04 0x83 0x1a516# CHECK: csinc w1, w2, w3, eq517  0x41 0x04 0x83 0x9a518# CHECK: csinc x1, x2, x3, eq519  0x41 0x00 0x83 0x5a520# CHECK: csinv w1, w2, w3, eq521  0x41 0x00 0x83 0xda522# CHECK: csinv x1, x2, x3, eq523  0x41 0x04 0x83 0x5a524# CHECK: csneg w1, w2, w3, eq525  0x41 0x04 0x83 0xda526# CHECK: csneg x1, x2, x3, eq527