diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2011-05-02 19:34:44 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2011-05-02 19:34:44 +0000 |
| commit | 6b943ff3a3f8617113ecbf611cf0f8957e4e19d2 (patch) | |
| tree | fc5f365fb9035b2d0c622bbf06c9bbe8627d7279 /test/CodeGen/Thumb2 | |
| parent | d0e4e96dc17a6c1c6de3340842c80f0e187ba349 (diff) | |
Notes
Diffstat (limited to 'test/CodeGen/Thumb2')
| -rw-r--r-- | test/CodeGen/Thumb2/2009-08-06-SpDecBug.ll | 2 | ||||
| -rw-r--r-- | test/CodeGen/Thumb2/2009-09-28-ITBlockBug.ll | 2 | ||||
| -rw-r--r-- | test/CodeGen/Thumb2/2009-10-15-ITBlockBranch.ll | 5 | ||||
| -rw-r--r-- | test/CodeGen/Thumb2/2010-03-15-AsmCCClobber.ll | 16 | ||||
| -rw-r--r-- | test/CodeGen/Thumb2/2010-11-22-EpilogueBug.ll | 2 | ||||
| -rw-r--r-- | test/CodeGen/Thumb2/2011-04-21-FILoweringBug.ll | 23 | ||||
| -rw-r--r-- | test/CodeGen/Thumb2/bfi.ll | 11 | ||||
| -rw-r--r-- | test/CodeGen/Thumb2/cross-rc-coalescing-2.ll | 2 | ||||
| -rw-r--r-- | test/CodeGen/Thumb2/ldr-str-imm12.ll | 4 | ||||
| -rw-r--r-- | test/CodeGen/Thumb2/machine-licm.ll | 26 | ||||
| -rw-r--r-- | test/CodeGen/Thumb2/thumb2-ldrd.ll | 2 | ||||
| -rw-r--r-- | test/CodeGen/Thumb2/thumb2-lsr3.ll | 6 | ||||
| -rw-r--r-- | test/CodeGen/Thumb2/thumb2-ror.ll | 17 | ||||
| -rw-r--r-- | test/CodeGen/Thumb2/thumb2-ror2.ll | 11 | ||||
| -rw-r--r-- | test/CodeGen/Thumb2/thumb2-sbc.ll | 19 | ||||
| -rw-r--r-- | test/CodeGen/Thumb2/thumb2-sub3.ll | 10 | ||||
| -rw-r--r-- | test/CodeGen/Thumb2/thumb2-sub5.ll | 7 | ||||
| -rw-r--r-- | test/CodeGen/Thumb2/thumb2-uxtb.ll | 4 |
18 files changed, 110 insertions, 59 deletions
diff --git a/test/CodeGen/Thumb2/2009-08-06-SpDecBug.ll b/test/CodeGen/Thumb2/2009-08-06-SpDecBug.ll index 550b3efae998..ff68e665078a 100644 --- a/test/CodeGen/Thumb2/2009-08-06-SpDecBug.ll +++ b/test/CodeGen/Thumb2/2009-08-06-SpDecBug.ll @@ -8,7 +8,7 @@ entry: ; CHECK: sub sp, #8 ; CHECK: push ; CHECK: add r7, sp, #4 -; CHECK: subs r4, r7, #4 +; CHECK: sub.w r4, r7, #4 ; CHECK: mov sp, r4 ; CHECK-NOT: mov sp, r7 ; CHECK: add sp, #8 diff --git a/test/CodeGen/Thumb2/2009-09-28-ITBlockBug.ll b/test/CodeGen/Thumb2/2009-09-28-ITBlockBug.ll index b2ed8fc7a67c..ac3e80a7c113 100644 --- a/test/CodeGen/Thumb2/2009-09-28-ITBlockBug.ll +++ b/test/CodeGen/Thumb2/2009-09-28-ITBlockBug.ll @@ -1,4 +1,4 @@ -; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 | FileCheck %s +; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 -disable-cgp-branch-opts | FileCheck %s %struct.pix_pos = type { i32, i32, i32, i32, i32, i32 } diff --git a/test/CodeGen/Thumb2/2009-10-15-ITBlockBranch.ll b/test/CodeGen/Thumb2/2009-10-15-ITBlockBranch.ll index 45d356c3dc67..3594424e290b 100644 --- a/test/CodeGen/Thumb2/2009-10-15-ITBlockBranch.ll +++ b/test/CodeGen/Thumb2/2009-10-15-ITBlockBranch.ll @@ -1,4 +1,5 @@ ; RUN: llc < %s -mtriple=thumbv7-eabi -mcpu=cortex-a8 -float-abi=hard | FileCheck %s +; RUN: llc < %s -mtriple=thumbv7-eabi -mcpu=cortex-a8 -float-abi=hard -regalloc=basic | FileCheck %s ; PR5204 %"struct.__gnu_cxx::__normal_iterator<char*,std::basic_string<char, std::char_traits<char>, std::allocator<char> > >" = type { i8* } @@ -11,8 +12,8 @@ define weak arm_aapcs_vfpcc i32 @_ZNKSs7compareERKSs(%"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >"* %this, %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >"* %__str) { ; CHECK: _ZNKSs7compareERKSs: ; CHECK: it eq -; CHECK-NEXT: subeq r0, r6, r7 -; CHECK-NEXT: ldmia.w sp!, {r4, r5, r6, r7, r8, pc} +; CHECK-NEXT: subeq r0, r{{[0-9]+}}, r{{[0-9]+}} +; CHECK-NEXT: ldmia.w sp!, entry: %0 = tail call arm_aapcs_vfpcc i32 @_ZNKSs4sizeEv(%"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >"* %this) ; <i32> [#uses=3] %1 = tail call arm_aapcs_vfpcc i32 @_ZNKSs4sizeEv(%"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >"* %__str) ; <i32> [#uses=3] diff --git a/test/CodeGen/Thumb2/2010-03-15-AsmCCClobber.ll b/test/CodeGen/Thumb2/2010-03-15-AsmCCClobber.ll index 458569ec93b5..bb734aca4e68 100644 --- a/test/CodeGen/Thumb2/2010-03-15-AsmCCClobber.ll +++ b/test/CodeGen/Thumb2/2010-03-15-AsmCCClobber.ll @@ -1,10 +1,11 @@ ; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 \ -; RUN: -pre-RA-sched=source | FileCheck -check-prefix=SOURCE %s +; RUN: -pre-RA-sched=source | FileCheck %s ; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 \ -; RUN: -pre-RA-sched=list-hybrid | FileCheck -check-prefix=HYBRID %s +; RUN: -pre-RA-sched=list-hybrid | FileCheck %s +; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 -regalloc=basic | FileCheck %s ; Radar 7459078 target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:32-n32" - + %0 = type { i32, i32 } %s1 = type { %s3, i32, %s4, i8*, void (i8*, i8*)*, i8*, i32*, i32*, i32*, i32, i64, [1 x i32] } %s2 = type { i32 (...)**, %s4 } @@ -13,11 +14,10 @@ target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32- %s5 = type { i32 } ; Make sure the cmp is not scheduled before the InlineAsm that clobbers cc. -; SOURCE: InlineAsm End -; SOURCE: cmp -; SOURCE: beq -; HYBRID: InlineAsm End -; HYBRID: cbz +; CHECK: blx _f2 +; CHECK: cmp r0, #0 +; CHECK-NOT: cmp +; CHECK: InlineAsm Start define void @test(%s1* %this, i32 %format, i32 %w, i32 %h, i32 %levels, i32* %s, i8* %data, i32* nocapture %rowbytes, void (i8*, i8*)* %release, i8* %info) nounwind { entry: %tmp1 = getelementptr inbounds %s1* %this, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 diff --git a/test/CodeGen/Thumb2/2010-11-22-EpilogueBug.ll b/test/CodeGen/Thumb2/2010-11-22-EpilogueBug.ll index 313728c1b56a..d2140a10048d 100644 --- a/test/CodeGen/Thumb2/2010-11-22-EpilogueBug.ll +++ b/test/CodeGen/Thumb2/2010-11-22-EpilogueBug.ll @@ -8,7 +8,7 @@ declare void @bar() nounwind optsize define void @foo() nounwind optsize { ; CHECK: foo: ; CHECK: push -; CHECK: add r7, sp, #4 +; CHECK: mov r7, sp ; CHECK: sub sp, #4 entry: %m.i = alloca %struct.buf*, align 4 diff --git a/test/CodeGen/Thumb2/2011-04-21-FILoweringBug.ll b/test/CodeGen/Thumb2/2011-04-21-FILoweringBug.ll new file mode 100644 index 000000000000..604a352baa11 --- /dev/null +++ b/test/CodeGen/Thumb2/2011-04-21-FILoweringBug.ll @@ -0,0 +1,23 @@ +; RUN: llc < %s -mtriple=thumbv7-apple-darwin | FileCheck %s + +; Use sp, #imm to lower frame indices when the offset is multiple of 4 +; and in the range of 0-1020. This saves code size by utilizing +; 16-bit instructions. +; rdar://9321541 + +define i32 @t() nounwind { +entry: +; CHECK: t: +; CHECK: sub sp, #12 +; CHECK-NOT: sub +; CHECK: add r0, sp, #4 +; CHECK: add r1, sp, #8 +; CHECK: mov r2, sp + %size = alloca i32, align 4 + %count = alloca i32, align 4 + %index = alloca i32, align 4 + %0 = call i32 @foo(i32* %count, i32* %size, i32* %index) nounwind + ret i32 %0 +} + +declare i32 @foo(i32*, i32*, i32*) diff --git a/test/CodeGen/Thumb2/bfi.ll b/test/CodeGen/Thumb2/bfi.ll index 6fb2fc888d9f..0e767707b6cf 100644 --- a/test/CodeGen/Thumb2/bfi.ll +++ b/test/CodeGen/Thumb2/bfi.ll @@ -49,3 +49,14 @@ define i32 @f4(i32 %a) nounwind { %ins12 = or i32 %ins7, 3137 ret i32 %ins12 } + +; rdar://9177502 +define i32 @f5(i32 %a, i32 %b) nounwind readnone { +entry: +; CHECK: f5 +; CHECK-NOT: bfi r0, r2, #0, #1 +%and = and i32 %a, 2 +%b.masked = and i32 %b, -2 +%and3 = or i32 %b.masked, %and +ret i32 %and3 +} diff --git a/test/CodeGen/Thumb2/cross-rc-coalescing-2.ll b/test/CodeGen/Thumb2/cross-rc-coalescing-2.ll index b8c8cb122a19..edbf83405be7 100644 --- a/test/CodeGen/Thumb2/cross-rc-coalescing-2.ll +++ b/test/CodeGen/Thumb2/cross-rc-coalescing-2.ll @@ -6,8 +6,6 @@ entry: br label %bb5 bb5: ; preds = %bb5, %entry -; CHECK: %bb5 -; CHECK: bne br i1 undef, label %bb5, label %bb.nph bb.nph: ; preds = %bb5 diff --git a/test/CodeGen/Thumb2/ldr-str-imm12.ll b/test/CodeGen/Thumb2/ldr-str-imm12.ll index 650d788cb4d2..e1932bd2748a 100644 --- a/test/CodeGen/Thumb2/ldr-str-imm12.ll +++ b/test/CodeGen/Thumb2/ldr-str-imm12.ll @@ -1,4 +1,4 @@ -; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 -relocation-model=pic -disable-fp-elim | FileCheck %s +; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 -relocation-model=pic -disable-fp-elim -regalloc=linearscan | FileCheck %s ; rdar://7352504 ; Make sure we use "str r9, [sp, #+28]" instead of "sub.w r4, r7, #256" followed by "str r9, [r4, #-32]". @@ -22,7 +22,7 @@ define %union.rec* @Manifest(%union.rec* %x, %union.rec* %env, %struct.STYLE* %style, %union.rec** %bthr, %union.rec** %fthr, %union.rec** %target, %union.rec** %crs, i32 %ok, i32 %need_expand, %union.rec** %enclose, i32 %fcr) nounwind { entry: -; CHECK: ldr.w {{(r[0-9])|(lr)}}, [r7, #28] +; CHECK: ldr.w {{(r[0-9]+)|(lr)}}, [r7, #28] %xgaps.i = alloca [32 x %union.rec*], align 4 ; <[32 x %union.rec*]*> [#uses=0] %ycomp.i = alloca [32 x %union.rec*], align 4 ; <[32 x %union.rec*]*> [#uses=0] br label %bb20 diff --git a/test/CodeGen/Thumb2/machine-licm.ll b/test/CodeGen/Thumb2/machine-licm.ll index 5e776dd8937c..ee054a165a01 100644 --- a/test/CodeGen/Thumb2/machine-licm.ll +++ b/test/CodeGen/Thumb2/machine-licm.ll @@ -14,19 +14,19 @@ entry: bb.nph: ; preds = %entry ; CHECK: BB#1 -; CHECK: movw r2, :lower16:L_GV$non_lazy_ptr -; CHECK: movt r2, :upper16:L_GV$non_lazy_ptr -; CHECK: ldr r2, [r2] -; CHECK: ldr r3, [r2] +; CHECK: movw r[[R2:[0-9]+]], :lower16:L_GV$non_lazy_ptr +; CHECK: movt r[[R2]], :upper16:L_GV$non_lazy_ptr +; CHECK: ldr{{(.w)?}} r[[R2b:[0-9]+]], [r[[R2]] +; CHECK: ldr{{.*}}, [r[[R2b]] ; CHECK: LBB0_2 ; CHECK-NOT: LCPI0_0: ; PIC: BB#1 -; PIC: movw r2, :lower16:(L_GV$non_lazy_ptr-(LPC0_0+4)) -; PIC: movt r2, :upper16:(L_GV$non_lazy_ptr-(LPC0_0+4)) -; PIC: add r2, pc -; PIC: ldr r2, [r2] -; PIC: ldr r3, [r2] +; PIC: movw r[[R2:[0-9]+]], :lower16:(L_GV$non_lazy_ptr-(LPC0_0+4)) +; PIC: movt r[[R2]], :upper16:(L_GV$non_lazy_ptr-(LPC0_0+4)) +; PIC: add r[[R2]], pc +; PIC: ldr{{(.w)?}} r[[R2b:[0-9]+]], [r[[R2]] +; PIC: ldr{{.*}}, [r[[R2b]] ; PIC: LBB0_2 ; PIC-NOT: LCPI0_0: ; PIC: .section @@ -88,10 +88,10 @@ define zeroext i16 @t3(i8 zeroext %data, i16 zeroext %crc) nounwind readnone { bb.nph: ; CHECK: bb.nph ; CHECK: movw {{(r[0-9])|(lr)}}, #32768 -; CHECK: movs {{(r[0-9])|(lr)}}, #8 -; CHECK: movw [[REGISTER:(r[0-9])|(lr)]], #16386 -; CHECK: movw {{(r[0-9])|(lr)}}, #65534 -; CHECK: movt {{(r[0-9])|(lr)}}, #65535 +; CHECK: movs {{(r[0-9]+)|(lr)}}, #0 +; CHECK: movw [[REGISTER:(r[0-9]+)|(lr)]], #16386 +; CHECK: movw {{(r[0-9]+)|(lr)}}, #65534 +; CHECK: movt {{(r[0-9]+)|(lr)}}, #65535 br label %bb bb: ; preds = %bb, %bb.nph diff --git a/test/CodeGen/Thumb2/thumb2-ldrd.ll b/test/CodeGen/Thumb2/thumb2-ldrd.ll index a747d5f75697..d3b781dbc0d4 100644 --- a/test/CodeGen/Thumb2/thumb2-ldrd.ll +++ b/test/CodeGen/Thumb2/thumb2-ldrd.ll @@ -1,4 +1,4 @@ -; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mattr=+thumb2 | FileCheck %s +; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mattr=+thumb2 -regalloc=linearscan | FileCheck %s @b = external global i64* diff --git a/test/CodeGen/Thumb2/thumb2-lsr3.ll b/test/CodeGen/Thumb2/thumb2-lsr3.ll index 5cfd3f5198b7..e7ba782afe6a 100644 --- a/test/CodeGen/Thumb2/thumb2-lsr3.ll +++ b/test/CodeGen/Thumb2/thumb2-lsr3.ll @@ -1,9 +1,9 @@ -; RUN: llc < %s -march=thumb -mattr=+thumb2 +; RUN: llc < %s -march=thumb -mattr=+thumb2 | FileCheck %s define i1 @test1(i64 %poscnt, i32 %work) { entry: -; CHECK: rrx r0, r0 ; CHECK: lsrs.w r1, r1, #1 +; CHECK: rrx r0, r0 %0 = lshr i64 %poscnt, 1 %1 = icmp eq i64 %0, 0 ret i1 %1 @@ -11,8 +11,8 @@ entry: define i1 @test2(i64 %poscnt, i32 %work) { entry: -; CHECK: rrx r0, r0 ; CHECK: asrs.w r1, r1, #1 +; CHECK: rrx r0, r0 %0 = ashr i64 %poscnt, 1 %1 = icmp eq i64 %0, 0 ret i1 %1 diff --git a/test/CodeGen/Thumb2/thumb2-ror.ll b/test/CodeGen/Thumb2/thumb2-ror.ll index 0200116fc31a..590c333b3d1a 100644 --- a/test/CodeGen/Thumb2/thumb2-ror.ll +++ b/test/CodeGen/Thumb2/thumb2-ror.ll @@ -1,11 +1,24 @@ ; RUN: llc < %s -march=thumb -mattr=+thumb2 | FileCheck %s +; CHECK: f1: +; CHECK: ror.w r0, r0, #22 define i32 @f1(i32 %a) { %l8 = shl i32 %a, 10 %r8 = lshr i32 %a, 22 %tmp = or i32 %l8, %r8 ret i32 %tmp } -; CHECK: f1: -; CHECK: ror.w r0, r0, #22 + +; CHECK: f2: +; CHECK-NOT: and +; CHECK: ror +define i32 @f2(i32 %v, i32 %nbits) { +entry: + %and = and i32 %nbits, 31 + %shr = lshr i32 %v, %and + %sub = sub i32 32, %and + %shl = shl i32 %v, %sub + %or = or i32 %shl, %shr + ret i32 %or +}
\ No newline at end of file diff --git a/test/CodeGen/Thumb2/thumb2-ror2.ll b/test/CodeGen/Thumb2/thumb2-ror2.ll deleted file mode 100644 index ffd1dd7dc613..000000000000 --- a/test/CodeGen/Thumb2/thumb2-ror2.ll +++ /dev/null @@ -1,11 +0,0 @@ -; RUN: llc < %s -march=thumb -mattr=+thumb2 | FileCheck %s - -define i32 @f1(i32 %a, i32 %b) { -; CHECK: f1: -; CHECK: rors r0, r1 - %db = sub i32 32, %b - %l8 = shl i32 %a, %b - %r8 = lshr i32 %a, %db - %tmp = or i32 %l8, %r8 - ret i32 %tmp -} diff --git a/test/CodeGen/Thumb2/thumb2-sbc.ll b/test/CodeGen/Thumb2/thumb2-sbc.ll index de6502d2e63e..53f45ea951f5 100644 --- a/test/CodeGen/Thumb2/thumb2-sbc.ll +++ b/test/CodeGen/Thumb2/thumb2-sbc.ll @@ -39,7 +39,7 @@ define i64 @f5(i64 %a) { ; CHECK: f5 ; CHECK: subs r0, #2 ; CHECK: adc r1, r1, #-1448498775 - %tmp = sub i64 %a, 6221254862626095106 + %tmp = sub i64 %a, 6221254862626095106 ret i64 %tmp } @@ -48,7 +48,22 @@ define i64 @f6(i64 %a) { ; CHECK: f6 ; CHECK: subs r0, #2 ; CHECK: sbc r1, r1, #66846720 - %tmp = sub i64 %a, 287104476244869122 + %tmp = sub i64 %a, 287104476244869122 ret i64 %tmp } +; Example from numerics code that manually computes wider-than-64 values. +; +; CHECK: livecarry: +; CHECK: adds +; CHECK: adcs +; CHECK: adc +define i64 @livecarry(i64 %carry, i32 %digit) nounwind { + %ch = lshr i64 %carry, 32 + %cl = and i64 %carry, 4294967295 + %truncdigit = zext i32 %digit to i64 + %prod = add i64 %cl, %truncdigit + %ph = lshr i64 %prod, 32 + %carryresult = add i64 %ch, %ph + ret i64 %carryresult +} diff --git a/test/CodeGen/Thumb2/thumb2-sub3.ll b/test/CodeGen/Thumb2/thumb2-sub3.ll index 855ad06a63f1..1dbda57f2369 100644 --- a/test/CodeGen/Thumb2/thumb2-sub3.ll +++ b/test/CodeGen/Thumb2/thumb2-sub3.ll @@ -4,7 +4,7 @@ define i64 @f1(i64 %a) { ; CHECK: f1 ; CHECK: subs r0, #171 -; CHECK: adc r1, r1, #-1 +; CHECK: sbc r1, r1, #0 %tmp = sub i64 %a, 171 ret i64 %tmp } @@ -13,7 +13,7 @@ define i64 @f1(i64 %a) { define i64 @f2(i64 %a) { ; CHECK: f2 ; CHECK: subs.w r0, r0, #1179666 -; CHECK: adc r1, r1, #-1 +; CHECK: sbc r1, r1, #0 %tmp = sub i64 %a, 1179666 ret i64 %tmp } @@ -22,7 +22,7 @@ define i64 @f2(i64 %a) { define i64 @f3(i64 %a) { ; CHECK: f3 ; CHECK: subs.w r0, r0, #872428544 -; CHECK: adc r1, r1, #-1 +; CHECK: sbc r1, r1, #0 %tmp = sub i64 %a, 872428544 ret i64 %tmp } @@ -31,7 +31,7 @@ define i64 @f3(i64 %a) { define i64 @f4(i64 %a) { ; CHECK: f4 ; CHECK: subs.w r0, r0, #1448498774 -; CHECK: adc r1, r1, #-1 +; CHECK: sbc r1, r1, #0 %tmp = sub i64 %a, 1448498774 ret i64 %tmp } @@ -40,7 +40,7 @@ define i64 @f4(i64 %a) { define i64 @f5(i64 %a) { ; CHECK: f5 ; CHECK: subs.w r0, r0, #66846720 -; CHECK: adc r1, r1, #-1 +; CHECK: sbc r1, r1, #0 %tmp = sub i64 %a, 66846720 ret i64 %tmp } diff --git a/test/CodeGen/Thumb2/thumb2-sub5.ll b/test/CodeGen/Thumb2/thumb2-sub5.ll index c3b56bc09c85..6edd789beec5 100644 --- a/test/CodeGen/Thumb2/thumb2-sub5.ll +++ b/test/CodeGen/Thumb2/thumb2-sub5.ll @@ -1,9 +1,10 @@ -; RUN: llc < %s -march=thumb -mattr=+thumb2 | FileCheck %s +; RUN: llc < %s -march=thumb -mattr=+thumb2 -mattr=+32bit | FileCheck %s define i64 @f1(i64 %a, i64 %b) { ; CHECK: f1: -; CHECK: subs r0, r0, r2 -; CHECK: sbcs r1, r3 +; CHECK: subs.w r0, r0, r2 +; To test dead_carry, +32bit prevents sbc conveting to 16-bit sbcs +; CHECK: sbc.w r1, r1, r3 %tmp = sub i64 %a, %b ret i64 %tmp } diff --git a/test/CodeGen/Thumb2/thumb2-uxtb.ll b/test/CodeGen/Thumb2/thumb2-uxtb.ll index 2074f98cb608..35914b16790a 100644 --- a/test/CodeGen/Thumb2/thumb2-uxtb.ll +++ b/test/CodeGen/Thumb2/thumb2-uxtb.ll @@ -128,9 +128,9 @@ define i32 @test10(i32 %p0) { ; ARMv7M: test10 ; ARMv7M: mov.w r1, #16253176 +; ARMv7M: mov.w r2, #458759 ; ARMv7M: and.w r0, r1, r0, lsr #7 -; ARMv7M: mov.w r1, #458759 -; ARMv7M: and.w r1, r1, r0, lsr #5 +; ARMv7M: and.w r1, r2, r0, lsr #5 ; ARMv7M: orrs r0, r1 %tmp1 = lshr i32 %p0, 7 ; <i32> [#uses=1] %tmp2 = and i32 %tmp1, 16253176 ; <i32> [#uses=2] |
