11/*
22 * Copyright (c) 2022, 2023, Arm Limited. All rights reserved.
33 * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
4+ * Copyright (c) 2025, Rivos Inc. All rights reserved.
45 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
56 *
67 * This code is free software; you can redistribute it and/or modify it
3637 * -XX:+WhiteBoxAPI
3738 * compiler.vectorization.runner.BasicDoubleOpTest
3839 *
39- * @requires (os.simpleArch == "x64") | (os.simpleArch == "aarch64")
40+ * @requires (os.simpleArch == "x64") | (os.simpleArch == "aarch64") | (os.simpleArch == "riscv64")
4041 * @requires vm.compiler2.enabled
4142 */
4243
@@ -118,7 +119,7 @@ public BasicDoubleOpTest() {
118119
119120 // ---------------- Arithmetic ----------------
120121 @ Test
121- @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "sse2" , "true" },
122+ @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "sse2" , "true" , "rvv" , "true" },
122123 counts = {IRNode .NEG_VD , ">0" })
123124 public double [] vectorNeg () {
124125 double [] res = new double [SIZE ];
@@ -129,7 +130,7 @@ public double[] vectorNeg() {
129130 }
130131
131132 @ Test
132- @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "sse2" , "true" },
133+ @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "sse2" , "true" , "rvv" , "true" },
133134 counts = {IRNode .ABS_VD , ">0" })
134135 public double [] vectorAbs () {
135136 double [] res = new double [SIZE ];
@@ -140,7 +141,7 @@ public double[] vectorAbs() {
140141 }
141142
142143 @ Test
143- @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "avx" , "true" },
144+ @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "avx" , "true" , "rvv" , "true" },
144145 counts = {IRNode .SQRT_VD , ">0" })
145146 public double [] vectorSqrt () {
146147 double [] res = new double [SIZE ];
@@ -184,7 +185,7 @@ public double[] vectorRint() {
184185 }
185186
186187 @ Test
187- @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "sse2" , "true" },
188+ @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "sse2" , "true" , "rvv" , "true" },
188189 counts = {IRNode .ADD_VD , ">0" })
189190 public double [] vectorAdd () {
190191 double [] res = new double [SIZE ];
@@ -195,7 +196,7 @@ public double[] vectorAdd() {
195196 }
196197
197198 @ Test
198- @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "sse2" , "true" },
199+ @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "sse2" , "true" , "rvv" , "true" },
199200 counts = {IRNode .SUB_VD , ">0" })
200201 public double [] vectorSub () {
201202 double [] res = new double [SIZE ];
@@ -206,7 +207,7 @@ public double[] vectorSub() {
206207 }
207208
208209 @ Test
209- @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "sse2" , "true" },
210+ @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "sse2" , "true" , "rvv" , "true" },
210211 counts = {IRNode .MUL_VD , ">0" })
211212 public double [] vectorMul () {
212213 double [] res = new double [SIZE ];
@@ -217,7 +218,7 @@ public double[] vectorMul() {
217218 }
218219
219220 @ Test
220- @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "sse2" , "true" },
221+ @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "sse2" , "true" , "rvv" , "true" },
221222 counts = {IRNode .DIV_VD , ">0" })
222223 public double [] vectorDiv () {
223224 double [] res = new double [SIZE ];
@@ -228,7 +229,7 @@ public double[] vectorDiv() {
228229 }
229230
230231 @ Test
231- @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "avx" , "true" },
232+ @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "avx" , "true" , "rvv" , "true" },
232233 counts = {IRNode .MAX_VD , ">0" })
233234 public double [] vectorMax () {
234235 double [] res = new double [SIZE ];
@@ -239,7 +240,7 @@ public double[] vectorMax() {
239240 }
240241
241242 @ Test
242- @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "avx" , "true" },
243+ @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "avx" , "true" , "rvv" , "true" },
243244 counts = {IRNode .MAX_VD , "0" })
244245 public double [] vectorMax_8322090 () {
245246 double [] res = new double [SIZE ];
@@ -250,7 +251,7 @@ public double[] vectorMax_8322090() {
250251 }
251252
252253 @ Test
253- @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "avx" , "true" },
254+ @ IR (applyIfCPUFeatureOr = {"asimd" , "true" , "avx" , "true" , "rvv" , "true" },
254255 counts = {IRNode .MIN_VD , ">0" })
255256 public double [] vectorMin () {
256257 double [] res = new double [SIZE ];
@@ -265,6 +266,8 @@ public double[] vectorMin() {
265266 counts = {IRNode .FMA_VD , ">0" , IRNode .VFMLA , ">0" })
266267 @ IR (applyIfCPUFeatureAnd = {"fma" , "true" , "avx" , "true" },
267268 counts = {IRNode .FMA_VD , ">0" })
269+ @ IR (applyIfCPUFeature = {"rvv" , "true" }, applyIf = {"UseFMA" , "true" },
270+ counts = {IRNode .FMA_VD , ">0" })
268271 public double [] vectorMulAdd () {
269272 double [] res = new double [SIZE ];
270273 for (int i = 0 ; i < SIZE ; i ++) {
@@ -278,6 +281,8 @@ public double[] vectorMulAdd() {
278281 counts = {IRNode .FMA_VD , ">0" , IRNode .VFMLS , ">0" })
279282 @ IR (applyIfCPUFeatureAnd = {"fma" , "true" , "avx" , "true" },
280283 counts = {IRNode .FMA_VD , ">0" })
284+ @ IR (applyIfCPUFeature = {"rvv" , "true" }, applyIf = {"UseFMA" , "true" },
285+ counts = {IRNode .FMA_VD , ">0" })
281286 public double [] vectorMulSub1 () {
282287 double [] res = new double [SIZE ];
283288 for (int i = 0 ; i < SIZE ; i ++) {
@@ -291,6 +296,8 @@ public double[] vectorMulSub1() {
291296 counts = {IRNode .FMA_VD , ">0" , IRNode .VFMLS , ">0" })
292297 @ IR (applyIfCPUFeatureAnd = {"fma" , "true" , "avx" , "true" },
293298 counts = {IRNode .FMA_VD , ">0" })
299+ @ IR (applyIfCPUFeature = {"rvv" , "true" }, applyIf = {"UseFMA" , "true" },
300+ counts = {IRNode .FMA_VD , ">0" })
294301 public double [] vectorMulSub2 () {
295302 double [] res = new double [SIZE ];
296303 for (int i = 0 ; i < SIZE ; i ++) {
@@ -306,6 +313,8 @@ public double[] vectorMulSub2() {
306313 counts = {IRNode .VFNMLA , ">0" })
307314 @ IR (applyIfCPUFeatureAnd = {"fma" , "true" , "avx" , "true" },
308315 counts = {IRNode .FMA_VD , ">0" })
316+ @ IR (applyIfCPUFeature = {"rvv" , "true" }, applyIf = {"UseFMA" , "true" },
317+ counts = {IRNode .FMA_VD , ">0" })
309318 public double [] vectorNegateMulAdd1 () {
310319 double [] res = new double [SIZE ];
311320 for (int i = 0 ; i < SIZE ; i ++) {
@@ -321,6 +330,8 @@ public double[] vectorNegateMulAdd1() {
321330 counts = {IRNode .VFNMLA , ">0" })
322331 @ IR (applyIfCPUFeatureAnd = {"fma" , "true" , "avx" , "true" },
323332 counts = {IRNode .FMA_VD , ">0" })
333+ @ IR (applyIfCPUFeature = {"rvv" , "true" }, applyIf = {"UseFMA" , "true" },
334+ counts = {IRNode .FMA_VD , ">0" })
324335 public double [] vectorNegateMulAdd2 () {
325336 double [] res = new double [SIZE ];
326337 for (int i = 0 ; i < SIZE ; i ++) {
@@ -334,6 +345,8 @@ public double[] vectorNegateMulAdd2() {
334345 counts = {IRNode .FMA_VD , ">0" })
335346 @ IR (applyIfCPUFeatureAnd = {"fma" , "true" , "avx" , "true" },
336347 counts = {IRNode .FMA_VD , ">0" })
348+ @ IR (applyIfCPUFeature = {"rvv" , "true" }, applyIf = {"UseFMA" , "true" },
349+ counts = {IRNode .FMA_VD , ">0" })
337350 public double [] vectorNegateMulSub () {
338351 double [] res = new double [SIZE ];
339352 for (int i = 0 ; i < SIZE ; i ++) {
0 commit comments