summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen')
-rw-r--r--llvm/test/CodeGen/Hexagon/isel-prefer.ll4
-rw-r--r--llvm/test/CodeGen/Hexagon/tstbit.ll43
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
OpenPOWER on IntegriCloud