@@ -15220,13 +15220,32 @@ int64_t test_vshrd_n_s64(int64_t a) {
1522015220// return vrshr_n_u64(a, 1);
1522115221// }
1522215222
15223- // NYI-LABEL: @test_vsrad_n_s64(
15224- // NYI: [[SHRD_N:%.*]] = ashr i64 %b, 63
15225- // NYI: [[TMP0:%.*]] = add i64 %a, [[SHRD_N]]
15226- // NYI: ret i64 [[TMP0]]
15227- // int64_t test_vsrad_n_s64(int64_t a, int64_t b) {
15228- // return (int64_t)vsrad_n_s64(a, b, 63);
15229- // }
15223+
15224+ int64_t test_vsrad_n_s64(int64_t a, int64_t b) {
15225+ return (int64_t)vsrad_n_s64(a, b, 63);
15226+
15227+ // CIR-LABEL: vsrad_n_s64
15228+ // CIR: [[ASHR:%.*]] = cir.shift(right, {{%.*}} : !s64i, {{%.*}} : !s64i) -> !s64i
15229+ // CIR: {{.*}} = cir.binop(add, {{.*}}, [[ASHR]]) : !s64i
15230+
15231+ // LLVM-LABEL: test_vsrad_n_s64(
15232+ // LLVM: [[SHRD_N:%.*]] = ashr i64 %1, 63
15233+ // LLVM: [[TMP0:%.*]] = add i64 %0, [[SHRD_N]]
15234+ // LLVM: ret i64 [[TMP0]]
15235+ }
15236+
15237+ int64_t test_vsrad_n_s64_2(int64_t a, int64_t b) {
15238+ return (int64_t)vsrad_n_s64(a, b, 64);
15239+
15240+ // CIR-LABEL: vsrad_n_s64
15241+ // CIR: [[ASHR:%.*]] = cir.shift(right, {{%.*}} : !s64i, {{%.*}} : !s64i) -> !s64i
15242+ // CIR: {{.*}} = cir.binop(add, {{.*}}, [[ASHR]]) : !s64i
15243+
15244+ // LLVM-LABEL: test_vsrad_n_s64_2(
15245+ // LLVM: [[SHRD_N:%.*]] = ashr i64 %1, 63
15246+ // LLVM: [[TMP0:%.*]] = add i64 %0, [[SHRD_N]]
15247+ // LLVM: ret i64 [[TMP0]]
15248+ }
1523015249
1523115250int64x1_t test_vsra_n_s64(int64x1_t a, int64x1_t b) {
1523215251 return vsra_n_s64(a, b, 1);
0 commit comments