aboutsummaryrefslogtreecommitdiff
path: root/Source/Parser/wp_parser_y.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Parser/wp_parser_y.h')
-rw-r--r--Source/Parser/wp_parser_y.h22
1 files changed, 16 insertions, 6 deletions
diff --git a/Source/Parser/wp_parser_y.h b/Source/Parser/wp_parser_y.h
index 4a3aeda40..8c9f8e4e4 100644
--- a/Source/Parser/wp_parser_y.h
+++ b/Source/Parser/wp_parser_y.h
@@ -1,6 +1,8 @@
#ifndef WP_PARSER_Y_H_
#define WP_PARSER_Y_H_
+#include <AMReX_GpuQualifiers.H>
+
#ifdef __cplusplus
#include <cstdlib>
extern "C" {
@@ -73,17 +75,22 @@ enum wp_node_t {
* wp_node_t type can be safely checked to determine their real type.
*/
-union wp_vp {
- double v;
+union wp_ip {
+ int i;
double* p;
};
+union wp_vp {
+ double v;
+ union wp_ip ip;
+};
+
struct wp_node {
enum wp_node_t type;
struct wp_node* l;
struct wp_node* r;
union wp_vp lvp; // After optimization, this may store left value/pointer.
- double* rp; // this may store right pointer.
+ union wp_ip rip; // this may store right pointer.
};
struct wp_number {
@@ -94,7 +101,7 @@ struct wp_number {
struct wp_symbol {
enum wp_node_t type;
char* name;
- double* pointer;
+ union wp_ip ip;
};
struct wp_f1 { /* Builtin functions with one argument */
@@ -124,6 +131,7 @@ struct wp_node* wp_newf1 (enum wp_f1_t ftype, struct wp_node* l);
struct wp_node* wp_newf2 (enum wp_f2_t ftype, struct wp_node* l,
struct wp_node* r);
+AMREX_GPU_HOST_DEVICE
void yyerror (char const *s, ...);
/*******************************************************************/
@@ -146,6 +154,7 @@ struct wp_parser* wp_parser_dup (struct wp_parser* source);
struct wp_node* wp_parser_ast_dup (struct wp_parser* parser, struct wp_node* src, int move);
void wp_parser_regvar (struct wp_parser* parser, char const* name, double* p);
+void wp_parser_regvar_gpu (struct wp_parser* parser, char const* name, int i);
void wp_parser_setconst (struct wp_parser* parser, char const* name, double c);
/* We need to walk the tree in these functions */
@@ -153,10 +162,11 @@ void wp_ast_optimize (struct wp_node* node);
size_t wp_ast_size (struct wp_node* node);
void wp_ast_print (struct wp_node* node);
void wp_ast_regvar (struct wp_node* node, char const* name, double* p);
+void wp_ast_regvar_gpu (struct wp_node* node, char const* name, int i);
void wp_ast_setconst (struct wp_node* node, char const* name, double c);
-double wp_call_f1 (enum wp_f1_t type, double a);
-double wp_call_f2 (enum wp_f2_t type, double a, double b);
+AMREX_GPU_HOST_DEVICE double wp_call_f1 (enum wp_f1_t type, double a);
+AMREX_GPU_HOST_DEVICE double wp_call_f2 (enum wp_f2_t type, double a, double b);
#ifdef __cplusplus
}