diff options
author | mikedn <onemihaid@hotmail.com> | 2018-06-07 08:18:59 +0300 |
---|---|---|
committer | Bruce Forstall <brucefo@microsoft.com> | 2018-06-06 22:18:59 -0700 |
commit | 4cdb8103d1d3dbc68577f22c73b1d8112e9706bc (patch) | |
tree | 934cbd89a007404529de947c42fe442ce768ff49 /src/jit/emitarm.cpp | |
parent | f7993ddfc19ccce311df69b32f675bd076935e7f (diff) | |
download | coreclr-4cdb8103d1d3dbc68577f22c73b1d8112e9706bc.tar.gz coreclr-4cdb8103d1d3dbc68577f22c73b1d8112e9706bc.tar.bz2 coreclr-4cdb8103d1d3dbc68577f22c73b1d8112e9706bc.zip |
Fix ARM cast codegen (#18063)
* Fix ARM cast codegen
ARM cast codegen is rather convoluted and sometimes does the wrong thing by applying GTF_UNSIGNED to the destination type even though this flag is only about the source type.
* Add more conversion tests
These tests are intended to support casts with contained operands. They're also useful to catch issues caused by load nodes having small types and generally improve test coverage for casts.
Diffstat (limited to 'src/jit/emitarm.cpp')
-rw-r--r-- | src/jit/emitarm.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/jit/emitarm.cpp b/src/jit/emitarm.cpp index 89de34aa0d..81381fe25f 100644 --- a/src/jit/emitarm.cpp +++ b/src/jit/emitarm.cpp @@ -2199,12 +2199,12 @@ void emitter::emitIns_R_R( case INS_sxtb: case INS_uxtb: - assert(size == EA_1BYTE); + assert(size == EA_4BYTE); goto EXTEND_COMMON; case INS_sxth: case INS_uxth: - assert(size == EA_2BYTE); + assert(size == EA_4BYTE); EXTEND_COMMON: assert(insDoesNotSetFlags(flags)); if (isLowRegister(reg1) && isLowRegister(reg2)) @@ -2638,12 +2638,12 @@ void emitter::emitIns_R_R_I(instruction ins, case INS_sxtb: case INS_uxtb: - assert(size == EA_1BYTE); + assert(size == EA_4BYTE); goto EXTEND_COMMON; case INS_sxth: case INS_uxth: - assert(size == EA_2BYTE); + assert(size == EA_4BYTE); EXTEND_COMMON: assert(insOptsNone(opt)); assert(insDoesNotSetFlags(flags)); |