diff options
Diffstat (limited to 'llvm/test/CodeGen/Hexagon/tstbit.ll')
-rw-r--r-- | llvm/test/CodeGen/Hexagon/tstbit.ll | 43 |
1 files changed, 9 insertions, 34 deletions
diff --git a/llvm/test/CodeGen/Hexagon/tstbit.ll b/llvm/test/CodeGen/Hexagon/tstbit.ll index 7c80fcb91ab..a5d61835155 100644 --- a/llvm/test/CodeGen/Hexagon/tstbit.ll +++ b/llvm/test/CodeGen/Hexagon/tstbit.ll @@ -20,22 +20,12 @@ b0: ret i32 %v3 } -; TODO: Match to tstbit? - define i64 @is_upper_bit_clear_i64(i64 %x) #0 { ; CHECK-LABEL: is_upper_bit_clear_i64: ; CHECK: // %bb.0: ; CHECK-NEXT: { -; CHECK-NEXT: r4 = #0 -; CHECK-NEXT: r2 = #32 -; CHECK-NEXT: r7:6 = combine(#0,#0) -; CHECK-NEXT: } -; CHECK-NEXT: { -; CHECK-NEXT: r5 = and(r1,r2) -; CHECK-NEXT: r1 = r4 -; CHECK-NEXT: } -; CHECK-NEXT: { -; CHECK-NEXT: p0 = cmp.eq(r5:4,r7:6) +; CHECK-NEXT: p0 = !tstbit(r1,#5) +; CHECK-NEXT: r1 = #0 ; CHECK-NEXT: } ; CHECK-NEXT: { ; CHECK-NEXT: r0 = mux(p0,#1,#0) @@ -47,23 +37,14 @@ define i64 @is_upper_bit_clear_i64(i64 %x) #0 { ret i64 %r } -; TODO: Match to tstbit? - define i64 @is_lower_bit_clear_i64(i64 %x) #0 { ; CHECK-LABEL: is_lower_bit_clear_i64: ; CHECK: // %bb.0: ; CHECK-NEXT: { -; CHECK-NEXT: r5:4 = combine(#0,#0) -; CHECK-NEXT: r2 = ##134217728 +; CHECK-NEXT: p0 = !tstbit(r0,#27) ; CHECK-NEXT: r1 = #0 ; CHECK-NEXT: } ; CHECK-NEXT: { -; CHECK-NEXT: r0 = and(r0,r2) -; CHECK-NEXT: } -; CHECK-NEXT: { -; CHECK-NEXT: p0 = cmp.eq(r1:0,r5:4) -; CHECK-NEXT: } -; CHECK-NEXT: { ; CHECK-NEXT: r0 = mux(p0,#1,#0) ; CHECK-NEXT: jumpr r31 ; CHECK-NEXT: } @@ -73,16 +54,14 @@ define i64 @is_lower_bit_clear_i64(i64 %x) #0 { ret i64 %r } -; TODO: Match to tstbit? - define i32 @is_bit_clear_i32(i32 %x) #0 { ; CHECK-LABEL: is_bit_clear_i32: ; CHECK: // %bb.0: ; CHECK-NEXT: { -; CHECK-NEXT: r0 = and(r0,##134217728) +; CHECK-NEXT: p0 = !tstbit(r0,#27) ; CHECK-NEXT: } ; CHECK-NEXT: { -; CHECK-NEXT: r0 = cmp.eq(r0,#0) +; CHECK-NEXT: r0 = mux(p0,#1,#0) ; CHECK-NEXT: jumpr r31 ; CHECK-NEXT: } %sh = lshr i32 %x, 27 @@ -91,16 +70,14 @@ define i32 @is_bit_clear_i32(i32 %x) #0 { ret i32 %r } -; TODO: Match to tstbit? - define i16 @is_bit_clear_i16(i16 %x) #0 { ; CHECK-LABEL: is_bit_clear_i16: ; CHECK: // %bb.0: ; CHECK-NEXT: { -; CHECK-NEXT: r0 = and(r0,#128) +; CHECK-NEXT: p0 = !tstbit(r0,#7) ; CHECK-NEXT: } ; CHECK-NEXT: { -; CHECK-NEXT: r0 = cmp.eq(r0,#0) +; CHECK-NEXT: r0 = mux(p0,#1,#0) ; CHECK-NEXT: jumpr r31 ; CHECK-NEXT: } %sh = lshr i16 %x, 7 @@ -109,16 +86,14 @@ define i16 @is_bit_clear_i16(i16 %x) #0 { ret i16 %r } -; TODO: Match to tstbit? - define i8 @is_bit_clear_i8(i8 %x) #0 { ; CHECK-LABEL: is_bit_clear_i8: ; CHECK: // %bb.0: ; CHECK-NEXT: { -; CHECK-NEXT: r0 = and(r0,#8) +; CHECK-NEXT: p0 = !tstbit(r0,#3) ; CHECK-NEXT: } ; CHECK-NEXT: { -; CHECK-NEXT: r0 = cmp.eq(r0,#0) +; CHECK-NEXT: r0 = mux(p0,#1,#0) ; CHECK-NEXT: jumpr r31 ; CHECK-NEXT: } %sh = lshr i8 %x, 3 |