@@ -18,13 +18,16 @@ int test_abs(int a) {
1818
1919// CHECK-LABEL: @test_alu_slet(
2020// CHECK-NEXT: entry:
21+ // CHECK-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
2122// CHECK-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
2223// CHECK-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
2324// CHECK-NEXT: store i32 [[A:%.*]], ptr [[A_ADDR]], align 4
2425// CHECK-NEXT: store i32 [[B:%.*]], ptr [[B_ADDR]], align 4
2526// CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[A_ADDR]], align 4
2627// CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[B_ADDR]], align 4
27- // CHECK-NEXT: [[TMP2:%.*]] = call i32 @llvm.riscv.cv.alu.slet(i32 [[TMP0]], i32 [[TMP1]])
28+ // CHECK-NEXT: [[SLE:%.*]] = icmp sle i32 [[TMP0]], [[TMP1]]
29+ // CHECK-NEXT: store i1 [[SLE]], ptr [[RETVAL]], align 4
30+ // CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr [[RETVAL]], align 4
2831// CHECK-NEXT: ret i32 [[TMP2]]
2932//
3033int test_alu_slet (int32_t a , int32_t b ) {
@@ -33,13 +36,16 @@ int test_alu_slet(int32_t a, int32_t b) {
3336
3437// CHECK-LABEL: @test_alu_sletu(
3538// CHECK-NEXT: entry:
39+ // CHECK-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
3640// CHECK-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
3741// CHECK-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4
3842// CHECK-NEXT: store i32 [[A:%.*]], ptr [[A_ADDR]], align 4
3943// CHECK-NEXT: store i32 [[B:%.*]], ptr [[B_ADDR]], align 4
4044// CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[A_ADDR]], align 4
4145// CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[B_ADDR]], align 4
42- // CHECK-NEXT: [[TMP2:%.*]] = call i32 @llvm.riscv.cv.alu.sletu(i32 [[TMP0]], i32 [[TMP1]])
46+ // CHECK-NEXT: [[SLEU:%.*]] = icmp ule i32 [[TMP0]], [[TMP1]]
47+ // CHECK-NEXT: store i1 [[SLEU]], ptr [[RETVAL]], align 4
48+ // CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr [[RETVAL]], align 4
4349// CHECK-NEXT: ret i32 [[TMP2]]
4450//
4551int test_alu_sletu (uint32_t a , uint32_t b ) {
@@ -67,8 +73,8 @@ int test_alu_exths(int16_t a) {
6773// CHECK-NEXT: [[TMP0:%.*]] = load i16, ptr [[A_ADDR]], align 2
6874// CHECK-NEXT: [[CONV:%.*]] = zext i16 [[TMP0]] to i32
6975// CHECK-NEXT: [[TMP1:%.*]] = trunc i32 [[CONV]] to i16
70- // CHECK-NEXT: [[EXTHS :%.*]] = zext i16 [[TMP1]] to i32
71- // CHECK-NEXT: ret i32 [[EXTHS ]]
76+ // CHECK-NEXT: [[EXTHZ :%.*]] = zext i16 [[TMP1]] to i32
77+ // CHECK-NEXT: ret i32 [[EXTHZ ]]
7278//
7379int test_alu_exthz (uint16_t a ) {
7480 return __builtin_riscv_cv_alu_exthz (a );
@@ -80,8 +86,9 @@ int test_alu_exthz(uint16_t a) {
8086// CHECK-NEXT: store i8 [[A:%.*]], ptr [[A_ADDR]], align 1
8187// CHECK-NEXT: [[TMP0:%.*]] = load i8, ptr [[A_ADDR]], align 1
8288// CHECK-NEXT: [[CONV:%.*]] = sext i8 [[TMP0]] to i32
83- // CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.riscv.cv.alu.extbs(i32 [[CONV]])
84- // CHECK-NEXT: ret i32 [[TMP1]]
89+ // CHECK-NEXT: [[TMP1:%.*]] = trunc i32 [[CONV]] to i8
90+ // CHECK-NEXT: [[EXTBS:%.*]] = sext i8 [[TMP1]] to i32
91+ // CHECK-NEXT: ret i32 [[EXTBS]]
8592//
8693int test_alu_extbs (int8_t a ) {
8794 return __builtin_riscv_cv_alu_extbs (a );
@@ -93,8 +100,9 @@ int test_alu_extbs(int8_t a) {
93100// CHECK-NEXT: store i8 [[A:%.*]], ptr [[A_ADDR]], align 1
94101// CHECK-NEXT: [[TMP0:%.*]] = load i8, ptr [[A_ADDR]], align 1
95102// CHECK-NEXT: [[CONV:%.*]] = zext i8 [[TMP0]] to i32
96- // CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.riscv.cv.alu.extbz(i32 [[CONV]])
97- // CHECK-NEXT: ret i32 [[TMP1]]
103+ // CHECK-NEXT: [[TMP1:%.*]] = trunc i32 [[CONV]] to i8
104+ // CHECK-NEXT: [[EXTBZ:%.*]] = zext i8 [[TMP1]] to i32
105+ // CHECK-NEXT: ret i32 [[EXTBZ]]
98106//
99107int test_alu_extbz (uint8_t a ) {
100108 return __builtin_riscv_cv_alu_extbz (a );
0 commit comments