diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c
index 03b525f53c739ff6684f6b9887669f197d64074f..451d34ae260bb7a449b03612d2cb6fb1d231d0c7 100644
--- a/dlls/wined3d/arb_program_shader.c
+++ b/dlls/wined3d/arb_program_shader.c
@@ -5130,6 +5130,7 @@ static const SHADER_HANDLER shader_arb_instruction_handler_table[WINED3DSIH_TABL
     /* WINED3DSIH_UDIV          */ NULL,
     /* WINED3DSIH_USHR          */ NULL,
     /* WINED3DSIH_UTOF          */ NULL,
+    /* WINED3DSIH_XOR           */ NULL,
 };
 
 static BOOL get_bool_const(const struct wined3d_shader_instruction *ins,
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index b1c9b610b65467fdafc9667884112f4813883531..68e2f8fe5446e6cd6181810a8b92bd7460de4ec7 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -5085,6 +5085,7 @@ static const SHADER_HANDLER shader_glsl_instruction_handler_table[WINED3DSIH_TAB
     /* WINED3DSIH_UDIV          */ NULL,
     /* WINED3DSIH_USHR          */ NULL,
     /* WINED3DSIH_UTOF          */ NULL,
+    /* WINED3DSIH_XOR           */ NULL,
 };
 
 static void shader_glsl_handle_instruction(const struct wined3d_shader_instruction *ins) {
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index 5f2448cd8c82baf6d4b9618107aa00b5f9e12007..d7ba8188de896ba9edbd8ea2a74d0f9147115bb4 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -141,6 +141,7 @@ static const char * const shader_opcode_names[] =
     /* WINED3DSIH_UDIV          */ "udiv",
     /* WINED3DSIH_USHR          */ "ushr",
     /* WINED3DSIH_UTOF          */ "utof",
+    /* WINED3DSIH_XOR           */ "xor",
 };
 
 static const char * const semantic_names[] =
diff --git a/dlls/wined3d/shader_sm4.c b/dlls/wined3d/shader_sm4.c
index 5c675c278a287b171b41e4474fc24c493ecccfa8..25bb72a42758d1cfd3f4bb556600868b2793b414 100644
--- a/dlls/wined3d/shader_sm4.c
+++ b/dlls/wined3d/shader_sm4.c
@@ -97,6 +97,7 @@ enum wined3d_sm4_opcode
     WINED3D_SM4_OP_UDIV         = 0x4e,
     WINED3D_SM4_OP_USHR         = 0x55,
     WINED3D_SM4_OP_UTOF         = 0x56,
+    WINED3D_SM4_OP_XOR          = 0x57,
 };
 
 enum wined3d_sm4_register_type
@@ -185,6 +186,7 @@ static const struct wined3d_sm4_opcode_info opcode_table[] =
     {WINED3D_SM4_OP_UDIV,       WINED3DSIH_UDIV,        2,  2},
     {WINED3D_SM4_OP_USHR,       WINED3DSIH_USHR,        1,  2},
     {WINED3D_SM4_OP_UTOF,       WINED3DSIH_UTOF,        1,  1},
+    {WINED3D_SM4_OP_XOR,        WINED3DSIH_XOR,         1,  2},
 };
 
 static const enum wined3d_shader_register_type register_type_table[] =
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 72ffe739291e42ba6464bc6147b597c3442af9b9..ee299347798602f1d54f790ef280c826fa9f4ba8 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -514,6 +514,7 @@ enum WINED3D_SHADER_INSTRUCTION_HANDLER
     WINED3DSIH_UDIV,
     WINED3DSIH_USHR,
     WINED3DSIH_UTOF,
+    WINED3DSIH_XOR,
     WINED3DSIH_TABLE_SIZE
 };