diff options
author | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-04-27 22:35:51 +0200 |
---|---|---|
committer | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-04-27 22:35:51 +0200 |
commit | 31c3ca256506274e578ccca15b7db37280ea6bd5 (patch) | |
tree | d0144c6bfd6191b7fe481321ac7ccb6ac4978a67 /mppa_k1c/ExtValues.v | |
parent | 54eb8e20fb0172aa47d1045ae56eb8fd2afe9d36 (diff) | |
download | compcert-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.v | 14 |
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. |