Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/i386/i386-modes.def @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | 77e2b8dfacca |
children | 84e7813d76e9 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* Definitions of target machine for GCC for IA-32. | 1 /* Definitions of target machine for GCC for IA-32. |
2 Copyright (C) 2002, 2004, 2005, 2007, 2008 Free Software Foundation, Inc. | 2 Copyright (C) 2002-2017 Free Software Foundation, Inc. |
3 | 3 |
4 This file is part of GCC. | 4 This file is part of GCC. |
5 | 5 |
6 GCC is free software; you can redistribute it and/or modify | 6 GCC is free software; you can redistribute it and/or modify |
7 it under the terms of the GNU General Public License as published by | 7 it under the terms of the GNU General Public License as published by |
37 /* Add any extra modes needed to represent the condition code. | 37 /* Add any extra modes needed to represent the condition code. |
38 | 38 |
39 For the i386, we need separate modes when floating-point | 39 For the i386, we need separate modes when floating-point |
40 equality comparisons are being done. | 40 equality comparisons are being done. |
41 | 41 |
42 Add CCNO to indicate comparisons against zero that requires | 42 Add CCNO to indicate comparisons against zero that require |
43 Overflow flag to be unset. Sign bit test is used instead and | 43 Overflow flag to be unset. Sign bit test is used instead and |
44 thus can be used to form "a&b>0" type of tests. | 44 thus can be used to form "a&b>0" type of tests. |
45 | 45 |
46 Add CCGC to indicate comparisons against zero that allows | 46 Add CCGC to indicate comparisons against zero that allow |
47 unspecified garbage in the Carry flag. This mode is used | 47 unspecified garbage in the Carry flag. This mode is used |
48 by inc/dec instructions. | 48 by inc/dec instructions. |
49 | 49 |
50 Add CCGOC to indicate comparisons against zero that allows | 50 Add CCGOC to indicate comparisons against zero that allow |
51 unspecified garbage in the Carry and Overflow flag. This | 51 unspecified garbage in the Carry and Overflow flag. This |
52 mode is used to simulate comparisons of (a-b) and (a+b) | 52 mode is used to simulate comparisons of (a-b) and (a+b) |
53 against zero using sub/cmp/add operations. | 53 against zero using sub/cmp/add operations. |
54 | 54 |
55 Add CCGZ to indicate comparisons that allow unspecified garbage | |
56 in the Zero flag. This mode is used in double-word comparisons. | |
57 | |
55 Add CCA to indicate that only the Above flag is valid. | 58 Add CCA to indicate that only the Above flag is valid. |
56 Add CCC to indicate that only the Carry flag is valid. | 59 Add CCC to indicate that only the Carry flag is valid. |
57 Add CCO to indicate that only the Overflow flag is valid. | 60 Add CCO to indicate that only the Overflow flag is valid. |
61 Add CCP to indicate that only the Parity flag is valid. | |
58 Add CCS to indicate that only the Sign flag is valid. | 62 Add CCS to indicate that only the Sign flag is valid. |
59 Add CCZ to indicate that only the Zero flag is valid. */ | 63 Add CCZ to indicate that only the Zero flag is valid. */ |
60 | 64 |
61 CC_MODE (CCGC); | 65 CC_MODE (CCGC); |
62 CC_MODE (CCGOC); | 66 CC_MODE (CCGOC); |
63 CC_MODE (CCNO); | 67 CC_MODE (CCNO); |
68 CC_MODE (CCGZ); | |
64 CC_MODE (CCA); | 69 CC_MODE (CCA); |
65 CC_MODE (CCC); | 70 CC_MODE (CCC); |
66 CC_MODE (CCO); | 71 CC_MODE (CCO); |
72 CC_MODE (CCP); | |
67 CC_MODE (CCS); | 73 CC_MODE (CCS); |
68 CC_MODE (CCZ); | 74 CC_MODE (CCZ); |
69 CC_MODE (CCFP); | 75 CC_MODE (CCFP); |
70 CC_MODE (CCFPU); | 76 CC_MODE (CCFPU); |
71 | 77 |
74 VECTOR_MODES (INT, 4); /* V4QI V2HI */ | 80 VECTOR_MODES (INT, 4); /* V4QI V2HI */ |
75 VECTOR_MODES (INT, 8); /* V8QI V4HI V2SI */ | 81 VECTOR_MODES (INT, 8); /* V8QI V4HI V2SI */ |
76 VECTOR_MODES (INT, 16); /* V16QI V8HI V4SI V2DI */ | 82 VECTOR_MODES (INT, 16); /* V16QI V8HI V4SI V2DI */ |
77 VECTOR_MODES (INT, 32); /* V32QI V16HI V8SI V4DI */ | 83 VECTOR_MODES (INT, 32); /* V32QI V16HI V8SI V4DI */ |
78 VECTOR_MODES (INT, 64); /* V64QI V32HI V16SI V8DI */ | 84 VECTOR_MODES (INT, 64); /* V64QI V32HI V16SI V8DI */ |
79 VECTOR_MODES (FLOAT, 8); /* V4HF V2SF */ | 85 VECTOR_MODES (INT, 128); /* V128QI V64HI V32SI V16DI */ |
80 VECTOR_MODES (FLOAT, 16); /* V8HF V4SF V2DF */ | 86 VECTOR_MODES (FLOAT, 8); /* V2SF */ |
81 VECTOR_MODES (FLOAT, 32); /* V16HF V8SF V4DF */ | 87 VECTOR_MODES (FLOAT, 16); /* V4SF V2DF */ |
82 VECTOR_MODES (FLOAT, 64); /* V32HF V16SF V8DF */ | 88 VECTOR_MODES (FLOAT, 32); /* V8SF V4DF V2TF */ |
89 VECTOR_MODES (FLOAT, 64); /* V16SF V8DF V4TF */ | |
90 VECTOR_MODES (FLOAT, 128); /* V32SF V16DF V8TF */ | |
91 VECTOR_MODES (FLOAT, 256); /* V64SF V32DF V16TF */ | |
83 VECTOR_MODE (INT, TI, 1); /* V1TI */ | 92 VECTOR_MODE (INT, TI, 1); /* V1TI */ |
84 VECTOR_MODE (INT, DI, 1); /* V1DI */ | 93 VECTOR_MODE (INT, DI, 1); /* V1DI */ |
85 VECTOR_MODE (INT, SI, 1); /* V1SI */ | 94 VECTOR_MODE (INT, SI, 1); /* V1SI */ |
86 VECTOR_MODE (INT, QI, 2); /* V2QI */ | 95 VECTOR_MODE (INT, QI, 2); /* V2QI */ |
96 VECTOR_MODE (INT, QI, 12); /* V12QI */ | |
97 VECTOR_MODE (INT, QI, 14); /* V14QI */ | |
98 VECTOR_MODE (INT, HI, 6); /* V6HI */ | |
99 VECTOR_MODE (INT, SI, 64); /* V64SI */ | |
100 | |
101 POINTER_BOUNDS_MODE (BND32, 8); | |
102 POINTER_BOUNDS_MODE (BND64, 16); | |
87 | 103 |
88 INT_MODE (OI, 32); | 104 INT_MODE (OI, 32); |
105 INT_MODE (XI, 64); | |
106 | |
107 /* Keep the OI and XI modes from confusing the compiler into thinking | |
108 that these modes could actually be used for computation. They are | |
109 only holders for vectors during data movement. */ | |
110 #define MAX_BITSIZE_MODE_ANY_INT (128) | |
89 | 111 |
90 /* The symbol Pmode stands for one of the above machine modes (usually SImode). | 112 /* The symbol Pmode stands for one of the above machine modes (usually SImode). |
91 The tm.h file specifies which one. It is not a distinct mode. */ | 113 The tm.h file specifies which one. It is not a distinct mode. */ |