Skip to content

Commit d04b47f

Browse files
committed
rebase
1 parent c170da9 commit d04b47f

File tree

2 files changed

+28
-52
lines changed

2 files changed

+28
-52
lines changed

Diff for: llvm/test/CodeGen/LoongArch/lasx/broadcast-load.ll

+14-26
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ define <4 x i64> @should_not_be_optimized(ptr %ptr, ptr %dst) {
2121
define <4 x i64> @xvldrepl_d_unaligned_offset(ptr %ptr) {
2222
; CHECK-LABEL: xvldrepl_d_unaligned_offset:
2323
; CHECK: # %bb.0:
24-
; CHECK-NEXT: ld.d $a0, $a0, 4
25-
; CHECK-NEXT: xvreplgr2vr.d $xr0, $a0
24+
; CHECK-NEXT: addi.d $a0, $a0, 4
25+
; CHECK-NEXT: xvldrepl.d $xr0, $a0, 0
2626
; CHECK-NEXT: ret
2727
%p = getelementptr i32, ptr %ptr, i32 1
2828
%tmp = load i64, ptr %p
@@ -34,8 +34,7 @@ define <4 x i64> @xvldrepl_d_unaligned_offset(ptr %ptr) {
3434
define <32 x i8> @xvldrepl_b(ptr %ptr) {
3535
; CHECK-LABEL: xvldrepl_b:
3636
; CHECK: # %bb.0:
37-
; CHECK-NEXT: ld.b $a0, $a0, 0
38-
; CHECK-NEXT: xvreplgr2vr.b $xr0, $a0
37+
; CHECK-NEXT: xvldrepl.b $xr0, $a0, 0
3938
; CHECK-NEXT: ret
4039
%tmp = load i8, ptr %ptr
4140
%tmp1 = insertelement <32 x i8> zeroinitializer, i8 %tmp, i32 0
@@ -46,8 +45,7 @@ define <32 x i8> @xvldrepl_b(ptr %ptr) {
4645
define <32 x i8> @xvldrepl_b_offset(ptr %ptr) {
4746
; CHECK-LABEL: xvldrepl_b_offset:
4847
; CHECK: # %bb.0:
49-
; CHECK-NEXT: ld.b $a0, $a0, 33
50-
; CHECK-NEXT: xvreplgr2vr.b $xr0, $a0
48+
; CHECK-NEXT: xvldrepl.b $xr0, $a0, 33
5149
; CHECK-NEXT: ret
5250
%p = getelementptr i8, ptr %ptr, i64 33
5351
%tmp = load i8, ptr %p
@@ -60,8 +58,7 @@ define <32 x i8> @xvldrepl_b_offset(ptr %ptr) {
6058
define <16 x i16> @xvldrepl_h(ptr %ptr) {
6159
; CHECK-LABEL: xvldrepl_h:
6260
; CHECK: # %bb.0:
63-
; CHECK-NEXT: ld.h $a0, $a0, 0
64-
; CHECK-NEXT: xvreplgr2vr.h $xr0, $a0
61+
; CHECK-NEXT: xvldrepl.h $xr0, $a0, 0
6562
; CHECK-NEXT: ret
6663
%tmp = load i16, ptr %ptr
6764
%tmp1 = insertelement <16 x i16> zeroinitializer, i16 %tmp, i32 0
@@ -72,8 +69,7 @@ define <16 x i16> @xvldrepl_h(ptr %ptr) {
7269
define <16 x i16> @xvldrepl_h_offset(ptr %ptr) {
7370
; CHECK-LABEL: xvldrepl_h_offset:
7471
; CHECK: # %bb.0:
75-
; CHECK-NEXT: ld.h $a0, $a0, 66
76-
; CHECK-NEXT: xvreplgr2vr.h $xr0, $a0
72+
; CHECK-NEXT: xvldrepl.h $xr0, $a0, 66
7773
; CHECK-NEXT: ret
7874
%p = getelementptr i16, ptr %ptr, i64 33
7975
%tmp = load i16, ptr %p
@@ -85,8 +81,7 @@ define <16 x i16> @xvldrepl_h_offset(ptr %ptr) {
8581
define <8 x i32> @xvldrepl_w(ptr %ptr) {
8682
; CHECK-LABEL: xvldrepl_w:
8783
; CHECK: # %bb.0:
88-
; CHECK-NEXT: ld.w $a0, $a0, 0
89-
; CHECK-NEXT: xvreplgr2vr.w $xr0, $a0
84+
; CHECK-NEXT: xvldrepl.w $xr0, $a0, 0
9085
; CHECK-NEXT: ret
9186
%tmp = load i32, ptr %ptr
9287
%tmp1 = insertelement <8 x i32> zeroinitializer, i32 %tmp, i32 0
@@ -97,8 +92,7 @@ define <8 x i32> @xvldrepl_w(ptr %ptr) {
9792
define <8 x i32> @xvldrepl_w_offset(ptr %ptr) {
9893
; CHECK-LABEL: xvldrepl_w_offset:
9994
; CHECK: # %bb.0:
100-
; CHECK-NEXT: ld.w $a0, $a0, 132
101-
; CHECK-NEXT: xvreplgr2vr.w $xr0, $a0
95+
; CHECK-NEXT: xvldrepl.w $xr0, $a0, 132
10296
; CHECK-NEXT: ret
10397
%p = getelementptr i32, ptr %ptr, i64 33
10498
%tmp = load i32, ptr %p
@@ -111,8 +105,7 @@ define <8 x i32> @xvldrepl_w_offset(ptr %ptr) {
111105
define <4 x i64> @xvldrepl_d(ptr %ptr) {
112106
; CHECK-LABEL: xvldrepl_d:
113107
; CHECK: # %bb.0:
114-
; CHECK-NEXT: ld.d $a0, $a0, 0
115-
; CHECK-NEXT: xvreplgr2vr.d $xr0, $a0
108+
; CHECK-NEXT: xvldrepl.d $xr0, $a0, 0
116109
; CHECK-NEXT: ret
117110
%tmp = load i64, ptr %ptr
118111
%tmp1 = insertelement <4 x i64> zeroinitializer, i64 %tmp, i32 0
@@ -123,8 +116,7 @@ define <4 x i64> @xvldrepl_d(ptr %ptr) {
123116
define <4 x i64> @xvldrepl_d_offset(ptr %ptr) {
124117
; CHECK-LABEL: xvldrepl_d_offset:
125118
; CHECK: # %bb.0:
126-
; CHECK-NEXT: ld.d $a0, $a0, 264
127-
; CHECK-NEXT: xvreplgr2vr.d $xr0, $a0
119+
; CHECK-NEXT: xvldrepl.d $xr0, $a0, 264
128120
; CHECK-NEXT: ret
129121
%p = getelementptr i64, ptr %ptr, i64 33
130122
%tmp = load i64, ptr %p
@@ -136,8 +128,7 @@ define <4 x i64> @xvldrepl_d_offset(ptr %ptr) {
136128
define <8 x float> @vldrepl_w_flt(ptr %ptr) {
137129
; CHECK-LABEL: vldrepl_w_flt:
138130
; CHECK: # %bb.0:
139-
; CHECK-NEXT: fld.s $fa0, $a0, 0
140-
; CHECK-NEXT: xvreplve0.w $xr0, $xr0
131+
; CHECK-NEXT: xvldrepl.w $xr0, $a0, 0
141132
; CHECK-NEXT: ret
142133
%tmp = load float, ptr %ptr
143134
%tmp1 = insertelement <8 x float> zeroinitializer, float %tmp, i32 0
@@ -148,8 +139,7 @@ define <8 x float> @vldrepl_w_flt(ptr %ptr) {
148139
define <8 x float> @vldrepl_w_flt_offset(ptr %ptr) {
149140
; CHECK-LABEL: vldrepl_w_flt_offset:
150141
; CHECK: # %bb.0:
151-
; CHECK-NEXT: fld.s $fa0, $a0, 264
152-
; CHECK-NEXT: xvreplve0.w $xr0, $xr0
142+
; CHECK-NEXT: xvldrepl.w $xr0, $a0, 264
153143
; CHECK-NEXT: ret
154144
%p = getelementptr i64, ptr %ptr, i64 33
155145
%tmp = load float, ptr %p
@@ -161,8 +151,7 @@ define <8 x float> @vldrepl_w_flt_offset(ptr %ptr) {
161151
define <4 x double> @vldrepl_d_dbl(ptr %ptr) {
162152
; CHECK-LABEL: vldrepl_d_dbl:
163153
; CHECK: # %bb.0:
164-
; CHECK-NEXT: fld.d $fa0, $a0, 0
165-
; CHECK-NEXT: xvreplve0.d $xr0, $xr0
154+
; CHECK-NEXT: xvldrepl.d $xr0, $a0, 0
166155
; CHECK-NEXT: ret
167156
%tmp = load double, ptr %ptr
168157
%tmp1 = insertelement <4 x double> zeroinitializer, double %tmp, i32 0
@@ -173,8 +162,7 @@ define <4 x double> @vldrepl_d_dbl(ptr %ptr) {
173162
define <4 x double> @vldrepl_d_dbl_offset(ptr %ptr) {
174163
; CHECK-LABEL: vldrepl_d_dbl_offset:
175164
; CHECK: # %bb.0:
176-
; CHECK-NEXT: fld.d $fa0, $a0, 264
177-
; CHECK-NEXT: xvreplve0.d $xr0, $xr0
165+
; CHECK-NEXT: xvldrepl.d $xr0, $a0, 264
178166
; CHECK-NEXT: ret
179167
%p = getelementptr i64, ptr %ptr, i64 33
180168
%tmp = load double, ptr %p

Diff for: llvm/test/CodeGen/LoongArch/lsx/broadcast-load.ll

+14-26
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ define <2 x i64> @should_not_be_optimized(ptr %ptr, ptr %dst){
2121
define <2 x i64> @vldrepl_d_unaligned_offset(ptr %ptr) {
2222
; CHECK-LABEL: vldrepl_d_unaligned_offset:
2323
; CHECK: # %bb.0:
24-
; CHECK-NEXT: ld.d $a0, $a0, 4
25-
; CHECK-NEXT: vreplgr2vr.d $vr0, $a0
24+
; CHECK-NEXT: addi.d $a0, $a0, 4
25+
; CHECK-NEXT: vldrepl.d $vr0, $a0, 0
2626
; CHECK-NEXT: ret
2727
%p = getelementptr i32, ptr %ptr, i32 1
2828
%tmp = load i64, ptr %p
@@ -34,8 +34,7 @@ define <2 x i64> @vldrepl_d_unaligned_offset(ptr %ptr) {
3434
define <16 x i8> @vldrepl_b(ptr %ptr) {
3535
; CHECK-LABEL: vldrepl_b:
3636
; CHECK: # %bb.0:
37-
; CHECK-NEXT: ld.b $a0, $a0, 0
38-
; CHECK-NEXT: vreplgr2vr.b $vr0, $a0
37+
; CHECK-NEXT: vldrepl.b $vr0, $a0, 0
3938
; CHECK-NEXT: ret
4039
%tmp = load i8, ptr %ptr
4140
%tmp1 = insertelement <16 x i8> zeroinitializer, i8 %tmp, i32 0
@@ -46,8 +45,7 @@ define <16 x i8> @vldrepl_b(ptr %ptr) {
4645
define <16 x i8> @vldrepl_b_offset(ptr %ptr) {
4746
; CHECK-LABEL: vldrepl_b_offset:
4847
; CHECK: # %bb.0:
49-
; CHECK-NEXT: ld.b $a0, $a0, 33
50-
; CHECK-NEXT: vreplgr2vr.b $vr0, $a0
48+
; CHECK-NEXT: vldrepl.b $vr0, $a0, 33
5149
; CHECK-NEXT: ret
5250
%p = getelementptr i8, ptr %ptr, i64 33
5351
%tmp = load i8, ptr %p
@@ -60,8 +58,7 @@ define <16 x i8> @vldrepl_b_offset(ptr %ptr) {
6058
define <8 x i16> @vldrepl_h(ptr %ptr) {
6159
; CHECK-LABEL: vldrepl_h:
6260
; CHECK: # %bb.0:
63-
; CHECK-NEXT: ld.h $a0, $a0, 0
64-
; CHECK-NEXT: vreplgr2vr.h $vr0, $a0
61+
; CHECK-NEXT: vldrepl.h $vr0, $a0, 0
6562
; CHECK-NEXT: ret
6663
%tmp = load i16, ptr %ptr
6764
%tmp1 = insertelement <8 x i16> zeroinitializer, i16 %tmp, i32 0
@@ -72,8 +69,7 @@ define <8 x i16> @vldrepl_h(ptr %ptr) {
7269
define <8 x i16> @vldrepl_h_offset(ptr %ptr) {
7370
; CHECK-LABEL: vldrepl_h_offset:
7471
; CHECK: # %bb.0:
75-
; CHECK-NEXT: ld.h $a0, $a0, 66
76-
; CHECK-NEXT: vreplgr2vr.h $vr0, $a0
72+
; CHECK-NEXT: vldrepl.h $vr0, $a0, 66
7773
; CHECK-NEXT: ret
7874
%p = getelementptr i16, ptr %ptr, i64 33
7975
%tmp = load i16, ptr %p
@@ -85,8 +81,7 @@ define <8 x i16> @vldrepl_h_offset(ptr %ptr) {
8581
define <4 x i32> @vldrepl_w(ptr %ptr) {
8682
; CHECK-LABEL: vldrepl_w:
8783
; CHECK: # %bb.0:
88-
; CHECK-NEXT: ld.w $a0, $a0, 0
89-
; CHECK-NEXT: vreplgr2vr.w $vr0, $a0
84+
; CHECK-NEXT: vldrepl.w $vr0, $a0, 0
9085
; CHECK-NEXT: ret
9186
%tmp = load i32, ptr %ptr
9287
%tmp1 = insertelement <4 x i32> zeroinitializer, i32 %tmp, i32 0
@@ -97,8 +92,7 @@ define <4 x i32> @vldrepl_w(ptr %ptr) {
9792
define <4 x i32> @vldrepl_w_offset(ptr %ptr) {
9893
; CHECK-LABEL: vldrepl_w_offset:
9994
; CHECK: # %bb.0:
100-
; CHECK-NEXT: ld.w $a0, $a0, 132
101-
; CHECK-NEXT: vreplgr2vr.w $vr0, $a0
95+
; CHECK-NEXT: vldrepl.w $vr0, $a0, 132
10296
; CHECK-NEXT: ret
10397
%p = getelementptr i32, ptr %ptr, i64 33
10498
%tmp = load i32, ptr %p
@@ -110,8 +104,7 @@ define <4 x i32> @vldrepl_w_offset(ptr %ptr) {
110104
define <2 x i64> @vldrepl_d(ptr %ptr) {
111105
; CHECK-LABEL: vldrepl_d:
112106
; CHECK: # %bb.0:
113-
; CHECK-NEXT: ld.d $a0, $a0, 0
114-
; CHECK-NEXT: vreplgr2vr.d $vr0, $a0
107+
; CHECK-NEXT: vldrepl.d $vr0, $a0, 0
115108
; CHECK-NEXT: ret
116109
%tmp = load i64, ptr %ptr
117110
%tmp1 = insertelement <2 x i64> zeroinitializer, i64 %tmp, i32 0
@@ -122,8 +115,7 @@ define <2 x i64> @vldrepl_d(ptr %ptr) {
122115
define <2 x i64> @vldrepl_d_offset(ptr %ptr) {
123116
; CHECK-LABEL: vldrepl_d_offset:
124117
; CHECK: # %bb.0:
125-
; CHECK-NEXT: ld.d $a0, $a0, 264
126-
; CHECK-NEXT: vreplgr2vr.d $vr0, $a0
118+
; CHECK-NEXT: vldrepl.d $vr0, $a0, 264
127119
; CHECK-NEXT: ret
128120
%p = getelementptr i64, ptr %ptr, i64 33
129121
%tmp = load i64, ptr %p
@@ -135,8 +127,7 @@ define <2 x i64> @vldrepl_d_offset(ptr %ptr) {
135127
define <4 x float> @vldrepl_w_flt(ptr %ptr) {
136128
; CHECK-LABEL: vldrepl_w_flt:
137129
; CHECK: # %bb.0:
138-
; CHECK-NEXT: fld.s $fa0, $a0, 0
139-
; CHECK-NEXT: vreplvei.w $vr0, $vr0, 0
130+
; CHECK-NEXT: vldrepl.w $vr0, $a0, 0
140131
; CHECK-NEXT: ret
141132
%tmp = load float, ptr %ptr
142133
%tmp1 = insertelement <4 x float> zeroinitializer, float %tmp, i32 0
@@ -147,8 +138,7 @@ define <4 x float> @vldrepl_w_flt(ptr %ptr) {
147138
define <4 x float> @vldrepl_w_flt_offset(ptr %ptr) {
148139
; CHECK-LABEL: vldrepl_w_flt_offset:
149140
; CHECK: # %bb.0:
150-
; CHECK-NEXT: fld.s $fa0, $a0, 264
151-
; CHECK-NEXT: vreplvei.w $vr0, $vr0, 0
141+
; CHECK-NEXT: vldrepl.w $vr0, $a0, 264
152142
; CHECK-NEXT: ret
153143
%p = getelementptr i64, ptr %ptr, i64 33
154144
%tmp = load float, ptr %p
@@ -160,8 +150,7 @@ define <4 x float> @vldrepl_w_flt_offset(ptr %ptr) {
160150
define <2 x double> @vldrepl_d_dbl(ptr %ptr) {
161151
; CHECK-LABEL: vldrepl_d_dbl:
162152
; CHECK: # %bb.0:
163-
; CHECK-NEXT: fld.d $fa0, $a0, 0
164-
; CHECK-NEXT: vreplvei.d $vr0, $vr0, 0
153+
; CHECK-NEXT: vldrepl.d $vr0, $a0, 0
165154
; CHECK-NEXT: ret
166155
%tmp = load double, ptr %ptr
167156
%tmp1 = insertelement <2 x double> zeroinitializer, double %tmp, i32 0
@@ -172,8 +161,7 @@ define <2 x double> @vldrepl_d_dbl(ptr %ptr) {
172161
define <2 x double> @vldrepl_d_dbl_offset(ptr %ptr) {
173162
; CHECK-LABEL: vldrepl_d_dbl_offset:
174163
; CHECK: # %bb.0:
175-
; CHECK-NEXT: fld.d $fa0, $a0, 264
176-
; CHECK-NEXT: vreplvei.d $vr0, $vr0, 0
164+
; CHECK-NEXT: vldrepl.d $vr0, $a0, 264
177165
; CHECK-NEXT: ret
178166
%p = getelementptr i64, ptr %ptr, i64 33
179167
%tmp = load double, ptr %p

0 commit comments

Comments
 (0)