diff options
author | Eli Friedman <efriedma@codeaurora.org> | 2018-10-31 21:45:48 +0000 |
---|---|---|
committer | Eli Friedman <efriedma@codeaurora.org> | 2018-10-31 21:45:48 +0000 |
commit | 063fd98bcc06e49009df8cbd18484a81a612aeb6 (patch) | |
tree | c47b4a57cf874087af9d78caa3af67ccb3e9202e /llvm/test/CodeGen/ARM | |
parent | e5f13519d4a6e196d5b714b6233b9fc875cbee9b (diff) | |
download | bcm5719-llvm-063fd98bcc06e49009df8cbd18484a81a612aeb6.tar.gz bcm5719-llvm-063fd98bcc06e49009df8cbd18484a81a612aeb6.zip |
[ARM] Add missing pseudo-instruction for Thumb1 RSBS.
Shows up rarely for 64-bit arithmetic, more frequently for the compare
patterns added in r325323.
Differential Revision: https://reviews.llvm.org/D53848
llvm-svn: 345782
Diffstat (limited to 'llvm/test/CodeGen/ARM')
-rw-r--r-- | llvm/test/CodeGen/ARM/and-load-combine.ll | 42 | ||||
-rw-r--r-- | llvm/test/CodeGen/ARM/atomic-cmpxchg.ll | 6 | ||||
-rw-r--r-- | llvm/test/CodeGen/ARM/select-imm.ll | 12 | ||||
-rw-r--r-- | llvm/test/CodeGen/ARM/smml.ll | 2 |
4 files changed, 21 insertions, 41 deletions
diff --git a/llvm/test/CodeGen/ARM/and-load-combine.ll b/llvm/test/CodeGen/ARM/and-load-combine.ll index 09acefad305..8f08909c816 100644 --- a/llvm/test/CodeGen/ARM/and-load-combine.ll +++ b/llvm/test/CodeGen/ARM/and-load-combine.ll @@ -28,8 +28,7 @@ define arm_aapcscc zeroext i1 @cmp_xor8_short_short(i16* nocapture readonly %a, ; THUMB1-NEXT: ldrb r0, [r0] ; THUMB1-NEXT: ldrb r1, [r1] ; THUMB1-NEXT: eors r1, r0 -; THUMB1-NEXT: movs r0, #0 -; THUMB1-NEXT: subs r0, r0, r1 +; THUMB1-NEXT: rsbs r0, r1, #0 ; THUMB1-NEXT: adcs r0, r1 ; THUMB1-NEXT: bx lr ; @@ -74,8 +73,7 @@ define arm_aapcscc zeroext i1 @cmp_xor8_short_int(i16* nocapture readonly %a, i3 ; THUMB1-NEXT: ldrb r0, [r0] ; THUMB1-NEXT: ldrb r1, [r1] ; THUMB1-NEXT: eors r1, r0 -; THUMB1-NEXT: movs r0, #0 -; THUMB1-NEXT: subs r0, r0, r1 +; THUMB1-NEXT: rsbs r0, r1, #0 ; THUMB1-NEXT: adcs r0, r1 ; THUMB1-NEXT: bx lr ; @@ -121,8 +119,7 @@ define arm_aapcscc zeroext i1 @cmp_xor8_int_int(i32* nocapture readonly %a, i32* ; THUMB1-NEXT: ldrb r0, [r0] ; THUMB1-NEXT: ldrb r1, [r1] ; THUMB1-NEXT: eors r1, r0 -; THUMB1-NEXT: movs r0, #0 -; THUMB1-NEXT: subs r0, r0, r1 +; THUMB1-NEXT: rsbs r0, r1, #0 ; THUMB1-NEXT: adcs r0, r1 ; THUMB1-NEXT: bx lr ; @@ -167,8 +164,7 @@ define arm_aapcscc zeroext i1 @cmp_xor16(i32* nocapture readonly %a, i32* nocapt ; THUMB1-NEXT: ldrh r0, [r0] ; THUMB1-NEXT: ldrh r1, [r1] ; THUMB1-NEXT: eors r1, r0 -; THUMB1-NEXT: movs r0, #0 -; THUMB1-NEXT: subs r0, r0, r1 +; THUMB1-NEXT: rsbs r0, r1, #0 ; THUMB1-NEXT: adcs r0, r1 ; THUMB1-NEXT: bx lr ; @@ -213,8 +209,7 @@ define arm_aapcscc zeroext i1 @cmp_or8_short_short(i16* nocapture readonly %a, i ; THUMB1-NEXT: ldrb r0, [r0] ; THUMB1-NEXT: ldrb r1, [r1] ; THUMB1-NEXT: orrs r1, r0 -; THUMB1-NEXT: movs r0, #0 -; THUMB1-NEXT: subs r0, r0, r1 +; THUMB1-NEXT: rsbs r0, r1, #0 ; THUMB1-NEXT: adcs r0, r1 ; THUMB1-NEXT: bx lr ; @@ -259,8 +254,7 @@ define arm_aapcscc zeroext i1 @cmp_or8_short_int(i16* nocapture readonly %a, i32 ; THUMB1-NEXT: ldrb r0, [r0] ; THUMB1-NEXT: ldrb r1, [r1] ; THUMB1-NEXT: orrs r1, r0 -; THUMB1-NEXT: movs r0, #0 -; THUMB1-NEXT: subs r0, r0, r1 +; THUMB1-NEXT: rsbs r0, r1, #0 ; THUMB1-NEXT: adcs r0, r1 ; THUMB1-NEXT: bx lr ; @@ -306,8 +300,7 @@ define arm_aapcscc zeroext i1 @cmp_or8_int_int(i32* nocapture readonly %a, i32* ; THUMB1-NEXT: ldrb r0, [r0] ; THUMB1-NEXT: ldrb r1, [r1] ; THUMB1-NEXT: orrs r1, r0 -; THUMB1-NEXT: movs r0, #0 -; THUMB1-NEXT: subs r0, r0, r1 +; THUMB1-NEXT: rsbs r0, r1, #0 ; THUMB1-NEXT: adcs r0, r1 ; THUMB1-NEXT: bx lr ; @@ -352,8 +345,7 @@ define arm_aapcscc zeroext i1 @cmp_or16(i32* nocapture readonly %a, i32* nocaptu ; THUMB1-NEXT: ldrh r0, [r0] ; THUMB1-NEXT: ldrh r1, [r1] ; THUMB1-NEXT: orrs r1, r0 -; THUMB1-NEXT: movs r0, #0 -; THUMB1-NEXT: subs r0, r0, r1 +; THUMB1-NEXT: rsbs r0, r1, #0 ; THUMB1-NEXT: adcs r0, r1 ; THUMB1-NEXT: bx lr ; @@ -398,8 +390,7 @@ define arm_aapcscc zeroext i1 @cmp_and8_short_short(i16* nocapture readonly %a, ; THUMB1-NEXT: ldrb r1, [r1] ; THUMB1-NEXT: ldrb r2, [r0] ; THUMB1-NEXT: ands r2, r1 -; THUMB1-NEXT: movs r0, #0 -; THUMB1-NEXT: subs r0, r0, r2 +; THUMB1-NEXT: rsbs r0, r2, #0 ; THUMB1-NEXT: adcs r0, r2 ; THUMB1-NEXT: bx lr ; @@ -444,8 +435,7 @@ define arm_aapcscc zeroext i1 @cmp_and8_short_int(i16* nocapture readonly %a, i3 ; THUMB1-NEXT: ldrb r0, [r0] ; THUMB1-NEXT: ldrb r1, [r1] ; THUMB1-NEXT: ands r1, r0 -; THUMB1-NEXT: movs r0, #0 -; THUMB1-NEXT: subs r0, r0, r1 +; THUMB1-NEXT: rsbs r0, r1, #0 ; THUMB1-NEXT: adcs r0, r1 ; THUMB1-NEXT: bx lr ; @@ -491,8 +481,7 @@ define arm_aapcscc zeroext i1 @cmp_and8_int_int(i32* nocapture readonly %a, i32* ; THUMB1-NEXT: ldrb r1, [r1] ; THUMB1-NEXT: ldrb r2, [r0] ; THUMB1-NEXT: ands r2, r1 -; THUMB1-NEXT: movs r0, #0 -; THUMB1-NEXT: subs r0, r0, r2 +; THUMB1-NEXT: rsbs r0, r2, #0 ; THUMB1-NEXT: adcs r0, r2 ; THUMB1-NEXT: bx lr ; @@ -537,8 +526,7 @@ define arm_aapcscc zeroext i1 @cmp_and16(i32* nocapture readonly %a, i32* nocapt ; THUMB1-NEXT: ldrh r1, [r1] ; THUMB1-NEXT: ldrh r2, [r0] ; THUMB1-NEXT: ands r2, r1 -; THUMB1-NEXT: movs r0, #0 -; THUMB1-NEXT: subs r0, r0, r2 +; THUMB1-NEXT: rsbs r0, r2, #0 ; THUMB1-NEXT: adcs r0, r2 ; THUMB1-NEXT: bx lr ; @@ -881,8 +869,7 @@ define arm_aapcscc i1 @test6(i8* %x, i8 %y, i8 %z) { ; THUMB1-NEXT: ands r0, r1 ; THUMB1-NEXT: uxtb r1, r2 ; THUMB1-NEXT: subs r1, r0, r1 -; THUMB1-NEXT: movs r0, #0 -; THUMB1-NEXT: subs r0, r0, r1 +; THUMB1-NEXT: rsbs r0, r1, #0 ; THUMB1-NEXT: adcs r0, r1 ; THUMB1-NEXT: bx lr ; @@ -929,8 +916,7 @@ define arm_aapcscc i1 @test7(i16* %x, i16 %y, i8 %z) { ; THUMB1-NEXT: ands r0, r1 ; THUMB1-NEXT: uxtb r1, r2 ; THUMB1-NEXT: subs r1, r0, r1 -; THUMB1-NEXT: movs r0, #0 -; THUMB1-NEXT: subs r0, r0, r1 +; THUMB1-NEXT: rsbs r0, r1, #0 ; THUMB1-NEXT: adcs r0, r1 ; THUMB1-NEXT: bx lr ; diff --git a/llvm/test/CodeGen/ARM/atomic-cmpxchg.ll b/llvm/test/CodeGen/ARM/atomic-cmpxchg.ll index fd87e50d0b7..b5214f8d67e 100644 --- a/llvm/test/CodeGen/ARM/atomic-cmpxchg.ll +++ b/llvm/test/CodeGen/ARM/atomic-cmpxchg.ll @@ -24,8 +24,7 @@ entry: ; CHECK-THUMB: bl __sync_val_compare_and_swap_1 ; CHECK-THUMB-NOT: mov [[R1:r[0-7]]], r0 ; CHECK-THUMB: subs [[R1:r[0-7]]], r0, {{r[0-9]+}} -; CHECK-THUMB: movs r0, #0 -; CHECK-THUMB: subs r0, r0, [[R1]] +; CHECK-THUMB: rsbs r0, [[R1]], #0 ; CHECK-THUMB: adcs r0, [[R1]] ; CHECK-ARMV6-LABEL: test_cmpxchg_res_i8: @@ -47,8 +46,7 @@ entry: ; CHECK-THUMBV6-NEXT: bl __sync_val_compare_and_swap_1 ; CHECK-THUMBV6-NEXT: uxtb r1, r4 ; CHECK-THUMBV6-NEXT: subs [[R1:r[0-7]]], r0, {{r[0-9]+}} -; CHECK-THUMBV6-NEXT: movs r0, #0 -; CHECK-THUMBV6-NEXT: subs r0, r0, [[R1]] +; CHECK-THUMBV6-NEXT: rsbs r0, [[R1]], #0 ; CHECK-THUMBV6-NEXT: adcs r0, [[R1]] ; CHECK-ARMV7-LABEL: test_cmpxchg_res_i8: diff --git a/llvm/test/CodeGen/ARM/select-imm.ll b/llvm/test/CodeGen/ARM/select-imm.ll index 04f6d252e27..1e27024e7c7 100644 --- a/llvm/test/CodeGen/ARM/select-imm.ll +++ b/llvm/test/CodeGen/ARM/select-imm.ll @@ -71,8 +71,7 @@ entry: ; ARMT2: lsr r0, r0, #5 ; THUMB1-LABEL: t3: -; THUMB1: movs r1, #0 -; THUMB1: subs r1, r1, r0 +; THUMB1: rsbs r1, r0, #0 ; THUMB1: adcs r0, r1 ; THUMB2-LABEL: t3: @@ -116,8 +115,7 @@ entry: ; THUMB1-LABEL: t5: ; THUMB1-NOT: bne -; THUMB1: movs r0, #0 -; THUMB1: subs r0, r0, r1 +; THUMB1: rsbs r0, r1, #0 ; THUMB1: adcs r0, r1 ; THUMB2-LABEL: t5: @@ -196,8 +194,7 @@ entry: ; THUMB1: bl t7 ; THUMB1: mov r1, r0 ; THUMB1: subs r2, r4, #5 -; THUMB1: movs r0, #0 -; THUMB1: subs r0, r0, r2 +; THUMB1: rsbs r0, r2, #0 ; THUMB1: adcs r0, r2 ; THUMB2-LABEL: t8: @@ -302,8 +299,7 @@ entry: ; ARMT2: lsr r0, r0, #5 ; THUMB1-LABEL: t10: -; THUMB1: movs r0, #0 -; THUMB1: subs r0, r0, r1 +; THUMB1: rsbs r0, r1, #0 ; THUMB1: adcs r0, r1 ; THUMB2-LABEL: t10: diff --git a/llvm/test/CodeGen/ARM/smml.ll b/llvm/test/CodeGen/ARM/smml.ll index ba996e5ddd8..79048348e9b 100644 --- a/llvm/test/CodeGen/ARM/smml.ll +++ b/llvm/test/CodeGen/ARM/smml.ll @@ -44,7 +44,7 @@ declare void @opaque(i32) define void @test_used_flags(i32 %in1, i32 %in2) { ; CHECK-LABEL: test_used_flags: ; CHECK-THUMB: movs r2, #0 -; CHECK-THUMB: subs r0, r2, r0 +; CHECK-THUMB: rsbs r0, r0, #0 ; CHECK-THUMB: sbcs r2, r1 ; CHECK-THUMB: bge ; CHECK-V6: smull [[PROD_LO:r[0-9]+]], [[PROD_HI:r[0-9]+]], r0, r1 |