module main
contains
  subroutine f1 ()
  end subroutine
  subroutine f2 ()
    !$omp declare variant (f1) match (construct={target})
  end subroutine
  subroutine f3 ()
  end subroutine
  subroutine f4 ()
    !$omp declare variant (f3) match (construct={teams})
  end subroutine
  subroutine f5 ()
  end subroutine
  subroutine f6 ()
    !$omp declare variant (f5) match (construct={parallel})
  end subroutine
  subroutine f7 ()
  end subroutine
  subroutine f8 ()
    !$omp declare variant (f7) match (construct={do})
  end subroutine
  subroutine f9 ()
  end subroutine
  subroutine f10 ()
    !$omp declare variant (f9) match (construct={target,teams,parallel,do})
  end subroutine
  subroutine f11 ()
  end subroutine
  subroutine f12 ()
    !$omp declare variant (f11) match (construct={teams,do,parallel})
  end subroutine
  subroutine f13 ()
  end subroutine
  subroutine f14 ()
    !$omp declare variant (f13) match (device={kind(any)})
  end subroutine
  subroutine f15 ()
    !$omp declare variant (f13) match (device={kind("host")})
  end subroutine
  subroutine f16 ()
    !$omp declare variant (f13) match (device={kind(nohost)})
  end subroutine
  subroutine f17 ()
    !$omp declare variant (f13) match (device={kind(cpu)})
  end subroutine
  subroutine f18 ()
    !$omp declare variant (f13) match (device={kind("gpu")})
  end subroutine
  subroutine f19 ()
    !$omp declare variant (f13) match (device={kind(fpga)})
  end subroutine
  subroutine f20 ()
    !$omp declare variant (f13) match (device={kind(any,any)})
  end subroutine
  subroutine f21 ()
    !$omp declare variant (f13) match (device={kind(host,nohost)})
  end subroutine
  subroutine f22 ()
    !$omp declare variant (f13) match (device={kind("cpu","gpu","fpga")})
  end subroutine
  subroutine f23 ()
    !$omp declare variant (f13) match (device={kind(any,cpu,nohost)})
  end subroutine
  subroutine f24 ()
    !$omp declare variant (f13) match (device={isa(avx)})
  end subroutine
  subroutine f25 ()
    !$omp declare variant (f13) match (device={isa(sse4,"avx512f",avx512vl,avx512bw)})
  end subroutine
  subroutine f26 ()
    !$omp declare variant (f13) match (device={arch("x86_64")})
  end subroutine
  subroutine f27 ()
    !$omp declare variant (f13) match (device={arch(riscv64)})
  end subroutine
  subroutine f28 ()
    !$omp declare variant (f13) match (device={arch(nvptx)})
  end subroutine
  subroutine f29 ()
    !$omp declare variant (f13) match (device={arch(x86_64),isa("avx512f","avx512vl"),kind(cpu)})
  end subroutine
  subroutine f30 ()
    !$omp declare variant (f13) match (implementation={vendor(amd)})
  end subroutine
  subroutine f31 ()
    !$omp declare variant (f13) match (implementation={vendor(arm)})
  end subroutine
  subroutine f32 ()
    !$omp declare variant (f13) match (implementation={vendor("bsc")})
  end subroutine
  subroutine f33 ()
    !$omp declare variant (f13) match (implementation={vendor(cray)})
  end subroutine
  subroutine f34 ()
    !$omp declare variant (f13) match (implementation={vendor(fujitsu)})
  end subroutine
  subroutine f35 ()
    !$omp declare variant (f13) match (implementation={vendor(gnu)})
  end subroutine
  subroutine f36 ()
    !$omp declare variant (f13) match (implementation={vendor(ibm)})
  end subroutine
  subroutine f37 ()
    !$omp declare variant (f13) match (implementation={vendor("intel")})
  end subroutine
  subroutine f38 ()
    !$omp declare variant (f13) match (implementation={vendor(llvm)})
  end subroutine
  subroutine f39 ()
    !$omp declare variant (f13) match (implementation={vendor(pgi)})
  end subroutine
  subroutine f40 ()
    !$omp declare variant (f13) match (implementation={vendor(ti)})
  end subroutine
  subroutine f41 ()
    !$omp declare variant (f13) match (implementation={vendor(unknown)})
  end subroutine
  subroutine f42 ()
    !$omp declare variant (f13) match (implementation={vendor(gnu,llvm,intel,ibm)})
  end subroutine
  subroutine f43 ()
    !$omp declare variant (f13) match (implementation={extension(my_cute_extension)})	! { dg-warning "unknown property 'my_cute_extension' of 'extension' selector" }
  end subroutine
  subroutine f44 ()
    !$omp declare variant (f13) match (implementation={extension(some_other_ext,another_ext)})	! { dg-warning "unknown property 'some_other_ext' of 'extension' selector" }
												! { dg-warning "unknown property 'another_ext' of 'extension' selector" "" { target *-*-* } .-1 }
  end subroutine
  subroutine f45 ()
    !$omp declare variant (f13) match (implementation={unified_shared_memory})
  end subroutine
  subroutine f46 ()
    !$omp declare variant (f13) match (implementation={unified_address})
  end subroutine
  subroutine f47 ()
    !$omp declare variant (f13) match (implementation={dynamic_allocators})
  end subroutine
  subroutine f48 ()
    !$omp declare variant (f13) match (implementation={reverse_offload})
  end subroutine
  subroutine f49 ()
    !$omp declare variant (f13) match (implementation={atomic_default_mem_order(seq_cst)})
  end subroutine
  subroutine f50 ()
    !$omp declare variant (f13) match (implementation={atomic_default_mem_order(relaxed)})
  end subroutine
  subroutine f51 ()
    !$omp declare variant (f13) match (implementation={atomic_default_mem_order(acq_rel)})
  end subroutine
  subroutine f52 ()
    !$omp declare variant (f14) match (implementation={atomic_default_mem_order(acq_rel),vendor(gnu),&
    !$omp&					       unified_address,extension(foobar)}) ! { dg-warning "unknown property 'foobar' of 'extension' selector" "" { target *-*-* } .-1 }
  end subroutine
  subroutine f53 ()
    !$omp declare variant (f13) match (implementation={vendor(score(3):amd)})
  end subroutine
  subroutine f54 ()
    !$omp declare variant (f13) match (implementation={vendor(score(4):"arm")})
  end subroutine
  subroutine f55 ()
    !$omp declare variant (f13) match (implementation={vendor(score(5):bsc)})
  end subroutine
  subroutine f56 ()
    !$omp declare variant (f13) match (implementation={vendor(score(6):cray)})
  end subroutine
  subroutine f57 ()
    !$omp declare variant (f13) match (implementation={vendor(score(7):fujitsu)})
  end subroutine
  subroutine f58 ()
    !$omp declare variant (f13) match (implementation={vendor(score(8):gnu)})
  end subroutine
  subroutine f59 ()
    !$omp declare variant (f13) match (implementation={vendor(score(9):ibm)})
  end subroutine
  subroutine f60 ()
    !$omp declare variant (f13) match (implementation={vendor(score(10):intel)})
  end subroutine
  subroutine f61 ()
    !$omp declare variant (f13) match (implementation={vendor(score(11):llvm)})
  end subroutine
  subroutine f62 ()
    !$omp declare variant (f13) match (implementation={vendor(score(12):pgi)})
  end subroutine
  subroutine f63 ()
    !$omp declare variant (f13) match (implementation={vendor(score(13):"ti")})
  end subroutine
  subroutine f64 ()
    !$omp declare variant (f13) match (implementation={vendor(score(14):unknown)})
  end subroutine
  subroutine f65 ()
    !$omp declare variant (f13) match (implementation={vendor(score(15):gnu,llvm,intel,ibm)})
  end subroutine
  subroutine f66 ()
    !$omp declare variant (f13) match (implementation={extension(score(16):my_cute_extension)})	! { dg-warning "unknown property 'my_cute_extension' of 'extension' selector" }
  end subroutine
  subroutine f67 ()
    !$omp declare variant (f13) match (implementation={extension(score(17):some_other_ext,another_ext)})	! { dg-warning "unknown property 'some_other_ext' of 'extension' selector" }
  end subroutine												! { dg-warning "unknown property 'another_ext' of 'extension' selector" "" { target *-*-* } .-1 }
  subroutine f68 ()
    !$omp declare variant (f13) match (implementation={atomic_default_mem_order(score(18):seq_cst)})
  end subroutine
  subroutine f69 ()
    !$omp declare variant (f13) match (implementation={atomic_default_mem_order(score(19):relaxed)})
  end subroutine
  subroutine f70 ()
    !$omp declare variant (f13) match (implementation={atomic_default_mem_order(score(20):acq_rel)})
  end subroutine
  subroutine f71 ()
    !$omp declare variant (f13) match (implementation={atomic_default_mem_order(score(21):acq_rel),&
    !$omp&					       vendor(score(22):gnu),unified_address,extension(score(22):foobar)})	! { dg-warning "unknown property 'foobar' of 'extension' selector" "" { target *-*-* } .-1 }
  end subroutine
  subroutine f72 ()
    !$omp declare variant (f13) match (user={condition(0)})
  end subroutine
  subroutine f73 ()
    !$omp declare variant (f13) match (user={condition(272-272*1)})
  end subroutine
  subroutine f74 ()
    !$omp declare variant (f13) match (user={condition(score(25):1)})
  end subroutine
  subroutine f75 ()
    !$omp declare variant (f13) match (device={kind(any,"any")})
  end subroutine
  subroutine f76 ()
    !$omp declare variant (f13) match (device={kind("any","any")})
  end subroutine
  subroutine f77 ()
    !$omp declare variant (f13) match (device={kind("any",any)})
  end subroutine
  subroutine f78 ()
    !$omp declare variant (f13) match (implementation={vendor(nvidia)})
  end subroutine
  subroutine f79 ()
    !$omp declare variant (f13) match (user={condition(score(0):0)})
  end subroutine

  end module
