@@ -6,9 +6,8 @@ define i16 @load16_shr63(i64 %a, i64 %b, ptr %table) {
6
6
; CHECK-LABEL: load16_shr63:
7
7
; CHECK: // %bb.0: // %entry
8
8
; CHECK-NEXT: mul x8, x1, x0
9
- ; CHECK-NEXT: lsr x8, x8, #62
10
- ; CHECK-NEXT: and x8, x8, #0x2
11
- ; CHECK-NEXT: ldrh w0, [x2, x8]
9
+ ; CHECK-NEXT: lsr x8, x8, #63
10
+ ; CHECK-NEXT: ldrh w0, [x2, x8, lsl #1]
12
11
; CHECK-NEXT: ret
13
12
entry:
14
13
%mul = mul i64 %b , %a
@@ -22,9 +21,8 @@ define i16 @load16_shr2(i64 %a, i64 %b, ptr %table) {
22
21
; CHECK-LABEL: load16_shr2:
23
22
; CHECK: // %bb.0: // %entry
24
23
; CHECK-NEXT: mul x8, x1, x0
25
- ; CHECK-NEXT: lsr x8, x8, #1
26
- ; CHECK-NEXT: and x8, x8, #0x7ffffffffffffffe
27
- ; CHECK-NEXT: ldrh w0, [x2, x8]
24
+ ; CHECK-NEXT: lsr x8, x8, #2
25
+ ; CHECK-NEXT: ldrh w0, [x2, x8, lsl #1]
28
26
; CHECK-NEXT: ret
29
27
entry:
30
28
%mul = mul i64 %b , %a
@@ -38,8 +36,8 @@ define i16 @load16_shr1(i64 %a, i64 %b, ptr %table) {
38
36
; CHECK-LABEL: load16_shr1:
39
37
; CHECK: // %bb.0: // %entry
40
38
; CHECK-NEXT: mul x8, x1, x0
41
- ; CHECK-NEXT: and x8, x8, #0xfffffffffffffffe
42
- ; CHECK-NEXT: ldrh w0, [x2, x8]
39
+ ; CHECK-NEXT: lsr x8, x8, #1
40
+ ; CHECK-NEXT: ldrh w0, [x2, x8, lsl #1 ]
43
41
; CHECK-NEXT: ret
44
42
entry:
45
43
%mul = mul i64 %b , %a
@@ -53,9 +51,8 @@ define i32 @load32_shr63(i64 %a, i64 %b, ptr %table) {
53
51
; CHECK-LABEL: load32_shr63:
54
52
; CHECK: // %bb.0: // %entry
55
53
; CHECK-NEXT: mul x8, x1, x0
56
- ; CHECK-NEXT: lsr x8, x8, #61
57
- ; CHECK-NEXT: and x8, x8, #0x4
58
- ; CHECK-NEXT: ldr w0, [x2, x8]
54
+ ; CHECK-NEXT: lsr x8, x8, #63
55
+ ; CHECK-NEXT: ldr w0, [x2, x8, lsl #2]
59
56
; CHECK-NEXT: ret
60
57
entry:
61
58
%mul = mul i64 %b , %a
@@ -69,8 +66,8 @@ define i32 @load32_shr2(i64 %a, i64 %b, ptr %table) {
69
66
; CHECK-LABEL: load32_shr2:
70
67
; CHECK: // %bb.0: // %entry
71
68
; CHECK-NEXT: mul x8, x1, x0
72
- ; CHECK-NEXT: and x8, x8, #0xfffffffffffffffc
73
- ; CHECK-NEXT: ldr w0, [x2, x8]
69
+ ; CHECK-NEXT: lsr x8, x8, #2
70
+ ; CHECK-NEXT: ldr w0, [x2, x8, lsl #2 ]
74
71
; CHECK-NEXT: ret
75
72
entry:
76
73
%mul = mul i64 %b , %a
@@ -84,9 +81,8 @@ define i32 @load32_shr1(i64 %a, i64 %b, ptr %table) {
84
81
; CHECK-LABEL: load32_shr1:
85
82
; CHECK: // %bb.0: // %entry
86
83
; CHECK-NEXT: mul x8, x1, x0
87
- ; CHECK-NEXT: lsl x8, x8, #1
88
- ; CHECK-NEXT: and x8, x8, #0xfffffffffffffffc
89
- ; CHECK-NEXT: ldr w0, [x2, x8]
84
+ ; CHECK-NEXT: lsr x8, x8, #1
85
+ ; CHECK-NEXT: ldr w0, [x2, x8, lsl #2]
90
86
; CHECK-NEXT: ret
91
87
entry:
92
88
%mul = mul i64 %b , %a
@@ -100,9 +96,8 @@ define i64 @load64_shr63(i64 %a, i64 %b, ptr %table) {
100
96
; CHECK-LABEL: load64_shr63:
101
97
; CHECK: // %bb.0: // %entry
102
98
; CHECK-NEXT: mul x8, x1, x0
103
- ; CHECK-NEXT: lsr x8, x8, #60
104
- ; CHECK-NEXT: and x8, x8, #0x8
105
- ; CHECK-NEXT: ldr x0, [x2, x8]
99
+ ; CHECK-NEXT: lsr x8, x8, #63
100
+ ; CHECK-NEXT: ldr x0, [x2, x8, lsl #3]
106
101
; CHECK-NEXT: ret
107
102
entry:
108
103
%mul = mul i64 %b , %a
@@ -116,9 +111,8 @@ define i64 @load64_shr2(i64 %a, i64 %b, ptr %table) {
116
111
; CHECK-LABEL: load64_shr2:
117
112
; CHECK: // %bb.0: // %entry
118
113
; CHECK-NEXT: mul x8, x1, x0
119
- ; CHECK-NEXT: lsl x8, x8, #1
120
- ; CHECK-NEXT: and x8, x8, #0xfffffffffffffff8
121
- ; CHECK-NEXT: ldr x0, [x2, x8]
114
+ ; CHECK-NEXT: lsr x8, x8, #2
115
+ ; CHECK-NEXT: ldr x0, [x2, x8, lsl #3]
122
116
; CHECK-NEXT: ret
123
117
entry:
124
118
%mul = mul i64 %b , %a
@@ -132,9 +126,8 @@ define i64 @load64_shr1(i64 %a, i64 %b, ptr %table) {
132
126
; CHECK-LABEL: load64_shr1:
133
127
; CHECK: // %bb.0: // %entry
134
128
; CHECK-NEXT: mul x8, x1, x0
135
- ; CHECK-NEXT: lsl x8, x8, #2
136
- ; CHECK-NEXT: and x8, x8, #0xfffffffffffffff8
137
- ; CHECK-NEXT: ldr x0, [x2, x8]
129
+ ; CHECK-NEXT: lsr x8, x8, #1
130
+ ; CHECK-NEXT: ldr x0, [x2, x8, lsl #3]
138
131
; CHECK-NEXT: ret
139
132
entry:
140
133
%mul = mul i64 %b , %a
0 commit comments