OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gfortran.dg/] [reduction.f90] - Blame information for rev 694

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 694 jeremybenn
! { dg-do run }
2
! PR 16946
3
! Not all allowed combinations of arguments for MAXVAL, MINVAL,
4
! PRODUCT and SUM were supported.
5
program reduction_mask
6
  implicit none
7
  logical :: equal(3)
8
 
9
  integer, parameter :: res(4*9) = (/ 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, &
10
       1, 1, 1, 1, 1, 6, 6, 6, 2, 2, 2, 2, 2, 2, 6, 6, 6, 3, 3, 3, 3, 3, 3 /)
11
  integer :: val(4*9)
12
  complex :: cval(2*9), cin(3)
13
 
14
  equal = (/ .true., .true., .false. /)
15
 
16
  ! use all combinations of the dim and mask arguments for the
17
  ! reduction intrinsics
18
  val( 1) = maxval((/ 1, 2, 3 /))
19
  val( 2) = maxval((/ 1, 2, 3 /), 1)
20
  val( 3) = maxval((/ 1, 2, 3 /), dim=1)
21
  val( 4) = maxval((/ 1, 2, 3 /), equal)
22
  val( 5) = maxval((/ 1, 2, 3 /), mask=equal)
23
  val( 6) = maxval((/ 1, 2, 3 /), 1, equal)
24
  val( 7) = maxval((/ 1, 2, 3 /), 1, mask=equal)
25
  val( 8) = maxval((/ 1, 2, 3 /), dim=1, mask=equal)
26
  val( 9) = maxval((/ 1, 2, 3 /), mask=equal, dim=1)
27
 
28
  val(10) = minval((/ 1, 2, 3 /))
29
  val(11) = minval((/ 1, 2, 3 /), 1)
30
  val(12) = minval((/ 1, 2, 3 /), dim=1)
31
  val(13) = minval((/ 1, 2, 3 /), equal)
32
  val(14) = minval((/ 1, 2, 3 /), mask=equal)
33
  val(15) = minval((/ 1, 2, 3 /), 1, equal)
34
  val(16) = minval((/ 1, 2, 3 /), 1, mask=equal)
35
  val(17) = minval((/ 1, 2, 3 /), dim=1, mask=equal)
36
  val(18) = minval((/ 1, 2, 3 /), mask=equal, dim=1)
37
 
38
  val(19) = product((/ 1, 2, 3 /))
39
  val(20) = product((/ 1, 2, 3 /), 1)
40
  val(21) = product((/ 1, 2, 3 /), dim=1)
41
  val(22) = product((/ 1, 2, 3 /), equal)
42
  val(23) = product((/ 1, 2, 3 /), mask=equal)
43
  val(24) = product((/ 1, 2, 3 /), 1, equal)
44
  val(25) = product((/ 1, 2, 3 /), 1, mask=equal)
45
  val(26) = product((/ 1, 2, 3 /), dim=1, mask=equal)
46
  val(27) = product((/ 1, 2, 3 /), mask=equal, dim=1)
47
 
48
  val(28) = sum((/ 1, 2, 3 /))
49
  val(29) = sum((/ 1, 2, 3 /), 1)
50
  val(30) = sum((/ 1, 2, 3 /), dim=1)
51
  val(31) = sum((/ 1, 2, 3 /), equal)
52
  val(32) = sum((/ 1, 2, 3 /), mask=equal)
53
  val(33) = sum((/ 1, 2, 3 /), 1, equal)
54
  val(34) = sum((/ 1, 2, 3 /), 1, mask=equal)
55
  val(35) = sum((/ 1, 2, 3 /), dim=1, mask=equal)
56
  val(36) = sum((/ 1, 2, 3 /), mask=equal, dim=1)
57
 
58
  if (any (val /= res)) call abort
59
 
60
  ! Tests for complex arguments. These were broken by the original fix.
61
 
62
  cin = cmplx((/1,2,3/))
63
 
64
  cval(1) = product(cin)
65
  cval(2) = product(cin, 1)
66
  cval(3) = product(cin, dim=1)
67
  cval(4) = product(cin, equal)
68
  cval(5) = product(cin, mask=equal)
69
  cval(6) = product(cin, 1, equal)
70
  cval(7) = product(cin, 1, mask=equal)
71
  cval(8) = product(cin, dim=1, mask=equal)
72
  cval(9) = product(cin, mask=equal, dim=1)
73
 
74
  cval(10) = sum(cin)
75
  cval(11) = sum(cin, 1)
76
  cval(12) = sum(cin, dim=1)
77
  cval(13) = sum(cin, equal)
78
  cval(14) = sum(cin, mask=equal)
79
  cval(15) = sum(cin, 1, equal)
80
  cval(16) = sum(cin, 1, mask=equal)
81
  cval(17) = sum(cin, dim=1, mask=equal)
82
  cval(18) = sum(cin, mask=equal, dim=1)
83
 
84
  if (any (cval /= cmplx(res(19:36)))) call abort
85
end program reduction_mask

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.