0020-RISC-V-Add-zicond-tests.patch 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. From 3d7a1465ebda56d1e4610788acffc68f4d8ecfaa Mon Sep 17 00:00:00 2001
  2. From: Xiao Zeng <zengxiao@eswincomputing.com>
  3. Date: Tue, 26 Sep 2023 12:40:58 -0600
  4. Subject: [PATCH 20/30] RISC-V: Add zicond tests
  5. These are tests from patch 3/5 of Ziao Zeng's zicond submission.
  6. gcc/testsuite/ChangeLog:
  7. * gcc.target/riscv/zicond-primitiveSemantics_return_0_imm.c: New test.
  8. * gcc.target/riscv/zicond-primitiveSemantics_return_imm_imm.c: New test.
  9. * gcc.target/riscv/zicond-primitiveSemantics_return_imm_reg.c: New test.
  10. * gcc.target/riscv/zicond-primitiveSemantics_return_reg_reg.c: New test.
  11. Co-Authored-By: Jeff Law <jlaw@ventanamicro.com>
  12. ---
  13. .../zicond-primitiveSemantics_return_0_imm.c | 65 +++++++++++++++++
  14. ...zicond-primitiveSemantics_return_imm_imm.c | 73 +++++++++++++++++++
  15. ...zicond-primitiveSemantics_return_imm_reg.c | 65 +++++++++++++++++
  16. ...zicond-primitiveSemantics_return_reg_reg.c | 65 +++++++++++++++++
  17. 4 files changed, 268 insertions(+)
  18. create mode 100644 gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_0_imm.c
  19. create mode 100644 gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_imm_imm.c
  20. create mode 100644 gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_imm_reg.c
  21. create mode 100644 gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_reg_reg.c
  22. diff --git a/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_0_imm.c b/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_0_imm.c
  23. new file mode 100644
  24. index 00000000000..76773d32a8b
  25. --- /dev/null
  26. +++ b/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_0_imm.c
  27. @@ -0,0 +1,65 @@
  28. +/* { dg-do compile } */
  29. +/* { dg-options "-march=rv64gc_zicond -mabi=lp64d" { target { rv64 } } } */
  30. +/* { dg-options "-march=rv32gc_zicond -mabi=ilp32f" { target { rv32 } } } */
  31. +/* { dg-skip-if "" { *-*-* } {"-O0" "-Os" "-Og" "-Oz"} } */
  32. +
  33. +long primitiveSemantics_return_0_imm_00(long a, long b) {
  34. + return a == 0 ? 0 : 3;
  35. +}
  36. +
  37. +long primitiveSemantics_return_0_imm_01(long a, long b) {
  38. + return a != 0 ? 0 : 3;
  39. +}
  40. +
  41. +long primitiveSemantics_return_0_imm_02(long a, long b) {
  42. + return a == 0 ? 3 : 0;
  43. +}
  44. +
  45. +long primitiveSemantics_return_0_imm_03(long a, long b) {
  46. + return a != 0 ? 3 : 0;
  47. +}
  48. +
  49. +long primitiveSemantics_return_0_imm_04(long a, long b) {
  50. + if (a)
  51. + b = 0;
  52. + else
  53. + b = 3;
  54. + return b;
  55. +}
  56. +
  57. +long primitiveSemantics_return_0_imm_05(long a, long b) {
  58. + if (!a)
  59. + b = 0;
  60. + else
  61. + b = 3;
  62. + return b;
  63. +}
  64. +
  65. +int primitiveSemantics_return_0_imm_06(int a, int b) { return a == 0 ? 0 : 3; }
  66. +
  67. +int primitiveSemantics_return_0_imm_07(int a, int b) { return a != 0 ? 0 : 3; }
  68. +
  69. +int primitiveSemantics_return_0_imm_08(int a, int b) { return a == 0 ? 3 : 0; }
  70. +
  71. +int primitiveSemantics_return_0_imm_09(int a, int b) { return a != 0 ? 3 : 0; }
  72. +
  73. +int primitiveSemantics_return_0_imm_10(int a, int b) {
  74. + if (a)
  75. + b = 0;
  76. + else
  77. + b = 3;
  78. + return b;
  79. +}
  80. +
  81. +int primitiveSemantics_return_0_imm_11(int a, int b) {
  82. + if (!a)
  83. + b = 0;
  84. + else
  85. + b = 3;
  86. + return b;
  87. +}
  88. +
  89. +/* { dg-final { scan-assembler-times "czero.eqz" 6 } } */
  90. +/* { dg-final { scan-assembler-times "czero.nez" 6 } } */
  91. +/* { dg-final { scan-assembler-not "beq" } } */
  92. +/* { dg-final { scan-assembler-not "bne" } } */
  93. diff --git a/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_imm_imm.c b/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_imm_imm.c
  94. new file mode 100644
  95. index 00000000000..2b4ee956eb7
  96. --- /dev/null
  97. +++ b/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_imm_imm.c
  98. @@ -0,0 +1,73 @@
  99. +/* { dg-do compile } */
  100. +/* { dg-options "-march=rv64gc_zicond -mabi=lp64d" { target { rv64 } } } */
  101. +/* { dg-options "-march=rv32gc_zicond -mabi=ilp32f" { target { rv32 } } } */
  102. +/* { dg-skip-if "" { *-*-* } {"-O0" "-Os" "-Og" "-Oz"} } */
  103. +
  104. +long primitiveSemantics_return_imm_imm_00(long a, long b) {
  105. + return a == 0 ? 4 : 6;
  106. +}
  107. +
  108. +long primitiveSemantics_return_imm_imm_01(long a, long b) {
  109. + return a != 0 ? 4 : 6;
  110. +}
  111. +
  112. +long primitiveSemantics_return_imm_imm_02(long a, long b) {
  113. + return a == 0 ? 6 : 4;
  114. +}
  115. +
  116. +long primitiveSemantics_return_imm_imm_03(long a, long b) {
  117. + return a != 0 ? 6 : 4;
  118. +}
  119. +
  120. +long primitiveSemantics_return_imm_imm_04(long a, long b) {
  121. + if (a)
  122. + b = 4;
  123. + else
  124. + b = 6;
  125. + return b;
  126. +}
  127. +
  128. +long primitiveSemantics_return_imm_imm_05(long a, long b) {
  129. + if (!a)
  130. + b = 4;
  131. + else
  132. + b = 6;
  133. + return b;
  134. +}
  135. +
  136. +int primitiveSemantics_return_imm_imm_06(int a, int b) {
  137. + return a == 0 ? 4 : 6;
  138. +}
  139. +
  140. +int primitiveSemantics_return_imm_imm_07(int a, int b) {
  141. + return a != 0 ? 4 : 6;
  142. +}
  143. +
  144. +int primitiveSemantics_return_imm_imm_08(int a, int b) {
  145. + return a == 0 ? 6 : 4;
  146. +}
  147. +
  148. +int primitiveSemantics_return_imm_imm_09(int a, int b) {
  149. + return a != 0 ? 6 : 4;
  150. +}
  151. +
  152. +int primitiveSemantics_return_imm_imm_10(int a, int b) {
  153. + if (a)
  154. + b = 4;
  155. + else
  156. + b = 6;
  157. + return b;
  158. +}
  159. +
  160. +int primitiveSemantics_return_imm_imm_11(int a, int b) {
  161. + if (!a)
  162. + b = 4;
  163. + else
  164. + b = 6;
  165. + return b;
  166. +}
  167. +
  168. +/* { dg-final { scan-assembler-times "czero.eqz" 6 } } */
  169. +/* { dg-final { scan-assembler-times "czero.nez" 6 } } */
  170. +/* { dg-final { scan-assembler-not "beq" } } */
  171. +/* { dg-final { scan-assembler-not "bne" } } */
  172. diff --git a/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_imm_reg.c b/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_imm_reg.c
  173. new file mode 100644
  174. index 00000000000..4a96560eb61
  175. --- /dev/null
  176. +++ b/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_imm_reg.c
  177. @@ -0,0 +1,65 @@
  178. +/* { dg-do compile } */
  179. +/* { dg-options "-march=rv64gc_zicond -mabi=lp64d" { target { rv64 } } } */
  180. +/* { dg-options "-march=rv32gc_zicond -mabi=ilp32f" { target { rv32 } } } */
  181. +/* { dg-skip-if "" { *-*-* } {"-O0" "-Os" "-Og" "-Oz"} } */
  182. +
  183. +long primitiveSemantics_return_imm_reg_00(long a, long b) {
  184. + return a == 0 ? 1 : b;
  185. +}
  186. +
  187. +long primitiveSemantics_return_imm_reg_01(long a, long b) {
  188. + return a != 0 ? 1 : b;
  189. +}
  190. +
  191. +long primitiveSemantics_return_imm_reg_02(long a, long b) {
  192. + return a == 0 ? b : 1;
  193. +}
  194. +
  195. +long primitiveSemantics_return_imm_reg_03(long a, long b) {
  196. + return a != 0 ? b : 1;
  197. +}
  198. +
  199. +long primitiveSemantics_return_imm_reg_04(long a, long b) {
  200. + if (a)
  201. + b = 1;
  202. + return b;
  203. +}
  204. +
  205. +long primitiveSemantics_return_imm_reg_05(long a, long b) {
  206. + if (!a)
  207. + b = 1;
  208. + return b;
  209. +}
  210. +
  211. +int primitiveSemantics_return_imm_reg_06(int a, int b) {
  212. + return a == 0 ? 1 : b;
  213. +}
  214. +
  215. +int primitiveSemantics_return_imm_reg_07(int a, int b) {
  216. + return a != 0 ? 1 : b;
  217. +}
  218. +
  219. +int primitiveSemantics_return_imm_reg_08(int a, int b) {
  220. + return a == 0 ? b : 1;
  221. +}
  222. +
  223. +int primitiveSemantics_return_imm_reg_09(int a, int b) {
  224. + return a != 0 ? b : 1;
  225. +}
  226. +
  227. +int primitiveSemantics_return_imm_reg_10(int a, int b) {
  228. + if (a)
  229. + b = 1;
  230. + return b;
  231. +}
  232. +
  233. +int primitiveSemantics_return_imm_reg_11(int a, int b) {
  234. + if (!a)
  235. + b = 1;
  236. + return b;
  237. +}
  238. +
  239. +/* { dg-final { scan-assembler-times "czero.eqz" 6 } } */
  240. +/* { dg-final { scan-assembler-times "czero.nez" 6 } } */
  241. +/* { dg-final { scan-assembler-not "beq" } } */
  242. +/* { dg-final { scan-assembler-not "bne" } } */
  243. diff --git a/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_reg_reg.c b/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_reg_reg.c
  244. new file mode 100644
  245. index 00000000000..0624b6f16d4
  246. --- /dev/null
  247. +++ b/gcc/testsuite/gcc.target/riscv/zicond-primitiveSemantics_return_reg_reg.c
  248. @@ -0,0 +1,65 @@
  249. +/* { dg-do compile } */
  250. +/* { dg-options "-march=rv64gc_zicond -mabi=lp64d" { target { rv64 } } } */
  251. +/* { dg-options "-march=rv32gc_zicond -mabi=ilp32f" { target { rv32 } } } */
  252. +/* { dg-skip-if "" { *-*-* } {"-O0" "-Os" "-Og" "-Oz"} } */
  253. +
  254. +long primitiveSemantics_return_reg_reg_00(long a, long b, long c) {
  255. + return a == 0 ? c : b;
  256. +}
  257. +
  258. +long primitiveSemantics_return_reg_reg_01(long a, long b, long c) {
  259. + return a != 0 ? c : b;
  260. +}
  261. +
  262. +long primitiveSemantics_return_reg_reg_02(long a, long b, long c) {
  263. + return a == 0 ? b : c;
  264. +}
  265. +
  266. +long primitiveSemantics_return_reg_reg_03(long a, long b, long c) {
  267. + return a != 0 ? b : c;
  268. +}
  269. +
  270. +long primitiveSemantics_return_reg_reg_04(long a, long b, long c) {
  271. + if (a)
  272. + b = c;
  273. + return b;
  274. +}
  275. +
  276. +long primitiveSemantics_return_reg_reg_05(long a, long b, long c) {
  277. + if (!a)
  278. + b = c;
  279. + return b;
  280. +}
  281. +
  282. +int primitiveSemantics_return_reg_reg_06(int a, int b, int c) {
  283. + return a == 0 ? c : b;
  284. +}
  285. +
  286. +int primitiveSemantics_return_reg_reg_07(int a, int b, int c) {
  287. + return a != 0 ? c : b;
  288. +}
  289. +
  290. +int primitiveSemantics_return_reg_reg_08(int a, int b, int c) {
  291. + return a == 0 ? b : c;
  292. +}
  293. +
  294. +int primitiveSemantics_return_reg_reg_09(int a, int b, int c) {
  295. + return a != 0 ? b : c;
  296. +}
  297. +
  298. +int primitiveSemantics_return_reg_reg_10(int a, int b, int c) {
  299. + if (a)
  300. + b = c;
  301. + return b;
  302. +}
  303. +
  304. +int primitiveSemantics_return_reg_reg_11(int a, int b, int c) {
  305. + if (!a)
  306. + b = c;
  307. + return b;
  308. +}
  309. +
  310. +/* { dg-final { scan-assembler-times "czero.eqz" 12 } } */
  311. +/* { dg-final { scan-assembler-times "czero.nez" 12 } } */
  312. +/* { dg-final { scan-assembler-not "beq" } } */
  313. +/* { dg-final { scan-assembler-not "bne" } } */
  314. --
  315. 2.25.1