File tree 3 files changed +9
-9
lines changed 3 files changed +9
-9
lines changed Original file line number Diff line number Diff line change @@ -156,7 +156,7 @@ extern __inline unsigned char
156
156
return (unsigned char )__builtin_loongarch_iocsrrd_b ((unsigned int )_1 );
157
157
}
158
158
159
- extern __inline unsigned char
159
+ extern __inline unsigned short
160
160
__attribute__((__gnu_inline__ , __always_inline__ , __artificial__ ))
161
161
__iocsrrd_h (unsigned int _1 ) {
162
162
return (unsigned short )__builtin_loongarch_iocsrrd_h ((unsigned int )_1 );
Original file line number Diff line number Diff line change @@ -215,11 +215,11 @@ void cacop_w(unsigned long int a) {
215
215
// LA32-LABEL: @iocsrrd_h_result(
216
216
// LA32-NEXT: entry:
217
217
// LA32-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.iocsrrd.h(i32 [[A:%.*]])
218
+ // LA32-NEXT: [[CONV_I:%.*]] = trunc i32 [[TMP0]] to i16
218
219
// LA32-NEXT: [[TMP1:%.*]] = tail call i32 @llvm.loongarch.iocsrrd.h(i32 [[A]])
219
- // LA32-NEXT: [[CONV2:%.*]] = and i32 [[TMP0]], 255
220
- // LA32-NEXT: [[ADD:%.*]] = add i32 [[TMP1]], [[CONV2]]
221
- // LA32-NEXT: [[CONV4:%.*]] = trunc i32 [[ADD]] to i16
222
- // LA32-NEXT: ret i16 [[CONV4]]
220
+ // LA32-NEXT: [[TMP2:%.*]] = trunc i32 [[TMP1]] to i16
221
+ // LA32-NEXT: [[CONV3:%.*]] = add i16 [[TMP2]], [[CONV_I]]
222
+ // LA32-NEXT: ret i16 [[CONV3]]
223
223
//
224
224
unsigned short iocsrrd_h_result (unsigned int a ) {
225
225
unsigned short b = __iocsrrd_h (a );
Original file line number Diff line number Diff line change @@ -431,11 +431,11 @@ void loongarch_movgr2fcsr(int a) {
431
431
// CHECK-LABEL: @iocsrrd_h_result(
432
432
// CHECK-NEXT: entry:
433
433
// CHECK-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.iocsrrd.h(i32 [[A:%.*]])
434
+ // CHECK-NEXT: [[CONV_I:%.*]] = trunc i32 [[TMP0]] to i16
434
435
// CHECK-NEXT: [[TMP1:%.*]] = tail call i32 @llvm.loongarch.iocsrrd.h(i32 [[A]])
435
- // CHECK-NEXT: [[CONV2:%.*]] = and i32 [[TMP0]], 255
436
- // CHECK-NEXT: [[ADD:%.*]] = add i32 [[TMP1]], [[CONV2]]
437
- // CHECK-NEXT: [[CONV4:%.*]] = trunc i32 [[ADD]] to i16
438
- // CHECK-NEXT: ret i16 [[CONV4]]
436
+ // CHECK-NEXT: [[TMP2:%.*]] = trunc i32 [[TMP1]] to i16
437
+ // CHECK-NEXT: [[CONV3:%.*]] = add i16 [[TMP2]], [[CONV_I]]
438
+ // CHECK-NEXT: ret i16 [[CONV3]]
439
439
//
440
440
unsigned short iocsrrd_h_result (unsigned int a ) {
441
441
unsigned short b = __iocsrrd_h (a );
You can’t perform that action at this time.
0 commit comments