121
|
1 ; RUN: llc -march=mips64 -mcpu=mips64r2 -target-abi=n64 < %s -o - | FileCheck %s
|
|
2
|
|
3 define i64 @dext_add_zext(i32 signext %n) {
|
|
4 entry:
|
|
5 %add = add i32 %n, 1
|
|
6 %res = zext i32 %add to i64
|
|
7 ret i64 %res
|
|
8
|
|
9 ; CHECK-LABEL: dext_add_zext:
|
|
10 ; CHECK: dext $[[R0:[0-9]+]], $[[R0:[0-9]+]], 0, 32
|
|
11
|
|
12 }
|
|
13
|
|
14 define i32 @ext_and24(i32 signext %a) {
|
|
15 entry:
|
|
16 %and = and i32 %a, 16777215
|
|
17 ret i32 %and
|
|
18
|
|
19 ; CHECK-LABEL: ext_and24:
|
|
20 ; CHECK: ext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 0, 24
|
|
21
|
|
22 }
|
|
23
|
|
24 define i64 @dext_and32(i64 zeroext %a) {
|
|
25 entry:
|
|
26 %and = and i64 %a, 4294967295
|
|
27 ret i64 %and
|
|
28
|
|
29 ; CHECK-LABEL: dext_and32:
|
|
30 ; CHECK: dext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 0, 32
|
|
31
|
|
32 }
|
|
33
|
|
34 define i64 @dext_and35(i64 zeroext %a) {
|
|
35 entry:
|
|
36 %and = and i64 %a, 34359738367
|
|
37 ret i64 %and
|
|
38
|
|
39 ; CHECK-LABEL: dext_and35:
|
|
40 ; CHECK: dextm $[[R0:[0-9]+]], $[[R1:[0-9]+]], 0, 35
|
|
41
|
|
42 }
|
|
43
|
|
44 define i64 @dext_and20(i64 zeroext %a) {
|
|
45 entry:
|
|
46 %and = and i64 %a, 1048575
|
|
47 ret i64 %and
|
|
48
|
|
49 ; CHECK-LABEL: dext_and20:
|
|
50 ; CHECK: dext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 0, 20
|
|
51
|
|
52 }
|
|
53
|
|
54 define i64 @dext_and16(i64 zeroext %a) {
|
|
55 entry:
|
|
56 %and = and i64 %a, 65535
|
|
57 ret i64 %and
|
|
58
|
|
59 ; CHECK-LABEL: dext_and16:
|
|
60 ; CHECK: andi $[[R0:[0-9]+]], $[[R1:[0-9]+]], 65535
|
|
61
|
|
62 }
|
|
63
|
|
64 define i64 @dext_lsr_and20(i64 zeroext %a) {
|
|
65 entry:
|
|
66 %shr = lshr i64 %a, 5
|
|
67 %and = and i64 %shr, 1048575
|
|
68 ret i64 %and
|
|
69
|
|
70 ; CHECK-LABEL: dext_lsr_and20:
|
|
71 ; CHECK: dext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 5, 20
|
|
72
|
|
73 }
|
|
74
|
|
75 define i64 @dext_lsr_and8(i64 zeroext %a) {
|
|
76 entry:
|
|
77 %shr = lshr i64 %a, 40
|
|
78 %and = and i64 %shr, 255
|
|
79 ret i64 %and
|
|
80
|
|
81 ; CHECK-LABEL: dext_lsr_and8:
|
|
82 ; CHECK: dextu $[[R0:[0-9]+]], $[[R1:[0-9]+]], 40, 8
|
|
83
|
|
84 }
|
|
85
|
|
86 define i64 @dext_zext(i32 signext %a) {
|
|
87 entry:
|
|
88 %conv = zext i32 %a to i64
|
|
89 ret i64 %conv
|
|
90
|
|
91 ; CHECK-LABEL: dext_zext:
|
|
92 ; CHECK: dext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 0, 32
|
|
93
|
|
94 }
|
|
95
|
|
96 define i64 @dext_and_lsr(i64 zeroext %n) {
|
|
97 entry:
|
|
98 %and = lshr i64 %n, 8
|
|
99 %shr = and i64 %and, 4095
|
|
100 ret i64 %shr
|
|
101
|
|
102 ; CHECK-LABEL: dext_and_lsr:
|
|
103 ; CHECK: dext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 8, 12
|
|
104
|
|
105 }
|