[llvm-commits] [llvm] r84778 - in /llvm/trunk: lib/Target/ARM/ARMAddressingModes.h lib/Target/ARM/ARMInstrInfo.td lib/Target/ARM/ARMInstrThumb2.td test/CodeGen/Thumb2/thumb2-mov.ll test/CodeGen/Thumb2/thumb2-mov2.ll
Chris Lattner
clattner at apple.com
Wed Oct 21 16:17:24 PDT 2009
On Oct 21, 2009, at 1:44 PM, Jim Grosbach wrote:
> Author: grosbach
> Date: Wed Oct 21 15:44:34 2009
> New Revision: 84778
>
> URL: http://llvm.org/viewvc/llvm-project?rev=84778&view=rev
> Log:
> Improve handling of immediates by splitting 32-bit immediates into
> two 16-bit
> immediate operands when they will fit into the using instruction.
Nice
> -define i32 @t2_const_var2_1_fail_1(i32 %lhs) {
> -;CHECK: t2_const_var2_1_fail_1:
> -;CHECK: movt
> +define i32 @t2_const_var2_1_ok_2(i32 %lhs) {
> +;CHECK: t2_const_var2_1_ok_2:
> +;CHECK: #11206656
> +;CHECK: #187
Please add the expected instructions opcodes too, there is no reason
to be this "fuzzy".
-Chris
> %ret = add i32 %lhs, 11206843 ; 0x00ab00bb
> ret i32 %ret
> }
>
> -define i32 @t2_const_var2_1_fail_2(i32 %lhs) {
> -;CHECK: t2_const_var2_1_fail_2:
> -;CHECK: movt
> +define i32 @t2_const_var2_1_ok_3(i32 %lhs) {
> +;CHECK: t2_const_var2_1_ok_3:
> +;CHECK: #11206827
> +;CHECK: #16777216
> %ret = add i32 %lhs, 27984043 ; 0x01ab00ab
> ret i32 %ret
> }
>
> -define i32 @t2_const_var2_1_fail_3(i32 %lhs) {
> -;CHECK: t2_const_var2_1_fail_3:
> -;CHECK: movt
> +define i32 @t2_const_var2_1_ok_4(i32 %lhs) {
> +;CHECK: t2_const_var2_1_ok_4:
> +;CHECK: #16777472
> +;CHECK: #11206827
> %ret = add i32 %lhs, 27984299 ; 0x01ab01ab
> ret i32 %ret
> }
>
> -define i32 @t2_const_var2_1_fail_4(i32 %lhs) {
> -;CHECK: t2_const_var2_1_fail_4:
> +define i32 @t2_const_var2_1_fail_1(i32 %lhs) {
> +;CHECK: t2_const_var2_1_fail_1:
> ;CHECK: movt
> %ret = add i32 %lhs, 28027649 ; 0x01abab01
> ret i32 %ret
> @@ -46,29 +49,31 @@
> ret i32 %ret
> }
>
> -define i32 @t2_const_var2_2_fail_1(i32 %lhs) {
> -;CHECK: t2_const_var2_2_fail_1:
> -;CHECK: movt
> +define i32 @t2_const_var2_2_ok_2(i32 %lhs) {
> +;CHECK: t2_const_var2_2_ok_2:
> +;CHECK: #-1426063360
> +;CHECK: #47616
> %ret = add i32 %lhs, 2868951552 ; 0xab00ba00
> ret i32 %ret
> }
>
> -define i32 @t2_const_var2_2_fail_2(i32 %lhs) {
> -;CHECK: t2_const_var2_2_fail_2:
> -;CHECK: movt
> +define i32 @t2_const_var2_2_ok_3(i32 %lhs) {
> +;CHECK: t2_const_var2_2_ok_3:
> +;CHECK: #-1426019584
> %ret = add i32 %lhs, 2868947728 ; 0xab00ab10
> ret i32 %ret
> }
>
> -define i32 @t2_const_var2_2_fail_3(i32 %lhs) {
> -;CHECK: t2_const_var2_2_fail_3:
> -;CHECK: movt
> +define i32 @t2_const_var2_2_ok_4(i32 %lhs) {
> +;CHECK: t2_const_var2_2_ok_4:
> +;CHECK: #-1426019584
> +;CHECK: #1048592
> %ret = add i32 %lhs, 2869996304 ; 0xab10ab10
> ret i32 %ret
> }
>
> -define i32 @t2_const_var2_2_fail_4(i32 %lhs) {
> -;CHECK: t2_const_var2_2_fail_4:
> +define i32 @t2_const_var2_2_fail_1(i32 %lhs) {
> +;CHECK: t2_const_var2_2_fail_1:
> ;CHECK: movt
> %ret = add i32 %lhs, 279685904 ; 0x10abab10
> ret i32 %ret
> @@ -125,9 +130,10 @@
> ret i32 %ret
> }
>
> -define i32 @t2_const_var3_2_fail_1(i32 %lhs) {
> -;CHECK: t2_const_var3_2_fail_1:
> -;CHECK: movt
> +define i32 @t2_const_var3_2_ok_2(i32 %lhs) {
> +;CHECK: t2_const_var3_2_ok_2:
> +;CHECK: #2097152
> +;CHECK: #1843200
> %ret = add i32 %lhs, 3940352 ; 0b00000000001111000010000000000000
> ret i32 %ret
> }
>
> Modified: llvm/trunk/test/CodeGen/Thumb2/thumb2-mov2.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Thumb2/thumb2-mov2.ll?rev=84778&r1=84777&r2=84778&view=diff
>
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- llvm/trunk/test/CodeGen/Thumb2/thumb2-mov2.ll (original)
> +++ llvm/trunk/test/CodeGen/Thumb2/thumb2-mov2.ll Wed Oct 21
> 15:44:34 2009
> @@ -55,10 +55,10 @@
>
> define i32 @t2MOVTi16_test_nomatch_1(i32 %a) {
> ; CHECK: t2MOVTi16_test_nomatch_1:
> -; CHECK: movw r1, #16384
> -; CHECK-NEXT: movt r1, #154
> +; CHECK: #8388608
> ; CHECK: movw r1, #65535
> ; CHECK-NEXT: movt r1, #154
> +; CHECK: #1720320
> %1 = shl i32 255, 8
> %2 = shl i32 1234, 8
> %3 = or i32 %1, 255 ; This give us 0xFFFF in %3
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list