diff options
| author | Mikhail Maltsev <mikhail.maltsev@arm.com> | 2018-04-04 08:54:19 +0000 |
|---|---|---|
| committer | Mikhail Maltsev <mikhail.maltsev@arm.com> | 2018-04-04 08:54:19 +0000 |
| commit | 68f35bcc85a1662eb57deca23a379b9de129dc0f (patch) | |
| tree | c91149654de012028ee0b23c78b18fbbed473145 /llvm/test | |
| parent | 7949b3b1dcbdbd815dd28122871761f742b08278 (diff) | |
| download | bcm5719-llvm-68f35bcc85a1662eb57deca23a379b9de129dc0f.tar.gz bcm5719-llvm-68f35bcc85a1662eb57deca23a379b9de129dc0f.zip | |
[ARM] Do not convert some vmov instructions
Summary:
Patch https://reviews.llvm.org/D44467 implements conversion of invalid
vmov instructions into valid ones. It turned out that some valid
instructions also get converted, for example
vmov.i64 d2, #0xff00ff00ff00ff00 ->
vmov.i16 d2, #0xff00
Such behavior is incorrect because according to the ARM ARM section
F2.7.7 Modified immediate constants in T32 and A32 Advanced SIMD
instructions, "On assembly, the data type must be matched in the table
if possible."
This patch fixes the isNEONmovReplicate check so that the above
instruction is not modified any more.
Reviewers: rengolin, olista01
Reviewed By: rengolin
Subscribers: javed.absar, kristof.beyls, rogfer01, llvm-commits
Differential Revision: https://reviews.llvm.org/D44678
llvm-svn: 329158
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/MC/ARM/vmov-vmvn-replicate.s | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/test/MC/ARM/vmov-vmvn-replicate.s b/llvm/test/MC/ARM/vmov-vmvn-replicate.s index 3169ea359f3..c9ab9a322e1 100644 --- a/llvm/test/MC/ARM/vmov-vmvn-replicate.s +++ b/llvm/test/MC/ARM/vmov-vmvn-replicate.s @@ -23,6 +23,8 @@ @ CHECK: vmov.i8 q2, #0xab @ encoding: [0x5b,0x4e,0x82,0xf3] @ CHECK: vmov.i8 q2, #0xab @ encoding: [0x5b,0x4e,0x82,0xf3] + vmov.i64 d2, #0xff00ff00ff00ff00 + vmov.i64 q2, #0xff00ff00ff00ff00 vmov.i64 d2, #0x00a500a500a500a5 vmov.i64 q2, #0x00a500a500a500a5 vmov.i32 d2, #0x00a500a5 @@ -32,6 +34,8 @@ vmov.i32 d2, #0xa500a500 vmov.i32 q2, #0xa500a500 +@ CHECK: vmov.i64 d2, #0xff00ff00ff00ff00 @ encoding: [0x3a,0x2e,0x82,0xf3] +@ CHECK: vmov.i64 q2, #0xff00ff00ff00ff00 @ encoding: [0x7a,0x4e,0x82,0xf3] @ CHECK: vmov.i16 d2, #0xa5 @ encoding: [0x15,0x28,0x82,0xf3] @ CHECK: vmov.i16 q2, #0xa5 @ encoding: [0x55,0x48,0x82,0xf3] @ CHECK: vmov.i16 d2, #0xa5 @ encoding: [0x15,0x28,0x82,0xf3] |

