We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 69e67a6 commit ec27e82Copy full SHA for ec27e82
llvm/docs/ReleaseNotes.md
@@ -195,6 +195,8 @@ Changes to the X86 Backend
195
196
* Supported ISA of `SM4(EVEX)`.
197
198
+* Supported ISA of `MSR_IMM`.
199
+
200
Changes to the OCaml bindings
201
-----------------------------
202
llvm/lib/Target/X86/X86InstrSystem.td
@@ -466,7 +466,10 @@ multiclass Urdwrmsr<Map rrmap, string suffix> {
466
"urdmsr\t{$imm, $dst|$dst, $imm}",
467
[(set GR64:$dst, (int_x86_urdmsr i64immSExt32_su:$imm))]>,
468
T_MAP7, VEX, XD, NoCD8;
469
-}
+ def RDMSRri#suffix : Ii32<0xf6, MRM0r, (outs GR64:$dst), (ins i64i32imm:$imm),
470
+ "rdmsr\t{$imm, $dst|$dst, $imm}", []>,
471
+ T_MAP7, VEX, XD, NoCD8;
472
+ }
473
let mayStore = 1 in {
474
let OpMap = rrmap in
475
def UWRMSRrr#suffix : I<0xf8, MRMSrcReg, (outs), (ins GR64:$src1, GR64:$src2),
@@ -476,6 +479,9 @@ multiclass Urdwrmsr<Map rrmap, string suffix> {
476
479
"uwrmsr\t{$src, $imm|$imm, $src}",
477
480
[(int_x86_uwrmsr i64immSExt32_su:$imm, GR64:$src)]>,
478
481
T_MAP7, VEX, XS, NoCD8;
482
+ def WRMSRNSir#suffix : Ii32<0xf6, MRM0r, (outs), (ins GR64:$src, i64i32imm:$imm),
483
+ "wrmsrns\t{$src, $imm|$imm, $src}",
484
+ []>, T_MAP7, VEX, XS, NoCD8;
485
}
486
487
llvm/test/MC/Disassembler/X86/apx/msr-imm.txt
@@ -0,0 +1,18 @@
1
+# RUN: llvm-mc --disassemble %s -triple=x86_64 | FileCheck %s --check-prefixes=ATT
2
+# RUN: llvm-mc --disassemble %s -triple=x86_64 -x86-asm-syntax=intel --output-asm-variant=1 | FileCheck %s --check-prefixes=INTEL
3
4
+# ATT: rdmsr $123, %r9
5
+# INTEL: rdmsr r9, 123
6
+0x62,0xd7,0x7f,0x08,0xf6,0xc1,0x7b,0x00,0x00,0x00
7
8
+# ATT: rdmsr $123, %r19
9
+# INTEL: rdmsr r19, 123
10
+0x62,0xff,0x7f,0x08,0xf6,0xc3,0x7b,0x00,0x00,0x00
11
12
+# ATT: wrmsrns %r9, $123
13
+# INTEL: wrmsrns 123, r9
14
+0x62,0xd7,0x7e,0x08,0xf6,0xc1,0x7b,0x00,0x00,0x00
15
16
+# ATT: wrmsrns %r19, $123
17
+# INTEL: wrmsrns 123, r19
18
+0x62,0xff,0x7e,0x08,0xf6,0xc3,0x7b,0x00,0x00,0x00
llvm/test/MC/Disassembler/X86/msrimm-64.txt
@@ -0,0 +1,10 @@
+0xc4,0xc7,0x7b,0xf6,0xc1,0x7b,0x00,0x00,0x00
+0xc4,0xc7,0x7a,0xf6,0xc1,0x7b,0x00,0x00,0x00
llvm/test/MC/X86/apx/msrimm-att.s
@@ -0,0 +1,25 @@
+# RUN: llvm-mc -triple x86_64 --show-encoding %s | FileCheck %s
+# RUN: not llvm-mc -triple i386 -show-encoding %s 2>&1 | FileCheck %s --check-prefix=ERROR
+# ERROR-COUNT-4: error:
+# ERROR-NOT: error:
+## rdmsr
+// CHECK: {evex} rdmsr $123, %r9
+// CHECK: encoding: [0x62,0xd7,0x7f,0x08,0xf6,0xc1,0x7b,0x00,0x00,0x00]
+ {evex} rdmsr $123, %r9
+// CHECK: rdmsr $123, %r19
+// CHECK: encoding: [0x62,0xff,0x7f,0x08,0xf6,0xc3,0x7b,0x00,0x00,0x00]
+ rdmsr $123, %r19
+## wrmsrns
19
+# CHECK: {evex} wrmsrns %r9, $123
20
+# CHECK: encoding: [0x62,0xd7,0x7e,0x08,0xf6,0xc1,0x7b,0x00,0x00,0x00]
21
+ {evex} wrmsrns %r9, $123
22
23
+# CHECK: wrmsrns %r19, $123
24
+# CHECK: encoding: [0x62,0xff,0x7e,0x08,0xf6,0xc3,0x7b,0x00,0x00,0x00]
25
+ wrmsrns %r19, $123
llvm/test/MC/X86/apx/msrimm-intel.s
@@ -0,0 +1,21 @@
+# RUN: llvm-mc -triple x86_64 -x86-asm-syntax=intel -output-asm-variant=1 --show-encoding %s | FileCheck %s
+## urdmsr
+# CHECK: {evex} rdmsr r9, 123
+# CHECK: encoding: [0x62,0xd7,0x7f,0x08,0xf6,0xc1,0x7b,0x00,0x00,0x00]
+ {evex} rdmsr r9, 123
+# CHECK: rdmsr r19, 123
+# CHECK: encoding: [0x62,0xff,0x7f,0x08,0xf6,0xc3,0x7b,0x00,0x00,0x00]
+ rdmsr r19, 123
+## uwrmsr
+# CHECK: {evex} wrmsrns 123, r9
+ {evex} wrmsrns 123, r9
+# CHECK: wrmsrns 123, r19
+ wrmsrns 123, r19
llvm/test/MC/X86/msrimm-64-att.s
@@ -0,0 +1,14 @@
+// RUN: llvm-mc -triple x86_64 --show-encoding %s | FileCheck %s
+// RUN: not llvm-mc -triple i386 -show-encoding %s 2>&1 | FileCheck %s --check-prefix=ERROR
+// ERROR-COUNT-2: error:
+// ERROR-NOT: error:
+// CHECK: rdmsr $123, %r9
+// CHECK: encoding: [0xc4,0xc7,0x7b,0xf6,0xc1,0x7b,0x00,0x00,0x00]
+ rdmsr $123, %r9
+// CHECK: wrmsrns %r9, $123
+// CHECK: encoding: [0xc4,0xc7,0x7a,0xf6,0xc1,0x7b,0x00,0x00,0x00]
+ wrmsrns %r9, $123
llvm/test/MC/X86/msrimm-64-intel.s
+// RUN: llvm-mc -triple x86_64 -x86-asm-syntax=intel -output-asm-variant=1 --show-encoding %s | FileCheck %s
+// CHECK: rdmsr r9, 123
+ rdmsr r9, 123
+// CHECK: wrmsrns 123, r9
+ wrmsrns 123, r9
0 commit comments