@@ -169,8 +169,8 @@ unsigned int cpucfg(unsigned int a) {
169
169
170
170
// LA32-LABEL: @rdtime(
171
171
// LA32-NEXT: entry:
172
- // LA32-NEXT: [[TMP0:%.*]] = tail call { i32, i32 } asm sideeffect "rdtimeh.w $0, $1\0A\09", "=&r,=&r"() #[[ATTR1:[0-9]+]], !srcloc !2
173
- // LA32-NEXT: [[TMP1:%.*]] = tail call { i32, i32 } asm sideeffect "rdtimel.w $0, $1\0A\09", "=&r,=&r"() #[[ATTR1]], !srcloc !3
172
+ // LA32-NEXT: [[TMP0:%.*]] = tail call { i32, i32 } asm sideeffect "rdtimeh.w $0, $1\0A\09", "=&r,=&r"() #[[ATTR1:[0-9]+]], !srcloc [[META2:![0-9]+]]
173
+ // LA32-NEXT: [[TMP1:%.*]] = tail call { i32, i32 } asm sideeffect "rdtimel.w $0, $1\0A\09", "=&r,=&r"() #[[ATTR1]], !srcloc [[META3:![0-9]+]]
174
174
// LA32-NEXT: ret void
175
175
//
176
176
void rdtime () {
@@ -201,13 +201,28 @@ void loongarch_movgr2fcsr(int a) {
201
201
__builtin_loongarch_movgr2fcsr (1 , a );
202
202
}
203
203
204
- // CHECK -LABEL: @cacop_w(
205
- // CHECK -NEXT: entry:
206
- // CHECK -NEXT: tail call void @llvm.loongarch.cacop.w(i32 1, i32 [[A:%.*]], i32 1024)
207
- // CHECK -NEXT: tail call void @llvm.loongarch.cacop.w(i32 1, i32 [[A]], i32 1024)
208
- // CHECK -NEXT: ret void
204
+ // LA32 -LABEL: @cacop_w(
205
+ // LA32 -NEXT: entry:
206
+ // LA32 -NEXT: tail call void @llvm.loongarch.cacop.w(i32 1, i32 [[A:%.*]], i32 1024)
207
+ // LA32 -NEXT: tail call void @llvm.loongarch.cacop.w(i32 1, i32 [[A]], i32 1024)
208
+ // LA32 -NEXT: ret void
209
209
//
210
210
void cacop_w (unsigned long int a ) {
211
211
__cacop_w (1 , a , 1024 );
212
212
__builtin_loongarch_cacop_w (1 , a , 1024 );
213
213
}
214
+
215
+ // LA32-LABEL: @iocsrrd_h_result(
216
+ // LA32-NEXT: entry:
217
+ // LA32-NEXT: [[TMP0:%.*]] = tail call i32 @llvm.loongarch.iocsrrd.h(i32 [[A:%.*]])
218
+ // 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]]
223
+ //
224
+ unsigned short iocsrrd_h_result (unsigned int a ) {
225
+ unsigned short b = __iocsrrd_h (a );
226
+ unsigned short c = __builtin_loongarch_iocsrrd_h (a );
227
+ return b + c ;
228
+ }
0 commit comments