1# RUN: llvm-mc %s -triple=riscv32 -M no-aliases -show-encoding \ 2# RUN: | FileCheck -check-prefixes=CHECK-INST,CHECK-ENC %s 3# RUN: llvm-mc -filetype=obj -triple riscv32 < %s \ 4# RUN: | llvm-objdump -d - \ 5# RUN: | FileCheck -check-prefix=CHECK-INST-ALIAS %s 6# 7# RUN: llvm-mc %s -triple=riscv64 -M no-aliases -show-encoding \ 8# RUN: | FileCheck -check-prefixes=CHECK-INST,CHECK-ENC %s 9# RUN: llvm-mc -filetype=obj -triple riscv64 < %s \ 10# RUN: | llvm-objdump -d - \ 11# RUN: | FileCheck -check-prefix=CHECK-INST-ALIAS %s 12 13################################## 14# Supervisor Trap Setup 15################################## 16 17# sstatus 18# name 19# CHECK-INST: csrrs t1, sstatus, zero 20# CHECK-ENC: encoding: [0x73,0x23,0x00,0x10] 21# CHECK-INST-ALIAS: csrr t1, sstatus 22# uimm12 23# CHECK-INST: csrrs t2, sstatus, zero 24# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x10] 25# CHECK-INST-ALIAS: csrr t2, sstatus 26# name 27csrrs t1, sstatus, zero 28# uimm12 29csrrs t2, 0x100, zero 30 31# sie 32# name 33# CHECK-INST: csrrs t1, sie, zero 34# CHECK-ENC: [0x73,0x23,0x40,0x10] 35# CHECK-INST-ALIAS: csrr t1, sie 36# uimm12 37# CHECK-INST: csrrs t2, sie, zero 38# CHECK-ENC: encoding: [0xf3,0x23,0x40,0x10] 39# CHECK-INST-ALIAS: csrr t2, sie 40# name 41csrrs t1, sie, zero 42# uimm12 43csrrs t2, 0x104, zero 44 45# stvec 46# name 47# CHECK-INST: csrrs t1, stvec, zero 48# CHECK-ENC: encoding: [0x73,0x23,0x50,0x10] 49# CHECK-INST-ALIAS: csrr t1, stvec 50# uimm12 51# CHECK-INST: csrrs t2, stvec, zero 52# CHECK-ENC: encoding: [0xf3,0x23,0x50,0x10] 53# CHECK-INST-ALIAS: csrr t2, stvec 54# name 55csrrs t1, stvec, zero 56# uimm12 57csrrs t2, 0x105, zero 58 59# scounteren 60# name 61# CHECK-INST: csrrs t1, scounteren, zero 62# CHECK-ENC: encoding: [0x73,0x23,0x60,0x10] 63# CHECK-INST-ALIAS: csrr t1, scounteren 64# uimm12 65# CHECK-INST: csrrs t2, scounteren, zero 66# CHECK-ENC: encoding: [0xf3,0x23,0x60,0x10] 67# CHECK-INST-ALIAS: csrr t2, scounteren 68# name 69csrrs t1, scounteren, zero 70# uimm12 71csrrs t2, 0x106, zero 72 73# stimecmp 74# name 75# CHECK-INST: csrrs t1, stimecmp, zero 76# CHECK-ENC: encoding: [0x73,0x23,0xd0,0x14] 77# CHECK-INST-ALIAS: csrr t1, stimecmp 78# uimm12 79# CHECK-INST: csrrs t2, stimecmp, zero 80# CHECK-ENC: encoding: [0xf3,0x23,0xd0,0x14] 81# CHECK-INST-ALIAS: csrr t2, stimecmp 82# name 83csrrs t1, stimecmp, zero 84# uimm12 85csrrs t2, 0x14D, zero 86 87################################## 88# Supervisor Configuration 89################################## 90 91# senvcfg 92# name 93# CHECK-INST: csrrs t1, senvcfg, zero 94# CHECK-ENC: encoding: [0x73,0x23,0xa0,0x10] 95# CHECK-INST-ALIAS: csrr t1, senvcfg 96# uimm12 97# CHECK-INST: csrrs t2, senvcfg, zero 98# CHECK-ENC: encoding: [0xf3,0x23,0xa0,0x10] 99# CHECK-INST-ALIAS: csrr t2, senvcfg 100# name 101csrrs t1, senvcfg, zero 102# uimm12 103csrrs t2, 0x10A, zero 104 105################################## 106# Supervisor Trap Handling 107################################## 108 109# sscratch 110# name 111# CHECK-INST: csrrs t1, sscratch, zero 112# CHECK-ENC: encoding: [0x73,0x23,0x00,0x14] 113# CHECK-INST-ALIAS: csrr t1, sscratch 114# uimm12 115# CHECK-INST: csrrs t2, sscratch, zero 116# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x14] 117# CHECK-INST-ALIAS: csrr t2, sscratch 118# name 119csrrs t1, sscratch, zero 120# uimm12 121csrrs t2, 0x140, zero 122 123# sepc 124# name 125# CHECK-INST: csrrs t1, sepc, zero 126# CHECK-ENC: encoding: [0x73,0x23,0x10,0x14] 127# CHECK-INST-ALIAS: csrr t1, sepc 128# uimm12 129# CHECK-INST: csrrs t2, sepc, zero 130# CHECK-ENC: encoding: [0xf3,0x23,0x10,0x14] 131# CHECK-INST-ALIAS: csrr t2, sepc 132# name 133csrrs t1, sepc, zero 134# uimm12 135csrrs t2, 0x141, zero 136 137# scause 138# name 139# CHECK-INST: csrrs t1, scause, zero 140# CHECK-ENC: encoding: [0x73,0x23,0x20,0x14] 141# CHECK-INST-ALIAS: csrr t1, scause 142# uimm12 143# CHECK-INST: csrrs t2, scause, zero 144# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x14] 145# CHECK-INST-ALIAS: csrr t2, scause 146# name 147csrrs t1, scause, zero 148# uimm12 149csrrs t2, 0x142, zero 150 151# stval 152# name 153# CHECK-INST: csrrs t1, stval, zero 154# CHECK-ENC: encoding: [0x73,0x23,0x30,0x14] 155# CHECK-INST-ALIAS: csrr t1, stval 156# uimm12 157# CHECK-INST: csrrs t2, stval, zero 158# CHECK-ENC: encoding: [0xf3,0x23,0x30,0x14] 159# CHECK-INST-ALIAS: csrr t2, stval 160# aliases 161# aliases with uimm12 162# name 163csrrs t1, stval, zero 164# uimm12 165csrrs t2, 0x143, zero 166 167# sip 168# name 169# CHECK-INST: csrrs t1, sip, zero 170# CHECK-ENC: encoding: [0x73,0x23,0x40,0x14] 171# CHECK-INST-ALIAS: csrr t1, sip 172# uimm12 173# CHECK-INST: csrrs t2, sip, zero 174# CHECK-ENC: encoding: [0xf3,0x23,0x40,0x14] 175# CHECK-INST-ALIAS: csrr t2, sip 176csrrs t1, sip, zero 177# uimm12 178csrrs t2, 0x144, zero 179 180 181######################################### 182# Supervisor Protection and Translation 183######################################### 184 185# satp 186# name 187# CHECK-INST: csrrs t1, satp, zero 188# CHECK-ENC: encoding: [0x73,0x23,0x00,0x18] 189# CHECK-INST-ALIAS: csrr t1, satp 190# uimm12 191# CHECK-INST: csrrs t2, satp, zero 192# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x18] 193# CHECK-INST-ALIAS: csrr t2, satp 194# name 195csrrs t1, satp, zero 196# uimm12 197csrrs t2, 0x180, zero 198 199######################################### 200# Quality-of-Service(QoS) Identifiers 201######################################### 202 203# srmcfg 204# name 205# CHECK-INST: csrrs t1, srmcfg, zero 206# CHECK-ENC: encoding: [0x73,0x23,0x10,0x18] 207# CHECK-INST-ALIAS: csrr t1, srmcfg 208# uimm12 209# CHECK-INST: csrrs t2, srmcfg, zero 210# CHECK-ENC: encoding: [0xf3,0x23,0x10,0x18] 211# CHECK-INST-ALIAS: csrr t2, srmcfg 212# name 213csrrs t1, srmcfg, zero 214# uimm12 215csrrs t2, 0x181, zero 216 217######################################### 218# Debug/Trace Registers 219######################################### 220 221# scontext 222# name 223# CHECK-INST: csrrs t1, scontext, zero 224# CHECK-ENC: encoding: [0x73,0x23,0x80,0x5a] 225# CHECK-INST-ALIAS: csrr t1, scontext 226# uimm12 227# CHECK-INST: csrrs t2, scontext, zero 228# CHECK-ENC: encoding: [0xf3,0x23,0x80,0x5a] 229# CHECK-INST-ALIAS: csrr t2, scontext 230# name 231csrrs t1, scontext, zero 232# uimm12 233csrrs t2, 0x5A8, zero 234 235######################################### 236# Supervisor Count Overflow (Sscofpmf) 237######################################### 238 239# scountovf 240# name 241# CHECK-INST: csrrs t1, scountovf, zero 242# CHECK-ENC: encoding: [0x73,0x23,0x00,0xda] 243# CHECK-INST-ALIAS: csrr t1, scountovf 244# uimm12 245# CHECK-INST: csrrs t2, scountovf, zero 246# CHECK-ENC: encoding: [0xf3,0x23,0x00,0xda] 247# CHECK-INST-ALIAS: csrr t2, scountovf 248# name 249csrrs t1, scountovf, zero 250# uimm12 251csrrs t2, 0xDA0, zero 252 253######################################### 254# State Enable Extension (Smstateen) 255######################################### 256 257# sstateen0 258# name 259# CHECK-INST: csrrs t1, sstateen0, zero 260# CHECK-ENC: encoding: [0x73,0x23,0xc0,0x10] 261# CHECK-INST-ALIAS: csrr t1, sstateen0 262# uimm12 263# CHECK-INST: csrrs t2, sstateen0, zero 264# CHECK-ENC: encoding: [0xf3,0x23,0xc0,0x10] 265# CHECK-INST-ALIAS: csrr t2, sstateen0 266# name 267csrrs t1, sstateen0, zero 268# uimm12 269csrrs t2, 0x10C, zero 270 271# sstateen1 272# name 273# CHECK-INST: csrrs t1, sstateen1, zero 274# CHECK-ENC: encoding: [0x73,0x23,0xd0,0x10] 275# CHECK-INST-ALIAS: csrr t1, sstateen1 276# uimm12 277# CHECK-INST: csrrs t2, sstateen1, zero 278# CHECK-ENC: encoding: [0xf3,0x23,0xd0,0x10] 279# CHECK-INST-ALIAS: csrr t2, sstateen1 280# name 281csrrs t1, sstateen1, zero 282# uimm12 283csrrs t2, 0x10D, zero 284 285# sstateen2 286# name 287# CHECK-INST: csrrs t1, sstateen2, zero 288# CHECK-ENC: encoding: [0x73,0x23,0xe0,0x10] 289# CHECK-INST-ALIAS: csrr t1, sstateen2 290# uimm12 291# CHECK-INST: csrrs t2, sstateen2, zero 292# CHECK-ENC: encoding: [0xf3,0x23,0xe0,0x10] 293# CHECK-INST-ALIAS: csrr t2, sstateen2 294# name 295csrrs t1, sstateen2, zero 296# uimm12 297csrrs t2, 0x10E, zero 298 299# sstateen3 300# name 301# CHECK-INST: csrrs t1, sstateen3, zero 302# CHECK-ENC: encoding: [0x73,0x23,0xf0,0x10] 303# CHECK-INST-ALIAS: csrr t1, sstateen3 304# uimm12 305# CHECK-INST: csrrs t2, sstateen3, zero 306# CHECK-ENC: encoding: [0xf3,0x23,0xf0,0x10] 307# CHECK-INST-ALIAS: csrr t2, sstateen3 308# name 309csrrs t1, sstateen3, zero 310# uimm12 311csrrs t2, 0x10F, zero 312 313######################################### 314# Advanced Interrupt Architecture (Smaia and Ssaia) 315######################################### 316 317# siselect 318# name 319# CHECK-INST: csrrs t1, siselect, zero 320# CHECK-ENC: encoding: [0x73,0x23,0x00,0x15] 321# CHECK-INST-ALIAS: csrr t1, siselect 322# uimm12 323# CHECK-INST: csrrs t2, siselect, zero 324# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x15] 325# CHECK-INST-ALIAS: csrr t2, siselect 326# name 327csrrs t1, siselect, zero 328# uimm12 329csrrs t2, 0x150, zero 330 331# sireg 332# name 333# CHECK-INST: csrrs t1, sireg, zero 334# CHECK-ENC: encoding: [0x73,0x23,0x10,0x15] 335# CHECK-INST-ALIAS: csrr t1, sireg 336# uimm12 337# CHECK-INST: csrrs t2, sireg, zero 338# CHECK-ENC: encoding: [0xf3,0x23,0x10,0x15] 339# CHECK-INST-ALIAS: csrr t2, sireg 340# name 341csrrs t1, sireg, zero 342# uimm12 343csrrs t2, 0x151, zero 344 345# sireg2 346# name 347# CHECK-INST: csrrs t1, sireg2, zero 348# CHECK-ENC: encoding: [0x73,0x23,0x20,0x15] 349# CHECK-INST-ALIAS: csrr t1, sireg2 350# uimm12 351# CHECK-INST: csrrs t2, sireg2, zero 352# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x15] 353# CHECK-INST-ALIAS: csrr t2, sireg2 354# name 355csrrs t1, sireg2, zero 356# uimm12 357csrrs t2, 0x152, zero 358 359# sireg3 360# name 361# CHECK-INST: csrrs t1, sireg3, zero 362# CHECK-ENC: encoding: [0x73,0x23,0x30,0x15] 363# CHECK-INST-ALIAS: csrr t1, sireg3 364# uimm12 365# CHECK-INST: csrrs t2, sireg3, zero 366# CHECK-ENC: encoding: [0xf3,0x23,0x30,0x15] 367# CHECK-INST-ALIAS: csrr t2, sireg3 368# name 369csrrs t1, sireg3, zero 370# uimm12 371csrrs t2, 0x153, zero 372 373# sireg4 374# name 375# CHECK-INST: csrrs t1, sireg4, zero 376# CHECK-ENC: encoding: [0x73,0x23,0x50,0x15] 377# CHECK-INST-ALIAS: csrr t1, sireg4 378# uimm12 379# CHECK-INST: csrrs t2, sireg4, zero 380# CHECK-ENC: encoding: [0xf3,0x23,0x50,0x15] 381# CHECK-INST-ALIAS: csrr t2, sireg4 382# name 383csrrs t1, sireg4, zero 384# uimm12 385csrrs t2, 0x155, zero 386 387# sireg5 388# name 389# CHECK-INST: csrrs t1, sireg5, zero 390# CHECK-ENC: encoding: [0x73,0x23,0x60,0x15] 391# CHECK-INST-ALIAS: csrr t1, sireg5 392# uimm12 393# CHECK-INST: csrrs t2, sireg5, zero 394# CHECK-ENC: encoding: [0xf3,0x23,0x60,0x15] 395# CHECK-INST-ALIAS: csrr t2, sireg5 396# name 397csrrs t1, sireg5, zero 398# uimm12 399csrrs t2, 0x156, zero 400 401# sireg6 402# name 403# CHECK-INST: csrrs t1, sireg6, zero 404# CHECK-ENC: encoding: [0x73,0x23,0x70,0x15] 405# CHECK-INST-ALIAS: csrr t1, sireg6 406# uimm12 407# CHECK-INST: csrrs t2, sireg6, zero 408# CHECK-ENC: encoding: [0xf3,0x23,0x70,0x15] 409# CHECK-INST-ALIAS: csrr t2, sireg6 410# name 411csrrs t1, sireg6, zero 412# uimm12 413csrrs t2, 0x157, zero 414 415# stopei 416# name 417# CHECK-INST: csrrs t1, stopei, zero 418# CHECK-ENC: encoding: [0x73,0x23,0xc0,0x15] 419# CHECK-INST-ALIAS: csrr t1, stopei 420# uimm12 421# CHECK-INST: csrrs t2, stopei, zero 422# CHECK-ENC: encoding: [0xf3,0x23,0xc0,0x15] 423# CHECK-INST-ALIAS: csrr t2, stopei 424# name 425csrrs t1, stopei, zero 426# uimm12 427csrrs t2, 0x15C, zero 428 429# stopi 430# name 431# CHECK-INST: csrrs t1, stopi, zero 432# CHECK-ENC: encoding: [0x73,0x23,0x00,0xdb] 433# CHECK-INST-ALIAS: csrr t1, stopi 434# uimm12 435# CHECK-INST: csrrs t2, stopi, zero 436# CHECK-ENC: encoding: [0xf3,0x23,0x00,0xdb] 437# CHECK-INST-ALIAS: csrr t2, stopi 438# name 439csrrs t1, stopi, zero 440# uimm12 441csrrs t2, 0xDB0, zero 442 443######################################### 444# Counter Configuration (Ssccfg) 445######################################### 446 447# scountinhibit 448# name 449# CHECK-INST: csrrs t1, scountinhibit, zero 450# CHECK-ENC: encoding: [0x73,0x23,0x00,0x12] 451# CHECK-INST-ALIAS: csrr t1, scountinhibit 452# uimm12 453# CHECK-INST: csrrs t2, scountinhibit, zero 454# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x12] 455# CHECK-INST-ALIAS: csrr t2, scountinhibit 456# name 457csrrs t1, scountinhibit, zero 458# uimm12 459csrrs t2, 0x120, zero 460 461################################## 462# Control Transfer Records 463################################## 464 465# sctrctl 466# name 467# CHECK-INST: csrrs t1, sctrctl, zero 468# CHECK-ENC: encoding: [0x73,0x23,0xe0,0x14] 469# CHECK-INST-ALIAS: csrr t1, sctrctl 470# uimm12 471# CHECK-INST: csrrs t2, sctrctl, zero 472# CHECK-ENC: encoding: [0xf3,0x23,0xe0,0x14] 473# CHECK-INST-ALIAS: csrr t2, sctrctl 474csrrs t1, sctrctl, zero 475# uimm12 476csrrs t2, 0x14E, zero 477 478# sctrstatus 479# name 480# CHECK-INST: csrrs t1, sctrstatus, zero 481# CHECK-ENC: encoding: [0x73,0x23,0xf0,0x14] 482# CHECK-INST-ALIAS: csrr t1, sctrstatus 483# uimm12 484# CHECK-INST: csrrs t2, sctrstatus, zero 485# CHECK-ENC: encoding: [0xf3,0x23,0xf0,0x14] 486# CHECK-INST-ALIAS: csrr t2, sctrstatus 487csrrs t1, sctrstatus, zero 488# uimm12 489csrrs t2, 0x14F, zero 490 491# sctrdepth 492# name 493# CHECK-INST: csrrs t1, sctrdepth, zero 494# CHECK-ENC: encoding: [0x73,0x23,0xf0,0x15] 495# CHECK-INST-ALIAS: csrr t1, sctrdepth 496# uimm12 497# CHECK-INST: csrrs t2, sctrdepth, zero 498# CHECK-ENC: encoding: [0xf3,0x23,0xf0,0x15] 499# CHECK-INST-ALIAS: csrr t2, sctrdepth 500csrrs t1, sctrdepth, zero 501# uimm12 502csrrs t2, 0x15F, zero 503