1 ; RUN: llc < %s -march=thumb -mattr=+thumb2 | FileCheck %s
3 define i32 @t2MOVTi16_ok_1(i32 %a) {
4 ; CHECK: t2MOVTi16_ok_1:
6 ; CHECK-NEXT: movt r1, #1234
7 ; CHECK: movw r1, #65535
8 ; CHECK-NEXT: movt r1, #1234
16 define i32 @t2MOVTi16_test_1(i32 %a) {
17 ; CHECK: t2MOVTi16_test_1:
19 ; CHECK-NEXT: movt r1, #1234
20 ; CHECK: movw r1, #65535
21 ; CHECK-NEXT: movt r1, #1234
24 %3 = or i32 %1, 255 ; This give us 0xFFFF in %3
25 %4 = shl i32 %2, 8 ; This gives us (1234 << 16) in %4
32 define i32 @t2MOVTi16_test_2(i32 %a) {
33 ; CHECK: t2MOVTi16_test_2:
35 ; CHECK-NEXT: movt r1, #1234
36 ; CHECK: movw r1, #65535
37 ; CHECK-NEXT: movt r1, #1234
40 %3 = or i32 %1, 255 ; This give us 0xFFFF in %3
43 %6 = shl i32 %4, 2 ; This gives us (1234 << 16) in %6
49 define i32 @t2MOVTi16_test_3(i32 %a) {
50 ; CHECK: t2MOVTi16_test_3:
52 ; CHECK-NEXT: movt r1, #1234
53 ; CHECK: movw r1, #65535
54 ; CHECK-NEXT: movt r1, #1234
57 %3 = or i32 %1, 255 ; This give us 0xFFFF in %3
60 %6 = shl i32 %4, 2 ; This gives us (1234 << 16) in %6
68 define i32 @t2MOVTi16_test_nomatch_1(i32 %a) {
69 ; CHECK: t2MOVTi16_test_nomatch_1:
70 ; CHECK: movw r1, #16384
71 ; CHECK-NEXT: movt r1, #154
72 ; CHECK: movw r1, #65535
73 ; CHECK-NEXT: movt r1, #154
76 %3 = or i32 %1, 255 ; This give us 0xFFFF in %3
79 %6 = shl i32 %4, 2 ; This gives us (1234 << 16) in %6