653 lines · plain
1# RUN: llvm-mc %s -triple=riscv32 -M no-aliases -show-encoding \2# RUN: | FileCheck -check-prefixes=CHECK-INST,CHECK-ENC %s3# RUN: llvm-mc -filetype=obj -triple riscv32 < %s \4# RUN: | llvm-objdump -d - \5# RUN: | FileCheck -check-prefix=CHECK-INST-ALIAS %s6#7# RUN: llvm-mc %s -triple=riscv64 -M no-aliases -show-encoding \8# RUN: | FileCheck -check-prefixes=CHECK-INST,CHECK-ENC %s9# RUN: llvm-mc -filetype=obj -triple riscv64 < %s \10# RUN: | llvm-objdump -d - \11# RUN: | FileCheck -check-prefix=CHECK-INST-ALIAS %s12 13##################################14# Hypervisor Trap Setup15##################################16 17# hstatus18# name19# CHECK-INST: csrrs t1, hstatus, zero20# CHECK-ENC: encoding: [0x73,0x23,0x00,0x60]21# CHECK-INST-ALIAS: csrr t1, hstatus22# uimm1223# CHECK-INST: csrrs t2, hstatus, zero24# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x60]25# CHECK-INST-ALIAS: csrr t2, hstatus26# name27csrrs t1, hstatus, zero28# uimm1229csrrs t2, 0x600, zero30 31# hedeleg32# name33# CHECK-INST: csrrs t1, hedeleg, zero34# CHECK-ENC: encoding: [0x73,0x23,0x20,0x60]35# CHECK-INST-ALIAS: csrr t1, hedeleg36# uimm1237# CHECK-INST: csrrs t2, hedeleg, zero38# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x60]39# CHECK-INST-ALIAS: csrr t2, hedeleg40# name41csrrs t1, hedeleg, zero42# uimm1243csrrs t2, 0x602, zero44 45# hideleg46# name47# CHECK-INST: csrrs t1, hideleg, zero48# CHECK-ENC: encoding: [0x73,0x23,0x30,0x60]49# CHECK-INST-ALIAS: csrr t1, hideleg50# uimm1251# CHECK-INST: csrrs t2, hideleg, zero52# CHECK-ENC: encoding: [0xf3,0x23,0x30,0x60]53# CHECK-INST-ALIAS: csrr t2, hideleg54# name55csrrs t1, hideleg, zero56# uimm1257csrrs t2, 0x603, zero58 59# hie60# name61# CHECK-INST: csrrs t1, hie, zero62# CHECK-ENC: encoding: [0x73,0x23,0x40,0x60]63# CHECK-INST-ALIAS: csrr t1, hie64# uimm1265# CHECK-INST: csrrs t2, hie, zero66# CHECK-ENC: encoding: [0xf3,0x23,0x40,0x60]67# CHECK-INST-ALIAS: csrr t2, hie68# name69csrrs t1, hie, zero70# uimm1271csrrs t2, 0x604, zero72 73# hcounteren74# name75# CHECK-INST: csrrs t1, hcounteren, zero76# CHECK-ENC: encoding: [0x73,0x23,0x60,0x60]77# CHECK-INST-ALIAS: csrr t1, hcounteren78# uimm1279# CHECK-INST: csrrs t2, hcounteren, zero80# CHECK-ENC: encoding: [0xf3,0x23,0x60,0x60]81# CHECK-INST-ALIAS: csrr t2, hcounteren82# name83csrrs t1, hcounteren, zero84# uimm1285csrrs t2, 0x606, zero86 87# hgeie88# name89# CHECK-INST: csrrs t1, hgeie, zero90# CHECK-ENC: encoding: [0x73,0x23,0x70,0x60]91# CHECK-INST-ALIAS: csrr t1, hgeie92# uimm1293# CHECK-INST: csrrs t2, hgeie, zero94# CHECK-ENC: encoding: [0xf3,0x23,0x70,0x60]95# CHECK-INST-ALIAS: csrr t2, hgeie96# name97csrrs t1, hgeie, zero98# uimm1299csrrs t2, 0x607, zero100 101##################################102# Hypervisor Trap Handling103##################################104 105# htval106# name107# CHECK-INST: csrrs t1, htval, zero108# CHECK-ENC: encoding: [0x73,0x23,0x30,0x64]109# CHECK-INST-ALIAS: csrr t1, htval110# uimm12111# CHECK-INST: csrrs t2, htval, zero112# CHECK-ENC: encoding: [0xf3,0x23,0x30,0x64]113# CHECK-INST-ALIAS: csrr t2, htval114# name115csrrs t1, htval, zero116# uimm12117csrrs t2, 0x643, zero118 119# hip120# name121# CHECK-INST: csrrs t1, hip, zero122# CHECK-ENC: encoding: [0x73,0x23,0x40,0x64]123# CHECK-INST-ALIAS: csrr t1, hip124# uimm12125# CHECK-INST: csrrs t2, hip, zero126# CHECK-ENC: encoding: [0xf3,0x23,0x40,0x64]127# CHECK-INST-ALIAS: csrr t2, hip128# name129csrrs t1, hip, zero130# uimm12131csrrs t2, 0x644, zero132 133# hvip134# name135# CHECK-INST: csrrs t1, hvip, zero136# CHECK-ENC: encoding: [0x73,0x23,0x50,0x64]137# CHECK-INST-ALIAS: csrr t1, hvip138# uimm12139# CHECK-INST: csrrs t2, hvip, zero140# CHECK-ENC: encoding: [0xf3,0x23,0x50,0x64]141# CHECK-INST-ALIAS: csrr t2, hvip142# name143csrrs t1, hvip, zero144# uimm12145csrrs t2, 0x645, zero146 147# htinst148# name149# CHECK-INST: csrrs t1, htinst, zero150# CHECK-ENC: encoding: [0x73,0x23,0xa0,0x64]151# CHECK-INST-ALIAS: csrr t1, htinst152# uimm12153# CHECK-INST: csrrs t2, htinst, zero154# CHECK-ENC: encoding: [0xf3,0x23,0xa0,0x64]155# CHECK-INST-ALIAS: csrr t2, htinst156# name157csrrs t1, htinst, zero158# uimm12159csrrs t2, 0x64A, zero160 161# hgeip162# name163# CHECK-INST: csrrs t1, hgeip, zero164# CHECK-ENC: encoding: [0x73,0x23,0x20,0xe1]165# CHECK-INST-ALIAS: csrr t1, hgeip166# uimm12167# CHECK-INST: csrrs t2, hgeip, zero168# CHECK-ENC: encoding: [0xf3,0x23,0x20,0xe1]169# CHECK-INST-ALIAS: csrr t2, hgeip170# name171csrrs t1, hgeip, zero172# uimm12173csrrs t2, 0xE12, zero174 175##################################176# Hypervisor Configuration177##################################178 179# henvcfg180# name181# CHECK-INST: csrrs t1, henvcfg, zero182# CHECK-ENC: encoding: [0x73,0x23,0xa0,0x60]183# CHECK-INST-ALIAS: csrr t1, henvcfg184# uimm12185# CHECK-INST: csrrs t2, henvcfg, zero186# CHECK-ENC: encoding: [0xf3,0x23,0xa0,0x60]187# CHECK-INST-ALIAS: csrr t2, henvcfg188# name189csrrs t1, henvcfg, zero190# uimm12191csrrs t2, 0x60A, zero192 193########################################194# Hypervisor Protection and Translation195########################################196 197# hgatp198# name199# CHECK-INST: csrrs t1, hgatp, zero200# CHECK-ENC: encoding: [0x73,0x23,0x00,0x68]201# CHECK-INST-ALIAS: csrr t1, hgatp202# uimm12203# CHECK-INST: csrrs t2, hgatp, zero204# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x68]205# CHECK-INST-ALIAS: csrr t2, hgatp206# name207csrrs t1, hgatp, zero208# uimm12209csrrs t2, 0x680, zero210 211##########################212# Debug/Trace Registers213##########################214 215# hcontext216# name217# CHECK-INST: csrrs t1, hcontext, zero218# CHECK-ENC: encoding: [0x73,0x23,0x80,0x6a]219# CHECK-INST-ALIAS: csrr t1, hcontext220# uimm12221# CHECK-INST: csrrs t2, hcontext, zero222# CHECK-ENC: encoding: [0xf3,0x23,0x80,0x6a]223# CHECK-INST-ALIAS: csrr t2, hcontext224# name225csrrs t1, hcontext, zero226# uimm12227csrrs t2, 0x6A8, zero228 229####################################################230# Hypervisor Counter/Timer Virtualization Registers231####################################################232 233# htimedelta234# name235# CHECK-INST: csrrs t1, htimedelta, zero236# CHECK-ENC: encoding: [0x73,0x23,0x50,0x60]237# CHECK-INST-ALIAS: csrr t1, htimedelta238# uimm12239# CHECK-INST: csrrs t2, htimedelta, zero240# CHECK-ENC: encoding: [0xf3,0x23,0x50,0x60]241# CHECK-INST-ALIAS: csrr t2, htimedelta242# name243csrrs t1, htimedelta, zero244# uimm12245csrrs t2, 0x605, zero246 247################################248# Virtual Supervisor Registers249################################250 251# vsstatus252# name253# CHECK-INST: csrrs t1, vsstatus, zero254# CHECK-ENC: encoding: [0x73,0x23,0x00,0x20]255# CHECK-INST-ALIAS: csrr t1, vsstatus256# uimm12257# CHECK-INST: csrrs t2, vsstatus, zero258# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x20]259# CHECK-INST-ALIAS: csrr t2, vsstatus260# name261csrrs t1, vsstatus, zero262# uimm12263csrrs t2, 0x200, zero264 265# vsie266# name267# CHECK-INST: csrrs t1, vsie, zero268# CHECK-ENC: encoding: [0x73,0x23,0x40,0x20]269# CHECK-INST-ALIAS: csrr t1, vsie270# uimm12271# CHECK-INST: csrrs t2, vsie, zero272# CHECK-ENC: encoding: [0xf3,0x23,0x40,0x20]273# CHECK-INST-ALIAS: csrr t2, vsie274# name275csrrs t1, vsie, zero276# uimm12277csrrs t2, 0x204, zero278 279# vstvec280# name281# CHECK-INST: csrrs t1, vstvec, zero282# CHECK-ENC: encoding: [0x73,0x23,0x50,0x20]283# CHECK-INST-ALIAS: csrr t1, vstvec284# uimm12285# CHECK-INST: csrrs t2, vstvec, zero286# CHECK-ENC: encoding: [0xf3,0x23,0x50,0x20]287# CHECK-INST-ALIAS: csrr t2, vstvec288# name289csrrs t1, vstvec, zero290# uimm12291csrrs t2, 0x205, zero292 293# vsscratch294# name295# CHECK-INST: csrrs t1, vsscratch, zero296# CHECK-ENC: encoding: [0x73,0x23,0x00,0x24]297# CHECK-INST-ALIAS: csrr t1, vsscratch298# uimm12299# CHECK-INST: csrrs t2, vsscratch, zero300# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x24]301# CHECK-INST-ALIAS: csrr t2, vsscratch302# name303csrrs t1, vsscratch, zero304# uimm12305csrrs t2, 0x240, zero306 307# vsepc308# name309# CHECK-INST: csrrs t1, vsepc, zero310# CHECK-ENC: encoding: [0x73,0x23,0x10,0x24]311# CHECK-INST-ALIAS: csrr t1, vsepc312# uimm12313# CHECK-INST: csrrs t2, vsepc, zero314# CHECK-ENC: encoding: [0xf3,0x23,0x10,0x24]315# CHECK-INST-ALIAS: csrr t2, vsepc316# name317csrrs t1, vsepc, zero318# uimm12319csrrs t2, 0x241, zero320 321# vscause322# name323# CHECK-INST: csrrs t1, vscause, zero324# CHECK-ENC: encoding: [0x73,0x23,0x20,0x24]325# CHECK-INST-ALIAS: csrr t1, vscause326# uimm12327# CHECK-INST: csrrs t2, vscause, zero328# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x24]329# CHECK-INST-ALIAS: csrr t2, vscause330# name331csrrs t1, vscause, zero332# uimm12333csrrs t2, 0x242, zero334 335# vstval336# name337# CHECK-INST: csrrs t1, vstval, zero338# CHECK-ENC: encoding: [0x73,0x23,0x30,0x24]339# CHECK-INST-ALIAS: csrr t1, vstval340# uimm12341# CHECK-INST: csrrs t2, vstval, zero342# CHECK-ENC: encoding: [0xf3,0x23,0x30,0x24]343# CHECK-INST-ALIAS: csrr t2, vstval344# name345csrrs t1, vstval, zero346# uimm12347csrrs t2, 0x243, zero348 349# vsip350# name351# CHECK-INST: csrrs t1, vsip, zero352# CHECK-ENC: encoding: [0x73,0x23,0x40,0x24]353# CHECK-INST-ALIAS: csrr t1, vsip354# uimm12355# CHECK-INST: csrrs t2, vsip, zero356# CHECK-ENC: encoding: [0xf3,0x23,0x40,0x24]357# CHECK-INST-ALIAS: csrr t2, vsip358# name359csrrs t1, vsip, zero360# uimm12361csrrs t2, 0x244, zero362 363# vstimecmp364# name365# CHECK-INST: csrrs t1, vstimecmp, zero366# CHECK-ENC: encoding: [0x73,0x23,0xd0,0x24]367# CHECK-INST-ALIAS: csrr t1, vstimecmp368# uimm12369# CHECK-INST: csrrs t2, vstimecmp, zero370# CHECK-ENC: encoding: [0xf3,0x23,0xd0,0x24]371# CHECK-INST-ALIAS: csrr t2, vstimecmp372# name373csrrs t1, vstimecmp, zero374# uimm12375csrrs t2, 0x24D, zero376 377# vsatp378# name379# CHECK-INST: csrrs t1, vsatp, zero380# CHECK-ENC: encoding: [0x73,0x23,0x00,0x28]381# CHECK-INST-ALIAS: csrr t1, vsatp382# uimm12383# CHECK-INST: csrrs t2, vsatp, zero384# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x28]385# CHECK-INST-ALIAS: csrr t2, vsatp386# name387csrrs t1, vsatp, zero388# uimm12389csrrs t2, 0x280, zero390 391#########################################392# State Enable Extension (Smstateen)393#########################################394 395# hstateen0396# name397# CHECK-INST: csrrs t1, hstateen0, zero398# CHECK-ENC: encoding: [0x73,0x23,0xc0,0x60]399# CHECK-INST-ALIAS: csrr t1, hstateen0400# uimm12401# CHECK-INST: csrrs t2, hstateen0, zero402# CHECK-ENC: encoding: [0xf3,0x23,0xc0,0x60]403# CHECK-INST-ALIAS: csrr t2, hstateen0404# name405csrrs t1, hstateen0, zero406# uimm12407csrrs t2, 0x60C, zero408 409# hstateen1410# name411# CHECK-INST: csrrs t1, hstateen1, zero412# CHECK-ENC: encoding: [0x73,0x23,0xd0,0x60]413# CHECK-INST-ALIAS: csrr t1, hstateen1414# uimm12415# CHECK-INST: csrrs t2, hstateen1, zero416# CHECK-ENC: encoding: [0xf3,0x23,0xd0,0x60]417# CHECK-INST-ALIAS: csrr t2, hstateen1418# name419csrrs t1, hstateen1, zero420# uimm12421csrrs t2, 0x60D, zero422 423# hstateen2424# name425# CHECK-INST: csrrs t1, hstateen2, zero426# CHECK-ENC: encoding: [0x73,0x23,0xe0,0x60]427# CHECK-INST-ALIAS: csrr t1, hstateen2428# uimm12429# CHECK-INST: csrrs t2, hstateen2, zero430# CHECK-ENC: encoding: [0xf3,0x23,0xe0,0x60]431# CHECK-INST-ALIAS: csrr t2, hstateen2432# name433csrrs t1, hstateen2, zero434# uimm12435csrrs t2, 0x60E, zero436 437# hstateen3438# name439# CHECK-INST: csrrs t1, hstateen3, zero440# CHECK-ENC: encoding: [0x73,0x23,0xf0,0x60]441# CHECK-INST-ALIAS: csrr t1, hstateen3442# uimm12443# CHECK-INST: csrrs t2, hstateen3, zero444# CHECK-ENC: encoding: [0xf3,0x23,0xf0,0x60]445# CHECK-INST-ALIAS: csrr t2, hstateen3446# name447csrrs t1, hstateen3, zero448# uimm12449csrrs t2, 0x60F, zero450 451#########################################452# Advanced Interrupt Architecture (Smaia and Ssaia)453#########################################454 455# hvien456# name457# CHECK-INST: csrrs t1, hvien, zero458# CHECK-ENC: encoding: [0x73,0x23,0x80,0x60]459# CHECK-INST-ALIAS: csrr t1, hvien460# uimm12461# CHECK-INST: csrrs t2, hvien, zero462# CHECK-ENC: encoding: [0xf3,0x23,0x80,0x60]463# CHECK-INST-ALIAS: csrr t2, hvien464# name465csrrs t1, hvien, zero466# uimm12467csrrs t2, 0x608, zero468 469# hvictl470# name471# CHECK-INST: csrrs t1, hvictl, zero472# CHECK-ENC: encoding: [0x73,0x23,0x90,0x60]473# CHECK-INST-ALIAS: csrr t1, hvictl474# uimm12475# CHECK-INST: csrrs t2, hvictl, zero476# CHECK-ENC: encoding: [0xf3,0x23,0x90,0x60]477# CHECK-INST-ALIAS: csrr t2, hvictl478# name479csrrs t1, hvictl, zero480# uimm12481csrrs t2, 0x609, zero482 483# hviprio1484# name485# CHECK-INST: csrrs t1, hviprio1, zero486# CHECK-ENC: encoding: [0x73,0x23,0x60,0x64]487# CHECK-INST-ALIAS: csrr t1, hviprio1488# uimm12489# CHECK-INST: csrrs t2, hviprio1, zero490# CHECK-ENC: encoding: [0xf3,0x23,0x60,0x64]491# CHECK-INST-ALIAS: csrr t2, hviprio1492# name493csrrs t1, hviprio1, zero494# uimm12495csrrs t2, 0x646, zero496 497# hviprio2498# name499# CHECK-INST: csrrs t1, hviprio2, zero500# CHECK-ENC: encoding: [0x73,0x23,0x70,0x64]501# CHECK-INST-ALIAS: csrr t1, hviprio2502# uimm12503# CHECK-INST: csrrs t2, hviprio2, zero504# CHECK-ENC: encoding: [0xf3,0x23,0x70,0x64]505# CHECK-INST-ALIAS: csrr t2, hviprio2506# name507csrrs t1, hviprio2, zero508# uimm12509csrrs t2, 0x647, zero510 511# vsiselect512# name513# CHECK-INST: csrrs t1, vsiselect, zero514# CHECK-ENC: encoding: [0x73,0x23,0x00,0x25]515# CHECK-INST-ALIAS: csrr t1, vsiselect516# uimm12517# CHECK-INST: csrrs t2, vsiselect, zero518# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x25]519# CHECK-INST-ALIAS: csrr t2, vsiselect520# name521csrrs t1, vsiselect, zero522# uimm12523csrrs t2, 0x250, zero524 525# vsireg526# name527# CHECK-INST: csrrs t1, vsireg, zero528# CHECK-ENC: encoding: [0x73,0x23,0x10,0x25]529# CHECK-INST-ALIAS: csrr t1, vsireg530# uimm12531# CHECK-INST: csrrs t2, vsireg, zero532# CHECK-ENC: encoding: [0xf3,0x23,0x10,0x25]533# CHECK-INST-ALIAS: csrr t2, vsireg534# name535csrrs t1, vsireg, zero536# uimm12537csrrs t2, 0x251, zero538 539# vsireg2540# name541# CHECK-INST: csrrs t1, vsireg2, zero542# CHECK-ENC: encoding: [0x73,0x23,0x20,0x25]543# CHECK-INST-ALIAS: csrr t1, vsireg2544# uimm12545# CHECK-INST: csrrs t2, vsireg2, zero546# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x25]547# CHECK-INST-ALIAS: csrr t2, vsireg2548# name549csrrs t1, vsireg2, zero550# uimm12551csrrs t2, 0x252, zero552 553# vsireg3554# name555# CHECK-INST: csrrs t1, vsireg3, zero556# CHECK-ENC: encoding: [0x73,0x23,0x30,0x25]557# CHECK-INST-ALIAS: csrr t1, vsireg3558# uimm12559# CHECK-INST: csrrs t2, vsireg3, zero560# CHECK-ENC: encoding: [0xf3,0x23,0x30,0x25]561# CHECK-INST-ALIAS: csrr t2, vsireg3562# name563csrrs t1, vsireg3, zero564# uimm12565csrrs t2, 0x253, zero566 567# vsireg4568# name569# CHECK-INST: csrrs t1, vsireg4, zero570# CHECK-ENC: encoding: [0x73,0x23,0x50,0x25]571# CHECK-INST-ALIAS: csrr t1, vsireg4572# uimm12573# CHECK-INST: csrrs t2, vsireg4, zero574# CHECK-ENC: encoding: [0xf3,0x23,0x50,0x25]575# CHECK-INST-ALIAS: csrr t2, vsireg4576# name577csrrs t1, vsireg4, zero578# uimm12579csrrs t2, 0x255, zero580 581# vsireg5582# name583# CHECK-INST: csrrs t1, vsireg5, zero584# CHECK-ENC: encoding: [0x73,0x23,0x60,0x25]585# CHECK-INST-ALIAS: csrr t1, vsireg5586# uimm12587# CHECK-INST: csrrs t2, vsireg5, zero588# CHECK-ENC: encoding: [0xf3,0x23,0x60,0x25]589# CHECK-INST-ALIAS: csrr t2, vsireg5590# name591csrrs t1, vsireg5, zero592# uimm12593csrrs t2, 0x256, zero594 595# vsireg6596# name597# CHECK-INST: csrrs t1, vsireg6, zero598# CHECK-ENC: encoding: [0x73,0x23,0x70,0x25]599# CHECK-INST-ALIAS: csrr t1, vsireg6600# uimm12601# CHECK-INST: csrrs t2, vsireg6, zero602# CHECK-ENC: encoding: [0xf3,0x23,0x70,0x25]603# CHECK-INST-ALIAS: csrr t2, vsireg6604# name605csrrs t1, vsireg6, zero606# uimm12607csrrs t2, 0x257, zero608 609# vstopei610# name611# CHECK-INST: csrrs t1, vstopei, zero612# CHECK-ENC: encoding: [0x73,0x23,0xc0,0x25]613# CHECK-INST-ALIAS: csrr t1, vstopei614# uimm12615# CHECK-INST: csrrs t2, vstopei, zero616# CHECK-ENC: encoding: [0xf3,0x23,0xc0,0x25]617# CHECK-INST-ALIAS: csrr t2, vstopei618# name619csrrs t1, vstopei, zero620# uimm12621csrrs t2, 0x25C, zero622 623# vstopi624# name625# CHECK-INST: csrrs t1, vstopi, zero626# CHECK-ENC: encoding: [0x73,0x23,0x00,0xeb]627# CHECK-INST-ALIAS: csrr t1, vstopi628# uimm12629# CHECK-INST: csrrs t2, vstopi, zero630# CHECK-ENC: encoding: [0xf3,0x23,0x00,0xeb]631# CHECK-INST-ALIAS: csrr t2, vstopi632# name633csrrs t1, vstopi, zero634# uimm12635csrrs t2, 0xEB0, zero636 637##################################638# Control Transfer Records639##################################640 641# vsctrctl642# name643# CHECK-INST: csrrs t1, vsctrctl, zero644# CHECK-ENC: encoding: [0x73,0x23,0xe0,0x24]645# CHECK-INST-ALIAS: csrr t1, vsctrctl646# uimm12647# CHECK-INST: csrrs t2, vsctrctl, zero648# CHECK-ENC: encoding: [0xf3,0x23,0xe0,0x24]649# CHECK-INST-ALIAS: csrr t2, vsctrctl650csrrs t1, vsctrctl, zero651# uimm12652csrrs t2, 0x24E, zero653