aboutsummaryrefslogtreecommitdiffstats
path: root/mppa_k1c/ExtValues.v
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-04-27 22:35:51 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-04-27 22:35:51 +0200
commit31c3ca256506274e578ccca15b7db37280ea6bd5 (patch)
treed0144c6bfd6191b7fe481321ac7ccb6ac4978a67 /mppa_k1c/ExtValues.v
parent54eb8e20fb0172aa47d1045ae56eb8fd2afe9d36 (diff)
downloadcompcert-kvx-31c3ca256506274e578ccca15b7db37280ea6bd5.tar.gz
compcert-kvx-31c3ca256506274e578ccca15b7db37280ea6bd5.zip
add bitfield insert opcode but not yet used nor translated
Diffstat (limited to 'mppa_k1c/ExtValues.v')
-rw-r--r--mppa_k1c/ExtValues.v14
1 files changed, 10 insertions, 4 deletions
diff --git a/mppa_k1c/ExtValues.v b/mppa_k1c/ExtValues.v
index 1348c0e8..58e8054f 100644
--- a/mppa_k1c/ExtValues.v
+++ b/mppa_k1c/ExtValues.v
@@ -41,8 +41,11 @@ Definition bitfield_maskl stop start :=
Definition insf stop start prev fld :=
let mask := bitfield_mask stop start in
- Val.or (Val.and prev (Val.notint mask))
- (Val.and (Val.shl fld (Vint (Int.repr start))) mask).
+ if is_bitfield stop start
+ then
+ Val.or (Val.and prev (Val.notint mask))
+ (Val.and (Val.shl fld (Vint (Int.repr start))) mask)
+ else Vundef.
Definition is_bitfieldl stop start :=
(Z.leb start stop)
@@ -74,5 +77,8 @@ Definition extfsl stop start v :=
Definition insfl stop start prev fld :=
let mask := bitfield_maskl stop start in
- Val.orl (Val.andl prev (Val.notl mask))
- (Val.andl (Val.shll fld (Vint (Int.repr start))) mask).
+ if is_bitfieldl stop start
+ then
+ Val.orl (Val.andl prev (Val.notl mask))
+ (Val.andl (Val.shll fld (Vint (Int.repr start))) mask)
+ else Vundef.