diff options
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/CodeGen/Hexagon/isel-prefer.ll | 4 | ||||
-rw-r--r-- | llvm/test/CodeGen/Hexagon/tstbit.ll | 43 |
2 files changed, 11 insertions, 36 deletions
diff --git a/llvm/test/CodeGen/Hexagon/isel-prefer.ll b/llvm/test/CodeGen/Hexagon/isel-prefer.ll index 1b69f569147..130ea04063b 100644 --- a/llvm/test/CodeGen/Hexagon/isel-prefer.ll +++ b/llvm/test/CodeGen/Hexagon/isel-prefer.ll @@ -80,8 +80,8 @@ b2: ret i32 %v6 } -define i32 @Prefer_S2_ntstbit_r(i32 %a0, i32 %a1) #0 { -; CHECK-LABEL: Prefer_S2_ntstbit_r: +define i32 @Prefer_S4_ntstbit_r(i32 %a0, i32 %a1) #0 { +; CHECK-LABEL: Prefer_S4_ntstbit_r: ; CHECK: // %bb.0: // %b2 ; CHECK-NEXT: { ; CHECK-NEXT: p0 = !tstbit(r0,r1) 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 |