629 lines · plain
1# RUN: llvm-mc %s -triple=csky -show-encoding -csky-no-aliases -mattr=+e2 -mattr=+2e3 \2# RUN: -mattr=+mp1e2 | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s3# RUN: llvm-mc -filetype=obj -triple=csky -mattr=+e2 -mattr=+2e3 -mattr=+mp1e2 < %s \4# RUN: | llvm-objdump --mattr=+e2 --mattr=+2e3 --mattr=+mp1e2 -M no-aliases -M abi-names -d -r - \5# RUN: | FileCheck -check-prefixes=CHECK-ASM-AND-OBJ,CHECK-OBJ %s6 7# CHECK-ASM-AND-OBJ: addi32 a0, sp, 28# CHECK-ASM: encoding: [0x0e,0xe4,0x01,0x00]9addi32 a0, sp, 210 11# CHECK-ASM-AND-OBJ: subi32 a0, sp, 212# CHECK-ASM: encoding: [0x0e,0xe4,0x01,0x10]13subi32 a0, sp, 214 15# CHECK-ASM-AND-OBJ: andi32 a0, sp, 216# CHECK-ASM: encoding: [0x0e,0xe4,0x02,0x20]17andi32 a0, sp, 218 19# CHECK-ASM-AND-OBJ: andni32 a0, sp, 220# CHECK-ASM: encoding: [0x0e,0xe4,0x02,0x30]21andni32 a0, sp, 222 23# CHECK-ASM-AND-OBJ: xori32 a0, sp, 224# CHECK-ASM: encoding: [0x0e,0xe4,0x02,0x40]25xori32 a0, sp, 226 27# CHECK-ASM-AND-OBJ: lsli32 a0, sp, 228# CHECK-ASM: encoding: [0x4e,0xc4,0x20,0x48]29lsli32 a0, sp, 230 31# CHECK-ASM-AND-OBJ: lsri32 a0, sp, 232# CHECK-ASM: encoding: [0x4e,0xc4,0x40,0x48]33lsri32 a0, sp, 234 35# CHECK-ASM-AND-OBJ: asri32 a0, sp, 236# CHECK-ASM: encoding: [0x4e,0xc4,0x80,0x48]37asri32 a0, sp, 238 39# CHECK-ASM-AND-OBJ: ori32 a0, sp, 240# CHECK-ASM: encoding: [0x0e,0xec,0x02,0x00]41ori32 a0, sp, 242 43# CHECK-ASM-AND-OBJ: rotli32 a0, sp, 244# CHECK-ASM: encoding: [0x4e,0xc4,0x00,0x49]45rotli32 a0, sp, 246 47# CHECK-ASM-AND-OBJ: incf32 a0, sp, 248# CHECK-ASM: encoding: [0x0e,0xc4,0x22,0x0c]49incf32 a0, sp, 250 51# CHECK-ASM-AND-OBJ: inct32 a0, sp, 252# CHECK-ASM: encoding: [0x0e,0xc4,0x42,0x0c]53inct32 a0, sp, 254 55# CHECK-ASM-AND-OBJ: decf32 a0, sp, 256# CHECK-ASM: encoding: [0x0e,0xc4,0x82,0x0c]57decf32 a0, sp, 258 59# CHECK-ASM-AND-OBJ: dect32 a0, sp, 260# CHECK-ASM: encoding: [0x0e,0xc4,0x02,0x0d]61dect32 a0, sp, 262 63# CHECK-ASM-AND-OBJ: decgt32 a0, sp, 264# CHECK-ASM: encoding: [0x4e,0xc4,0x20,0x10]65decgt32 a0, sp, 266 67# CHECK-ASM-AND-OBJ: declt32 a0, sp, 268# CHECK-ASM: encoding: [0x4e,0xc4,0x40,0x10]69declt32 a0, sp, 270 71# CHECK-ASM-AND-OBJ: decne32 a0, sp, 272# CHECK-ASM: encoding: [0x4e,0xc4,0x80,0x10]73decne32 a0, sp, 274 75# CHECK-ASM-AND-OBJ: btsti32 a0, 276# CHECK-ASM: encoding: [0x40,0xc4,0x80,0x28]77btsti32 a0, 278 79# CHECK-ASM-AND-OBJ: bclri32 a0, sp, 280# CHECK-ASM: encoding: [0x4e,0xc4,0x20,0x28]81bclri32 a0, sp, 282 83# CHECK-ASM-AND-OBJ: bseti32 a0, sp, 284# CHECK-ASM: encoding: [0x4e,0xc4,0x40,0x28]85bseti32 a0, sp, 286 87# CHECK-ASM-AND-OBJ: cmpnei32 a0, 288# CHECK-ASM: encoding: [0x40,0xeb,0x02,0x00]89cmpnei32 a0, 290 91# CHECK-ASM-AND-OBJ: cmphsi32 a0, 292# CHECK-ASM: encoding: [0x00,0xeb,0x01,0x00]93cmphsi32 a0, 294 95# CHECK-ASM-AND-OBJ: cmplti32 a0, 296# CHECK-ASM: encoding: [0x20,0xeb,0x01,0x00]97cmplti32 a0, 298 99# CHECK-ASM-AND-OBJ: movi32 a0, 2100# CHECK-ASM: encoding: [0x00,0xea,0x02,0x00]101movi32 a0, 2102 103# CHECK-ASM-AND-OBJ: movih32 a0, 2104# CHECK-ASM: encoding: [0x20,0xea,0x02,0x00]105movih32 a0, 2106 107# CHECK-ASM-AND-OBJ: addu32 a3, l0, l1108# CHECK-ASM: encoding: [0xa4,0xc4,0x23,0x00]109addu32 a3, l0, l1110 111# CHECK-ASM-AND-OBJ: subu32 a3, l0, l1112# CHECK-ASM: encoding: [0xa4,0xc4,0x83,0x00]113subu32 a3, l0, l1114 115# CHECK-ASM-AND-OBJ: and32 a3, l0, l1116# CHECK-ASM: encoding: [0xa4,0xc4,0x23,0x20]117and32 a3, l0, l1118 119# CHECK-ASM-AND-OBJ: andn32 a3, l0, l1120# CHECK-ASM: encoding: [0xa4,0xc4,0x43,0x20]121andn32 a3, l0, l1122 123# CHECK-ASM-AND-OBJ: or32 a3, l0, l1124# CHECK-ASM: encoding: [0xa4,0xc4,0x23,0x24]125or32 a3, l0, l1126 127# CHECK-ASM-AND-OBJ: xor32 a3, l0, l1128# CHECK-ASM: encoding: [0xa4,0xc4,0x43,0x24]129xor32 a3, l0, l1130 131# CHECK-ASM-AND-OBJ: nor32 a3, l0, l1132# CHECK-ASM: encoding: [0xa4,0xc4,0x83,0x24]133nor32 a3, l0, l1134 135# CHECK-ASM-AND-OBJ: lsl32 a3, l0, l1136# CHECK-ASM: encoding: [0xa4,0xc4,0x23,0x40]137lsl32 a3, l0, l1138 139# CHECK-ASM-AND-OBJ: rotl32 a3, l0, l1140# CHECK-ASM: encoding: [0xa4,0xc4,0x03,0x41]141rotl32 a3, l0, l1142 143# CHECK-ASM-AND-OBJ: lsr32 a3, l0, l1144# CHECK-ASM: encoding: [0xa4,0xc4,0x43,0x40]145lsr32 a3, l0, l1146 147# CHECK-ASM-AND-OBJ: asr32 a3, l0, l1148# CHECK-ASM: encoding: [0xa4,0xc4,0x83,0x40]149asr32 a3, l0, l1150 151# CHECK-ASM-AND-OBJ: lslc32 a0, sp, 2152# CHECK-ASM: encoding: [0x2e,0xc4,0x20,0x4c]153lslc32 a0, sp, 2154 155# CHECK-ASM-AND-OBJ: lsrc32 a0, sp, 2156# CHECK-ASM: encoding: [0x2e,0xc4,0x40,0x4c]157lsrc32 a0, sp, 2158 159# CHECK-ASM-AND-OBJ: asrc32 a0, sp, 2160# CHECK-ASM: encoding: [0x2e,0xc4,0x80,0x4c]161asrc32 a0, sp, 2162 163# CHECK-ASM-AND-OBJ: xsr32 a0, sp, 2164# CHECK-ASM: encoding: [0x2e,0xc4,0x00,0x4d]165xsr32 a0, sp, 2166 167# CHECK-ASM-AND-OBJ: bmaski32 a3, 17168# CHECK-ASM: encoding: [0x00,0xc6,0x23,0x50]169bmaski32 a3, 17170 171# CHECK-ASM-AND-OBJ: mult32 a3, l0, l1172# CHECK-ASM: encoding: [0xa4,0xc4,0x23,0x84]173mult32 a3, l0, l1174 175# CHECK-ASM-AND-OBJ: divs32 a3, l0, l1176# CHECK-ASM: encoding: [0xa4,0xc4,0x43,0x80]177divs32 a3, l0, l1178 179# CHECK-ASM-AND-OBJ: divu32 a3, l0, l1180# CHECK-ASM: encoding: [0xa4,0xc4,0x23,0x80]181divu32 a3, l0, l1182 183# CHECK-ASM-AND-OBJ: ixh32 a3, l0, l1184# CHECK-ASM: encoding: [0xa4,0xc4,0x23,0x08]185ixh32 a3, l0, l1186 187# CHECK-ASM-AND-OBJ: ixw32 a3, l0, l1188# CHECK-ASM: encoding: [0xa4,0xc4,0x43,0x08]189ixw32 a3, l0, l1190 191# CHECK-ASM-AND-OBJ: ixd32 a3, l0, l1192# CHECK-ASM: encoding: [0xa4,0xc4,0x83,0x08]193ixd32 a3, l0, l1194 195# CHECK-ASM-AND-OBJ: addc32 a3, l0, l1196# CHECK-ASM: encoding: [0xa4,0xc4,0x43,0x00]197addc32 a3, l0, l1198 199# CHECK-ASM-AND-OBJ: subc32 a3, l0, l1200# CHECK-ASM: encoding: [0xa4,0xc4,0x03,0x01]201subc32 a3, l0, l1202 203# CHECK-OBJ: ld32.b a0, (sp, 0x2)204# CHECK-ASM: ld32.b a0, (sp, 2)205# CHECK-ASM: encoding: [0x0e,0xd8,0x02,0x00]206ld32.b a0, (sp, 2)207 208# CHECK-OBJ: ld32.bs a0, (sp, 0x2)209# CHECK-ASM: ld32.bs a0, (sp, 2)210# CHECK-ASM: encoding: [0x0e,0xd8,0x02,0x40]211ld32.bs a0, (sp, 2)212 213# CHECK-OBJ: ld32.h a0, (sp, 0x2)214# CHECK-ASM: ld32.h a0, (sp, 2)215# CHECK-ASM: encoding: [0x0e,0xd8,0x01,0x10]216ld32.h a0, (sp, 2)217 218# CHECK-OBJ: ld32.hs a0, (sp, 0x2)219# CHECK-ASM: ld32.hs a0, (sp, 2)220# CHECK-ASM: encoding: [0x0e,0xd8,0x01,0x50]221ld32.hs a0, (sp, 2)222 223# CHECK-OBJ: ld32.w a0, (sp, 0x4)224# CHECK-ASM: ld32.w a0, (sp, 4)225# CHECK-ASM: encoding: [0x0e,0xd8,0x01,0x20]226ld32.w a0, (sp, 4)227 228# CHECK-ASM-AND-OBJ: ldr32.b a0, (sp, l1 << 2)229# CHECK-ASM: encoding: [0xae,0xd0,0x80,0x00]230ldr32.b a0, (sp, l1 << 2)231 232# CHECK-OBJ: ldex32.w a0, (sp, 0x4)233# CHECK-ASM: ldex32.w a0, (sp, 4)234# CHECK-ASM: encoding: [0x0e,0xd8,0x01,0x70]235ldex32.w a0, (sp, 4)236 237# CHECK-ASM-AND-OBJ: ldr32.bs a0, (sp, l1 << 2)238# CHECK-ASM: encoding: [0xae,0xd0,0x80,0x10]239ldr32.bs a0, (sp, l1 << 2)240 241# CHECK-ASM-AND-OBJ: ldr32.h a0, (sp, l1 << 3)242# CHECK-ASM: encoding: [0xae,0xd0,0x00,0x05]243ldr32.h a0, (sp, l1 << 3)244 245# CHECK-ASM-AND-OBJ: ldr32.hs a0, (sp, l1 << 3)246# CHECK-ASM: encoding: [0xae,0xd0,0x00,0x15]247ldr32.hs a0, (sp, l1 << 3)248 249# CHECK-ASM-AND-OBJ: ldr32.w a0, (sp, l1 << 3)250# CHECK-ASM: encoding: [0xae,0xd0,0x00,0x09]251ldr32.w a0, (sp, l1 << 3)252 253# CHECK-OBJ: st32.b a0, (sp, 0x2)254# CHECK-ASM: st32.b a0, (sp, 2)255# CHECK-ASM: encoding: [0x0e,0xdc,0x02,0x00]256st32.b a0, (sp, 2)257 258# CHECK-OBJ: st32.h a0, (sp, 0x2)259# CHECK-ASM: st32.h a0, (sp, 2)260# CHECK-ASM: encoding: [0x0e,0xdc,0x01,0x10]261st32.h a0, (sp, 2)262 263# CHECK-OBJ: st32.w a0, (sp, 0x4)264# CHECK-ASM: st32.w a0, (sp, 4)265# CHECK-ASM: encoding: [0x0e,0xdc,0x01,0x20]266st32.w a0, (sp, 4)267 268# CHECK-OBJ: stex32.w a0, (sp, 0x4)269# CHECK-ASM: stex32.w a0, (sp, 4)270# CHECK-ASM: encoding: [0x0e,0xdc,0x01,0x70]271stex32.w a0, (sp, 4)272 273# CHECK-ASM-AND-OBJ: str32.b a0, (sp, l1 << 2)274# CHECK-ASM: encoding: [0xae,0xd4,0x80,0x00]275str32.b a0, (sp, l1 << 2)276 277# CHECK-ASM-AND-OBJ: str32.h a0, (sp, l1 << 3)278# CHECK-ASM: encoding: [0xae,0xd4,0x00,0x05]279str32.h a0, (sp, l1 << 3)280 281# CHECK-ASM-AND-OBJ: str32.w a0, (sp, l1 << 3)282# CHECK-ASM: encoding: [0xae,0xd4,0x00,0x09]283str32.w a0, (sp, l1 << 3)284 285# CHECK-ASM-AND-OBJ: ldm32 a1-a2, (a0)286# CHECK-ASM: encoding: [0x20,0xd0,0x21,0x1c]287ldm32 a1-a2, (a0)288 289# CHECK-ASM-AND-OBJ: stm32 a1-a2, (a0)290# CHECK-ASM: encoding: [0x20,0xd4,0x21,0x1c]291stm32 a1-a2, (a0)292 293# CHECK-ASM-AND-OBJ: ldm32 l0-l3, (a0)294# CHECK-ASM: encoding: [0x80,0xd0,0x23,0x1c]295ldq32 r4-r7, (a0)296 297# CHECK-ASM-AND-OBJ: stm32 l0-l3, (a0)298# CHECK-ASM: encoding: [0x80,0xd4,0x23,0x1c]299stq32 r4-r7, (a0)300 301# CHECK-ASM-AND-OBJ: brev32 a3, l0302# CHECK-ASM: encoding: [0x04,0xc4,0x03,0x62]303brev32 a3, l0304 305# CHECK-ASM-AND-OBJ: abs32 a3, l0306# CHECK-ASM: encoding: [0x04,0xc4,0x03,0x02]307abs32 a3, l0308 309# CHECK-ASM-AND-OBJ: bgenr32 a3, l0310# CHECK-ASM: encoding: [0x04,0xc4,0x43,0x50]311bgenr32 a3, l0312 313# CHECK-ASM-AND-OBJ: revb32 a3, l0314# CHECK-ASM: encoding: [0x04,0xc4,0x83,0x60]315revb32 a3, l0316 317# CHECK-ASM-AND-OBJ: revh32 a3, l0318# CHECK-ASM: encoding: [0x04,0xc4,0x03,0x61]319revh32 a3, l0320 321# CHECK-ASM-AND-OBJ: ff0.32 a3, l0322# CHECK-ASM: encoding: [0x04,0xc4,0x23,0x7c]323ff0.32 a3, l0324 325# CHECK-ASM-AND-OBJ: ff1.32 a3, l0326# CHECK-ASM: encoding: [0x04,0xc4,0x43,0x7c]327ff1.32 a3, l0328 329# CHECK-ASM-AND-OBJ: xtrb0.32 a3, l0330# CHECK-ASM: encoding: [0x04,0xc4,0x23,0x70]331xtrb0.32 a3, l0332 333# CHECK-ASM-AND-OBJ: xtrb1.32 a3, l0334# CHECK-ASM: encoding: [0x04,0xc4,0x43,0x70]335xtrb1.32 a3, l0336 337# CHECK-ASM-AND-OBJ: xtrb2.32 a3, l0338# CHECK-ASM: encoding: [0x04,0xc4,0x83,0x70]339xtrb2.32 a3, l0340 341# CHECK-ASM-AND-OBJ: xtrb3.32 a3, l0342# CHECK-ASM: encoding: [0x04,0xc4,0x03,0x71]343xtrb3.32 a3, l0344 345# CHECK-ASM-AND-OBJ: mvc32 a3346# CHECK-ASM: encoding: [0x00,0xc4,0x03,0x05]347mvc32 a3348 349# CHECK-ASM-AND-OBJ: mvcv32 a3350# CHECK-ASM: encoding: [0x00,0xc4,0x03,0x06]351mvcv32 a3352 353# CHECK-ASM-AND-OBJ: cmpne32 a3, l0354# CHECK-ASM: encoding: [0x83,0xc4,0x80,0x04]355cmpne32 a3, l0356 357# CHECK-ASM-AND-OBJ: cmphs32 a3, l0358# CHECK-ASM: encoding: [0x83,0xc4,0x20,0x04]359cmphs32 a3, l0360 361# CHECK-ASM-AND-OBJ: cmplt32 a3, l0362# CHECK-ASM: encoding: [0x83,0xc4,0x40,0x04]363cmplt32 a3, l0364 365# CHECK-ASM-AND-OBJ: zext32 a3, l0, 7, 0366# CHECK-ASM: encoding: [0x04,0xc4,0xe3,0x54]367zext32 a3, l0, 7, 0368 369# CHECK-ASM-AND-OBJ: sext32 a3, l0, 7, 0370# CHECK-ASM: encoding: [0x04,0xc4,0xe3,0x58]371sext32 a3, l0, 7, 0372 373# CHECK-ASM-AND-OBJ: ldm32 l1-l3, (a0)374# CHECK-ASM: encoding: [0xa0,0xd0,0x22,0x1c]375ldm32 r5-r7, (a0)376 377# CHECK-ASM-AND-OBJ: stm32 l1-l3, (a0)378# CHECK-ASM: encoding: [0xa0,0xd4,0x22,0x1c]379stm32 r5-r7, (a0)380 381# CHECK-ASM-AND-OBJ: setc32382# CHECK-ASM: encoding: [0x00,0xc4,0x20,0x04]383setc32384 385# CHECK-ASM-AND-OBJ: clrc32386# CHECK-ASM: encoding: [0x00,0xc4,0x80,0x04]387clrc32388 389# CHECK-ASM-AND-OBJ: tst32 a3, l0390# CHECK-ASM: encoding: [0x83,0xc4,0x80,0x20]391tst32 a3, l0392 393# CHECK-ASM-AND-OBJ: tstnbz32 a3394# CHECK-ASM: encoding: [0x03,0xc4,0x00,0x21]395tstnbz32 a3396 397# CHECK-ASM-AND-OBJ: clrf32 a3398# CHECK-ASM: encoding: [0x60,0xc4,0x20,0x2c]399clrf32 a3400 401# CHECK-ASM-AND-OBJ: clrt32 a3402# CHECK-ASM: encoding: [0x60,0xc4,0x40,0x2c]403clrt32 a3404 405# CHECK-ASM-AND-OBJ: bar.brwarw406# CHECK-ASM: encoding: [0x00,0xc0,0x2f,0x84]407bar.brwarw408 409# CHECK-ASM-AND-OBJ: bar.brwarws410# CHECK-ASM: encoding: [0x00,0xc2,0x2f,0x84]411bar.brwarws412 413# CHECK-ASM-AND-OBJ: bar.brarw414# CHECK-ASM: encoding: [0x00,0xc0,0x27,0x84]415bar.brarw416 417# CHECK-ASM-AND-OBJ: bar.brarws418# CHECK-ASM: encoding: [0x00,0xc2,0x27,0x84]419bar.brarws420 421# CHECK-ASM-AND-OBJ: bar.brwaw422# CHECK-ASM: encoding: [0x00,0xc0,0x2e,0x84]423bar.brwaw424 425# CHECK-ASM-AND-OBJ: bar.brwaws426# CHECK-ASM: encoding: [0x00,0xc2,0x2e,0x84]427bar.brwaws428 429# CHECK-ASM-AND-OBJ: bar.brar430# CHECK-ASM: encoding: [0x00,0xc0,0x25,0x84]431bar.brar432 433# CHECK-ASM-AND-OBJ: bar.brars434# CHECK-ASM: encoding: [0x00,0xc2,0x25,0x84]435bar.brars436 437# CHECK-ASM-AND-OBJ: bar.bwaw438# CHECK-ASM: encoding: [0x00,0xc0,0x2a,0x84]439bar.bwaw440 441# CHECK-ASM-AND-OBJ: bar.bwaws442# CHECK-ASM: encoding: [0x00,0xc2,0x2a,0x84]443bar.bwaws444 445# CHECK-ASM-AND-OBJ: sync32446# CHECK-ASM: encoding: [0x00,0xc0,0x20,0x04]447sync32448 449# CHECK-ASM-AND-OBJ: sync32.s450# CHECK-ASM: encoding: [0x00,0xc2,0x20,0x04]451sync32.s452 453# CHECK-ASM-AND-OBJ: sync32.i454# CHECK-ASM: encoding: [0x20,0xc0,0x20,0x04]455sync32.i456 457# CHECK-ASM-AND-OBJ: sync32.is458# CHECK-ASM: encoding: [0x20,0xc2,0x20,0x04]459sync32.is460 461# CHECK-ASM-AND-OBJ: rfi32462# CHECK-ASM: encoding: [0x00,0xc0,0x20,0x44]463rfi32464 465# CHECK-ASM-AND-OBJ: stop32466# CHECK-ASM: encoding: [0x00,0xc0,0x20,0x48]467stop32468 469# CHECK-ASM-AND-OBJ: wait32470# CHECK-ASM: encoding: [0x00,0xc0,0x20,0x4c]471wait32472 473# CHECK-ASM-AND-OBJ: doze32474# CHECK-ASM: encoding: [0x00,0xc0,0x20,0x50]475doze32476 477# CHECK-ASM: br32 .L.test478# CHECK-ASM: encoding: [A,0xe8'A',A,A]479.L.test:480br32 .L.test481 482# CHECK-ASM: bt32 .L.test2483# CHECK-ASM: encoding: [0x60'A',0xe8'A',A,A]484.L.test2:485bt32 .L.test2486 487# CHECK-ASM: bf32 .L.test3488# CHECK-ASM: encoding: [0x40'A',0xe8'A',A,A]489.L.test3:490bf32 .L.test3491 492# CHECK-ASM: bez32 a0, .L.test4493# CHECK-ASM: encoding: [A,0xe9'A',A,A]494.L.test4:495bez32 a0, .L.test4496 497# CHECK-ASM: bnez32 a0, .L.test5498# CHECK-ASM: encoding: [0x20'A',0xe9'A',A,A]499.L.test5:500bnez32 a0, .L.test5501 502# CHECK-ASM: bhz32 a0, .L.test6503# CHECK-ASM: encoding: [0x40'A',0xe9'A',A,A]504.L.test6:505bhz32 a0, .L.test6506 507# CHECK-ASM: blsz32 a0, .L.test7508# CHECK-ASM: encoding: [0x60'A',0xe9'A',A,A]509.L.test7:510blsz32 a0, .L.test7511 512# CHECK-ASM: blz32 a0, .L.test8513# CHECK-ASM: encoding: [0x80'A',0xe9'A',A,A]514.L.test8:515blz32 a0, .L.test8516 517# CHECK-ASM: bhsz32 a0, .L.test9518# CHECK-ASM: encoding: [0xa0'A',0xe9'A',A,A]519.L.test9:520bhsz32 a0, .L.test9521 522# CHECK-ASM: jmp32 a3523# CHECK-ASM: encoding: [0xc3,0xe8,0x00,0x00]524jmp32 a3525 526# CHECK-ASM: jmpi32 [.L.test10]527# CHECK-ASM: encoding: [0xc0'A',0xea'A',A,A]528.L.test10:529jmpi32 [.L.test10]530 531# CHECK-ASM: bsr32 .L.test11532# CHECK-ASM: encoding: [A,0xe0'A',A,A]533.L.test11:534bsr32 .L.test11535 536# CHECK-ASM: jsr32 a3537# CHECK-ASM: encoding: [0xe3,0xe8,0x00,0x00]538jsr32 a3539 540# CHECK-ASM: jsri32 [.L.test12]541# CHECK-ASM: encoding: [0xe0'A',0xea'A',A,A]542.L.test12:543jsri32 [.L.test12]544 545# CHECK-ASM: grs32 a0, .L.test13546# CHECK-ASM: encoding: [0x0c'A',0xcc'A',A,A]547.L.test13:548grs32 a0, .L.test13549 550# CHECK-ASM: lrw32 a0, [.L.test14]551# CHECK-ASM: encoding: [0x80'A',0xea'A',A,A]552.L.test14:553lrw32 a0, [.L.test14]554 555# RUN: not llvm-mc -triple csky -mattr=+e2 -mattr=+2e3 --defsym=ERR=1 < %s 2>&1 | FileCheck %s556 557.ifdef ERR558 559# uimm12/oimm12/nimm12560addi32 a0, a0, 0 # CHECK: :[[#@LINE]]:16: error: immediate must be an integer in the range [1, 4096]561subi32 a0, a0, 4097 # CHECK: :[[#@LINE]]:16: error: immediate must be an integer in the range [1, 4096]562andi32 a0, a0, 4096 # CHECK: :[[#@LINE]]:16: error: immediate must be an integer in the range [0, 4095]563andni32 a0, a0, 4096 # CHECK: :[[#@LINE]]:17: error: immediate must be an integer in the range [0, 4095]564xori32 a0, a0, 4096 # CHECK: :[[#@LINE]]:16: error: immediate must be an integer in the range [0, 4095]565 566 567# uimm5568lsli32 a0, a0, 32 # CHECK: :[[#@LINE]]:16: error: immediate must be an integer in the range [0, 31]569lsri32 a0, a0, 32 # CHECK: :[[#@LINE]]:16: error: immediate must be an integer in the range [0, 31]570asri32 a0, a0, 32 # CHECK: :[[#@LINE]]:16: error: immediate must be an integer in the range [0, 31]571rotli32 a0, a0, 32 # CHECK: :[[@LINE]]:17: error: immediate must be an integer in the range [0, 31]572 573# uimm12(shift0)/uimm12_1/uimm12_2574ld32.b a0, (a0, -1) # CHECK: :[[@LINE]]:17: error: immediate must be an integer in the range [0, 4095]575ld32.h a0, (a0, 4095) # CHECK: :[[@LINE]]:17: error: immediate must be a multiple of 2 bytes in the range [0, 4094]576ld32.h a0, (a0, 4093) # CHECK: :[[@LINE]]:17: error: immediate must be a multiple of 2 bytes in the range [0, 4094]577ld32.w a0, (a0, 4093) # CHECK: :[[@LINE]]:17: error: immediate must be a multiple of 4 bytes in the range [0, 4092]578ld32.w a0, (a0, 2) # CHECK: :[[@LINE]]:17: error: immediate must be a multiple of 4 bytes in the range [0, 4092]579ldr32.b a0, (a0, a1 << 4) # CHECK: :[[@LINE]]:24: error: immediate must be an integer in the range [0, 3]580ldr32.bs a0, (a0, a1 << 4) # CHECK: :[[@LINE]]:25: error: immediate must be an integer in the range [0, 3]581ldr32.h a0, (a0, a1 << -1) # CHECK: :[[@LINE]]:24: error: immediate must be an integer in the range [0, 3]582ldr32.hs a0, (a0, a1 << 4) # CHECK: :[[@LINE]]:25: error: immediate must be an integer in the range [0, 3]583ldr32.w a0, (a0, a1 << 4) # CHECK: :[[@LINE]]:24: error: immediate must be an integer in the range [0, 3]584 585st32.b a0, (a0, -1) # CHECK: :[[@LINE]]:17: error: immediate must be an integer in the range [0, 4095]586st32.h a0, (a0, 4095) # CHECK: :[[@LINE]]:17: error: immediate must be a multiple of 2 bytes in the range [0, 4094]587st32.h a0, (a0, 4093) # CHECK: :[[@LINE]]:17: error: immediate must be a multiple of 2 bytes in the range [0, 4094]588st32.w a0, (a0, 4093) # CHECK: :[[@LINE]]:17: error: immediate must be a multiple of 4 bytes in the range [0, 4092]589st32.w a0, (a0, 2) # CHECK: :[[@LINE]]:17: error: immediate must be a multiple of 4 bytes in the range [0, 4092]590 591str32.b a0, (a0, a1 << 4) # CHECK: :[[@LINE]]:24: error: immediate must be an integer in the range [0, 3]592str32.h a0, (a0, a1 << -1) # CHECK: :[[@LINE]]:24: error: immediate must be an integer in the range [0, 3]593str32.w a0, (a0, a1 << 4) # CHECK: :[[@LINE]]:24: error: immediate must be an integer in the range [0, 3]594 595# uimm16/oimm16596ori32 a0, a0, 0x10000 # CHECK: :[[@LINE]]:15: error: immediate must be an integer in the range [0, 65535]597cmpnei32 a0, 0x10000 # CHECK: :[[@LINE]]:14: error: immediate must be an integer in the range [0, 65535]598cmphsi32 a0, 0x10001 # CHECK: :[[@LINE]]:14: error: immediate must be an integer in the range [1, 65536]599cmplti32 a0, 0 # CHECK: :[[@LINE]]:14: error: immediate must be an integer in the range [1, 65536]600movi32 a0, 0x10000 # CHECK: :[[@LINE]]:12: error: immediate must be an integer in the range [0, 65535]601movih32 a0, 0x10000 # CHECK: :[[@LINE]]:13: error: immediate must be an integer in the range [0, 65535]602 603# Invalid mnemonics604subs t0, t2, t1 # CHECK: :[[#@LINE]]:1: error: unrecognized instruction mnemonic605nandi t0, t2, 0 # CHECK: :[[#@LINE]]:1: error: unrecognized instruction mnemonic606 607# Invalid register names608addi32 foo, sp, 10 # CHECK: :[[#@LINE]]:8: error: unknown operand609lsli32 a10, a2, 0x20 # CHECK: :[[#@LINE]]:8: error: unknown operand610asri32 x32, s0, s0 # CHECK: :[[#@LINE]]:8: error: unknown operand611 612# Invalid operand types613xori32 sp, 22, 220 # CHECK: :[[#@LINE]]:12: error: invalid operand for instruction614subu32 t0, t2, 1 # CHECK: :[[#@LINE]]:16: error: invalid operand for instruction615 616# Too many operands617subi32 t2, t3, 0x50, 0x60 # CHECK: :[[@LINE]]:22: error: invalid operand for instruction618 619# Too few operands620xori32 a0, a1 # CHECK: :[[#@LINE]]:1: error: too few operands for instruction621xor32 a0, a2 # CHECK: :[[#@LINE]]:1: error: too few operands for instruction622 623ldm32 a1-a33, (a1) # CHECK: :[[#@LINE]]:10: error: invalid register624stm32 a1-a33, (a1) # CHECK: :[[#@LINE]]:10: error: invalid register625 626ldq32 a1-a2, (a1) # CHECK: :[[#@LINE]]:1: error: Register sequence is not valid. 'r4-r7' expected627stq32 a1-a3, (a1) # CHECK: :[[#@LINE]]:1: error: Register sequence is not valid. 'r4-r7' expected628 629.endif