[ARM] GlobalISel: Widen s1, s8, s16 G_CONSTANT

Get the legalizer to widen small constants.

llvm-svn: 307239
This commit is contained in:
Diana Picus 2017-07-06 08:04:16 +00:00
parent ccc5e04461
commit cd460c89c4
2 changed files with 17 additions and 0 deletions

View File

@ -89,6 +89,8 @@ ARMLegalizerInfo::ARMLegalizerInfo(const ARMSubtarget &ST) {
setAction({G_SELECT, 1, s1}, Legal);
setAction({G_CONSTANT, s32}, Legal);
for (auto Ty : {s1, s8, s16})
setAction({G_CONSTANT, Ty}, WidenScalar);
setAction({G_ICMP, s1}, Legal);
for (auto Ty : {s8, s16})

View File

@ -689,11 +689,26 @@ selected: false
tracksRegLiveness: true
registers:
- { id: 0, class: _ }
- { id: 1, class: _ }
- { id: 2, class: _ }
- { id: 3, class: _ }
body: |
bb.0:
%0(s32) = G_CONSTANT 42
; CHECK: {{%[0-9]+}}(s32) = G_CONSTANT 42
%1(s16) = G_CONSTANT i16 21
; CHECK: [[EXT:%[0-9]+]](s32) = G_CONSTANT i32 21
; CHECK: {{%[0-9]+}}(s16) = G_TRUNC [[EXT]](s32)
%2(s8) = G_CONSTANT i8 10
; CHECK: [[EXT:%[0-9]+]](s32) = G_CONSTANT i32 10
; CHECK: {{%[0-9]+}}(s8) = G_TRUNC [[EXT]](s32)
%3(s1) = G_CONSTANT i1 1
; CHECK: [[EXT:%[0-9]+]](s32) = G_CONSTANT i32 -1
; CHECK: {{%[0-9]+}}(s1) = G_TRUNC [[EXT]](s32)
%r0 = COPY %0(s32)
BX_RET 14, _, implicit %r0
...