summaryrefslogtreecommitdiff
path: root/compiler/x86_64
diff options
context:
space:
mode:
authorflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2020-10-03 14:51:31 +0000
committerflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2020-10-03 14:51:31 +0000
commit337558ca7682fbd20c8d070e30b98ac4a0278971 (patch)
tree5af5677ac2217320b8d17856c4312adfa4f0dc07 /compiler/x86_64
parentbe72eb69008dd1e94ad02a34a572cbf1bcd626ee (diff)
downloadfpc-337558ca7682fbd20c8d070e30b98ac4a0278971.tar.gz
+ support all XSAVE instructions, resolves #37864
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@47042 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/x86_64')
-rw-r--r--compiler/x86_64/x8664ats.inc7
-rw-r--r--compiler/x86_64/x8664att.inc7
-rw-r--r--compiler/x86_64/x8664int.inc7
-rw-r--r--compiler/x86_64/x8664nop.inc2
-rw-r--r--compiler/x86_64/x8664op.inc7
-rw-r--r--compiler/x86_64/x8664pro.inc7
-rw-r--r--compiler/x86_64/x8664tab.inc49
7 files changed, 85 insertions, 1 deletions
diff --git a/compiler/x86_64/x8664ats.inc b/compiler/x86_64/x8664ats.inc
index b80734920f..010ce8ff13 100644
--- a/compiler/x86_64/x8664ats.inc
+++ b/compiler/x86_64/x8664ats.inc
@@ -1121,6 +1121,13 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
attsufINT,
attsufNONE,
attsufNONE,
diff --git a/compiler/x86_64/x8664att.inc b/compiler/x86_64/x8664att.inc
index 774854d2e9..3f6f71dc5e 100644
--- a/compiler/x86_64/x8664att.inc
+++ b/compiler/x86_64/x8664att.inc
@@ -1121,6 +1121,13 @@
'rdrand',
'rdseed',
'xgetbv',
+'xsetbv',
+'xsave',
+'xsave64',
+'xrstor',
+'xrstor64',
+'xsaveopt',
+'xsaveopt64',
'prefetchwt1',
'kaddb',
'kaddd',
diff --git a/compiler/x86_64/x8664int.inc b/compiler/x86_64/x8664int.inc
index 26c35368aa..e3c4980b08 100644
--- a/compiler/x86_64/x8664int.inc
+++ b/compiler/x86_64/x8664int.inc
@@ -1121,6 +1121,13 @@
'rdrand',
'rdseed',
'xgetbv',
+'xsetbv',
+'xsave',
+'xsave64',
+'xrstor',
+'xrstor64',
+'xsaveopt',
+'xsaveopt64',
'prefetchwt1',
'kaddb',
'kaddd',
diff --git a/compiler/x86_64/x8664nop.inc b/compiler/x86_64/x8664nop.inc
index b42cdb7aa5..16c3d8ee81 100644
--- a/compiler/x86_64/x8664nop.inc
+++ b/compiler/x86_64/x8664nop.inc
@@ -1,2 +1,2 @@
{ don't edit, this file is generated from x86ins.dat }
-4207;
+4214;
diff --git a/compiler/x86_64/x8664op.inc b/compiler/x86_64/x8664op.inc
index 12fc3aa709..806b875e43 100644
--- a/compiler/x86_64/x8664op.inc
+++ b/compiler/x86_64/x8664op.inc
@@ -1121,6 +1121,13 @@ A_XTEST,
A_RDRAND,
A_RDSEED,
A_XGETBV,
+A_XSETBV,
+A_XSAVE,
+A_XSAVE64,
+A_XRSTOR,
+A_XRSTOR64,
+A_XSAVEOPT,
+A_XSAVEOPT64,
A_PREFETCHWT1,
A_KADDB,
A_KADDD,
diff --git a/compiler/x86_64/x8664pro.inc b/compiler/x86_64/x8664pro.inc
index 169204faf8..8ca04ad3d4 100644
--- a/compiler/x86_64/x8664pro.inc
+++ b/compiler/x86_64/x8664pro.inc
@@ -1121,6 +1121,13 @@
(Ch: [Ch_Wop1, Ch_WFlags]),
(Ch: [Ch_Wop1, Ch_WFlags]),
(Ch: [Ch_WEAX, Ch_WEDX, Ch_RECX]),
+(Ch: [Ch_REAX, Ch_REDX, Ch_RECX]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
+(Ch: [Ch_All]),
(Ch: [Ch_All]),
(Ch: [Ch_All]),
(Ch: [Ch_All]),
diff --git a/compiler/x86_64/x8664tab.inc b/compiler/x86_64/x8664tab.inc
index a46fafb435..fe1ee77557 100644
--- a/compiler/x86_64/x8664tab.inc
+++ b/compiler/x86_64/x8664tab.inc
@@ -20672,6 +20672,55 @@
flags : [if_xsave]
),
(
+ opcode : A_XSETBV;
+ ops : 0;
+ optypes : (ot_none,ot_none,ot_none,ot_none);
+ code : #3#15#1#209;
+ flags : [if_xsave]
+ ),
+ (
+ opcode : A_XSAVE;
+ ops : 1;
+ optypes : (ot_memory,ot_none,ot_none,ot_none);
+ code : #2#15#174#132;
+ flags : [if_xsave]
+ ),
+ (
+ opcode : A_XSAVE64;
+ ops : 1;
+ optypes : (ot_memory,ot_none,ot_none,ot_none);
+ code : #214#2#15#174#132;
+ flags : [if_xsave]
+ ),
+ (
+ opcode : A_XRSTOR;
+ ops : 1;
+ optypes : (ot_memory,ot_none,ot_none,ot_none);
+ code : #2#15#174#133;
+ flags : [if_xsave]
+ ),
+ (
+ opcode : A_XRSTOR64;
+ ops : 1;
+ optypes : (ot_memory,ot_none,ot_none,ot_none);
+ code : #214#2#15#174#133;
+ flags : [if_xsave]
+ ),
+ (
+ opcode : A_XSAVEOPT;
+ ops : 1;
+ optypes : (ot_memory,ot_none,ot_none,ot_none);
+ code : #2#15#174#134;
+ flags : [if_xsave]
+ ),
+ (
+ opcode : A_XSAVEOPT64;
+ ops : 1;
+ optypes : (ot_memory,ot_none,ot_none,ot_none);
+ code : #214#2#15#174#134;
+ flags : [if_xsave]
+ ),
+ (
opcode : A_PREFETCHWT1;
ops : 1;
optypes : (ot_memory,ot_none,ot_none,ot_none);