radeon/llvm: Remove unused AMDIL TableGen definitons

This commit is contained in:
Tom Stellard 2012-06-06 20:27:47 -04:00
parent 34ff22b75f
commit 984ad0788c
18 changed files with 26 additions and 6140 deletions

View file

@ -56,7 +56,7 @@ namespace AMDGPUISD
enum
{
AMDGPU_FIRST = AMDILISD::LAST_NON_MEMORY_OPCODE,
AMDGPU_FIRST = AMDILISD::LAST_ISD_NUMBER,
FRACT,
FMAX,
SMAX,

View file

@ -46,7 +46,6 @@ bool AMDGPU::isTransOp(unsigned opcode)
case AMDIL::COS_r600:
case AMDIL::COS_eg:
case AMDIL::RSQ_f32:
case AMDIL::MULLIT:
case AMDIL::MUL_LIT_r600:
case AMDIL::MUL_LIT_eg:

View file

@ -23,26 +23,10 @@ def RetCC_AMDIL32 : CallingConv<[
// Integer and FP scalar values get put on the stack at 16-byte alignment
// but with a size of 4 bytes
CCIfType<[i1, i8, i16, i32, f32, f64, i64], CCAssignToReg<
CCIfType<[i32, f32], CCAssignToReg<
[
R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50, R51, R52, R53, R54, R55, R56, R57, R58, R59, R60, R61, R62, R63, R64, R65, R66, R67, R68, R69, R70, R71, R72, R73, R74, R75, R76, R77, R78, R79, R80, R81, R82, R83, R84, R85, R86, R87, R88, R89, R90, R91, R92, R93, R94, R95, R96, R97, R98, R99, R100, R101, R102, R103, R104, R105, R106, R107, R108, R109, R110, R111, R112, R113, R114, R115, R116, R117, R118, R119, R120, R121, R122, R123, R124, R125, R126, R127, R128, R129, R130, R131, R132, R133, R134, R135, R136, R137, R138, R139, R140, R141, R142, R143, R144, R145, R146, R147, R148, R149, R150, R151, R152, R153, R154, R155, R156, R157, R158, R159, R160, R161, R162, R163, R164, R165, R166, R167, R168, R169, R170, R171, R172, R173, R174, R175, R176, R177, R178, R179, R180, R181, R182, R183, R184, R185, R186, R187, R188, R189, R190, R191, R192, R193, R194, R195, R196, R197, R198, R199, R200, R201, R202, R203, R204, R205, R206, R207, R208, R209, R210, R211, R212, R213, R214, R215, R216, R217, R218, R219, R220, R221, R222, R223, R224, R225, R226, R227, R228, R229, R230, R231, R232, R233, R234, R235, R236, R237, R238, R239, R240, R241, R242, R243, R244, R245, R246, R247, R248, R249, R250, R251, R252, R253, R254, R255, R256, R257, R258, R259, R260, R261, R262, R263, R264, R265, R266, R267, R268, R269, R270, R271, R272, R273, R274, R275, R276, R277, R278, R279, R280, R281, R282, R283, R284, R285, R286, R287, R288, R289, R290, R291, R292, R293, R294, R295, R296, R297, R298, R299, R300, R301, R302, R303, R304, R305, R306, R307, R308, R309, R310, R311, R312, R313, R314, R315, R316, R317, R318, R319, R320, R321, R322, R323, R324, R325, R326, R327, R328, R329, R330, R331, R332, R333, R334, R335, R336, R337, R338, R339, R340, R341, R342, R343, R344, R345, R346, R347, R348, R349, R350, R351, R352, R353, R354, R355, R356, R357, R358, R359, R360, R361, R362, R363, R364, R365, R366, R367, R368, R369, R370, R371, R372, R373, R374, R375, R376, R377, R378, R379, R380, R381, R382, R383, R384, R385, R386, R387, R388, R389, R390, R391, R392, R393, R394, R395, R396, R397, R398, R399, R400, R401, R402, R403, R404, R405, R406, R407, R408, R409, R410, R411, R412, R413, R414, R415, R416, R417, R418, R419, R420, R421, R422, R423, R424, R425, R426, R427, R428, R429, R430, R431, R432, R433, R434, R435, R436, R437, R438, R439, R440, R441, R442, R443, R444, R445, R446, R447, R448, R449, R450, R451, R452, R453, R454, R455, R456, R457, R458, R459, R460, R461, R462, R463, R464, R465, R466, R467, R468, R469, R470, R471, R472, R473, R474, R475, R476, R477, R478, R479, R480, R481, R482, R483, R484, R485, R486, R487, R488, R489, R490, R491, R492, R493, R494, R495, R496, R497, R498, R499, R500, R501, R502, R503, R504, R505, R506, R507, R508, R509, R510, R511, R512, R513, R514, R515, R516, R517, R518, R519, R520, R521, R522, R523, R524, R525, R526, R527, R528, R529, R530, R531, R532, R533, R534, R535, R536, R537, R538, R539, R540, R541, R542, R543, R544, R545, R546, R547, R548, R549, R550, R551, R552, R553, R554, R555, R556, R557, R558, R559, R560, R561, R562, R563, R564, R565, R566, R567, R568, R569, R570, R571, R572, R573, R574, R575, R576, R577, R578, R579, R580, R581, R582, R583, R584, R585, R586, R587, R588, R589, R590, R591, R592, R593, R594, R595, R596, R597, R598, R599, R600, R601, R602, R603, R604, R605, R606, R607, R608, R609, R610, R611, R612, R613, R614, R615, R616, R617, R618, R619, R620, R621, R622, R623, R624, R625, R626, R627, R628, R629, R630, R631, R632, R633, R634, R635, R636, R637, R638, R639, R640, R641, R642, R643, R644, R645, R646, R647, R648, R649, R650, R651, R652, R653, R654, R655, R656, R657, R658, R659, R660, R661, R662, R663, R664, R665, R666, R667, R668, R669, R670, R671, R672, R673, R674, R675, R676, R677, R678, R679, R680, R681, R682, R683, R684, R685, R686, R687, R688, R689, R690, R691, R692, R693, R694, R695, R696, R697, R698, R699, R700, R701, R702, R703, R704, R705, R706, R707, R708, R709, R710, R711, R712, R713, R714, R715, R716, R717, R718, R719, R720, R721, R722, R723, R724, R725, R726, R727, R728, R729, R730, R731, R732, R733, R734, R735, R736, R737, R738, R739, R740, R741, R742, R743, R744, R745, R746, R747, R748, R749, R750, R751, R752, R753, R754, R755, R756, R757, R758, R759, R760, R761, R762, R763, R764, R765, R766, R767
]> >,
// 2-element Short vector types get 16 byte alignment and size of 8 bytes
CCIfType<[v2i32, v2f32, v2i8, v4i8, v2i16, v4i16], CCAssignToReg<
[R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50, R51, R52, R53, R54, R55, R56, R57, R58, R59, R60, R61, R62, R63, R64, R65, R66, R67, R68, R69, R70, R71, R72, R73, R74, R75, R76, R77, R78, R79, R80, R81, R82, R83, R84, R85, R86, R87, R88, R89, R90, R91, R92, R93, R94, R95, R96, R97, R98, R99, R100, R101, R102, R103, R104, R105, R106, R107, R108, R109, R110, R111, R112, R113, R114, R115, R116, R117, R118, R119, R120, R121, R122, R123, R124, R125, R126, R127, R128, R129, R130, R131, R132, R133, R134, R135, R136, R137, R138, R139, R140, R141, R142, R143, R144, R145, R146, R147, R148, R149, R150, R151, R152, R153, R154, R155, R156, R157, R158, R159, R160, R161, R162, R163, R164, R165, R166, R167, R168, R169, R170, R171, R172, R173, R174, R175, R176, R177, R178, R179, R180, R181, R182, R183, R184, R185, R186, R187, R188, R189, R190, R191, R192, R193, R194, R195, R196, R197, R198, R199, R200, R201, R202, R203, R204, R205, R206, R207, R208, R209, R210, R211, R212, R213, R214, R215, R216, R217, R218, R219, R220, R221, R222, R223, R224, R225, R226, R227, R228, R229, R230, R231, R232, R233, R234, R235, R236, R237, R238, R239, R240, R241, R242, R243, R244, R245, R246, R247, R248, R249, R250, R251, R252, R253, R254, R255, R256, R257, R258, R259, R260, R261, R262, R263, R264, R265, R266, R267, R268, R269, R270, R271, R272, R273, R274, R275, R276, R277, R278, R279, R280, R281, R282, R283, R284, R285, R286, R287, R288, R289, R290, R291, R292, R293, R294, R295, R296, R297, R298, R299, R300, R301, R302, R303, R304, R305, R306, R307, R308, R309, R310, R311, R312, R313, R314, R315, R316, R317, R318, R319, R320, R321, R322, R323, R324, R325, R326, R327, R328, R329, R330, R331, R332, R333, R334, R335, R336, R337, R338, R339, R340, R341, R342, R343, R344, R345, R346, R347, R348, R349, R350, R351, R352, R353, R354, R355, R356, R357, R358, R359, R360, R361, R362, R363, R364, R365, R366, R367, R368, R369, R370, R371, R372, R373, R374, R375, R376, R377, R378, R379, R380, R381, R382, R383, R384, R385, R386, R387, R388, R389, R390, R391, R392, R393, R394, R395, R396, R397, R398, R399, R400, R401, R402, R403, R404, R405, R406, R407, R408, R409, R410, R411, R412, R413, R414, R415, R416, R417, R418, R419, R420, R421, R422, R423, R424, R425, R426, R427, R428, R429, R430, R431, R432, R433, R434, R435, R436, R437, R438, R439, R440, R441, R442, R443, R444, R445, R446, R447, R448, R449, R450, R451, R452, R453, R454, R455, R456, R457, R458, R459, R460, R461, R462, R463, R464, R465, R466, R467, R468, R469, R470, R471, R472, R473, R474, R475, R476, R477, R478, R479, R480, R481, R482, R483, R484, R485, R486, R487, R488, R489, R490, R491, R492, R493, R494, R495, R496, R497, R498, R499, R500, R501, R502, R503, R504, R505, R506, R507, R508, R509, R510, R511, R512, R513, R514, R515, R516, R517, R518, R519, R520, R521, R522, R523, R524, R525, R526, R527, R528, R529, R530, R531, R532, R533, R534, R535, R536, R537, R538, R539, R540, R541, R542, R543, R544, R545, R546, R547, R548, R549, R550, R551, R552, R553, R554, R555, R556, R557, R558, R559, R560, R561, R562, R563, R564, R565, R566, R567, R568, R569, R570, R571, R572, R573, R574, R575, R576, R577, R578, R579, R580, R581, R582, R583, R584, R585, R586, R587, R588, R589, R590, R591, R592, R593, R594, R595, R596, R597, R598, R599, R600, R601, R602, R603, R604, R605, R606, R607, R608, R609, R610, R611, R612, R613, R614, R615, R616, R617, R618, R619, R620, R621, R622, R623, R624, R625, R626, R627, R628, R629, R630, R631, R632, R633, R634, R635, R636, R637, R638, R639, R640, R641, R642, R643, R644, R645, R646, R647, R648, R649, R650, R651, R652, R653, R654, R655, R656, R657, R658, R659, R660, R661, R662, R663, R664, R665, R666, R667, R668, R669, R670, R671, R672, R673, R674, R675, R676, R677, R678, R679, R680, R681, R682, R683, R684, R685, R686, R687, R688, R689, R690, R691, R692, R693, R694, R695, R696, R697, R698, R699, R700, R701, R702, R703, R704, R705, R706, R707, R708, R709, R710, R711, R712, R713, R714, R715, R716, R717, R718, R719, R720, R721, R722, R723, R724, R725, R726, R727, R728, R729, R730, R731, R732, R733, R734, R735, R736, R737, R738, R739, R740, R741, R742, R743, R744, R745, R746, R747, R748, R749, R750, R751, R752, R753, R754, R755, R756, R757, R758, R759, R760, R761, R762, R763, R764, R765, R766, R767
]> >,
// 4-element Short vector types get 16 byte alignment and size of 16 bytes
CCIfType<[v4i32, v4f32], CCAssignToReg<
[R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50, R51, R52, R53, R54, R55, R56, R57, R58, R59, R60, R61, R62, R63, R64, R65, R66, R67, R68, R69, R70, R71, R72, R73, R74, R75, R76, R77, R78, R79, R80, R81, R82, R83, R84, R85, R86, R87, R88, R89, R90, R91, R92, R93, R94, R95, R96, R97, R98, R99, R100, R101, R102, R103, R104, R105, R106, R107, R108, R109, R110, R111, R112, R113, R114, R115, R116, R117, R118, R119, R120, R121, R122, R123, R124, R125, R126, R127, R128, R129, R130, R131, R132, R133, R134, R135, R136, R137, R138, R139, R140, R141, R142, R143, R144, R145, R146, R147, R148, R149, R150, R151, R152, R153, R154, R155, R156, R157, R158, R159, R160, R161, R162, R163, R164, R165, R166, R167, R168, R169, R170, R171, R172, R173, R174, R175, R176, R177, R178, R179, R180, R181, R182, R183, R184, R185, R186, R187, R188, R189, R190, R191, R192, R193, R194, R195, R196, R197, R198, R199, R200, R201, R202, R203, R204, R205, R206, R207, R208, R209, R210, R211, R212, R213, R214, R215, R216, R217, R218, R219, R220, R221, R222, R223, R224, R225, R226, R227, R228, R229, R230, R231, R232, R233, R234, R235, R236, R237, R238, R239, R240, R241, R242, R243, R244, R245, R246, R247, R248, R249, R250, R251, R252, R253, R254, R255, R256, R257, R258, R259, R260, R261, R262, R263, R264, R265, R266, R267, R268, R269, R270, R271, R272, R273, R274, R275, R276, R277, R278, R279, R280, R281, R282, R283, R284, R285, R286, R287, R288, R289, R290, R291, R292, R293, R294, R295, R296, R297, R298, R299, R300, R301, R302, R303, R304, R305, R306, R307, R308, R309, R310, R311, R312, R313, R314, R315, R316, R317, R318, R319, R320, R321, R322, R323, R324, R325, R326, R327, R328, R329, R330, R331, R332, R333, R334, R335, R336, R337, R338, R339, R340, R341, R342, R343, R344, R345, R346, R347, R348, R349, R350, R351, R352, R353, R354, R355, R356, R357, R358, R359, R360, R361, R362, R363, R364, R365, R366, R367, R368, R369, R370, R371, R372, R373, R374, R375, R376, R377, R378, R379, R380, R381, R382, R383, R384, R385, R386, R387, R388, R389, R390, R391, R392, R393, R394, R395, R396, R397, R398, R399, R400, R401, R402, R403, R404, R405, R406, R407, R408, R409, R410, R411, R412, R413, R414, R415, R416, R417, R418, R419, R420, R421, R422, R423, R424, R425, R426, R427, R428, R429, R430, R431, R432, R433, R434, R435, R436, R437, R438, R439, R440, R441, R442, R443, R444, R445, R446, R447, R448, R449, R450, R451, R452, R453, R454, R455, R456, R457, R458, R459, R460, R461, R462, R463, R464, R465, R466, R467, R468, R469, R470, R471, R472, R473, R474, R475, R476, R477, R478, R479, R480, R481, R482, R483, R484, R485, R486, R487, R488, R489, R490, R491, R492, R493, R494, R495, R496, R497, R498, R499, R500, R501, R502, R503, R504, R505, R506, R507, R508, R509, R510, R511, R512, R513, R514, R515, R516, R517, R518, R519, R520, R521, R522, R523, R524, R525, R526, R527, R528, R529, R530, R531, R532, R533, R534, R535, R536, R537, R538, R539, R540, R541, R542, R543, R544, R545, R546, R547, R548, R549, R550, R551, R552, R553, R554, R555, R556, R557, R558, R559, R560, R561, R562, R563, R564, R565, R566, R567, R568, R569, R570, R571, R572, R573, R574, R575, R576, R577, R578, R579, R580, R581, R582, R583, R584, R585, R586, R587, R588, R589, R590, R591, R592, R593, R594, R595, R596, R597, R598, R599, R600, R601, R602, R603, R604, R605, R606, R607, R608, R609, R610, R611, R612, R613, R614, R615, R616, R617, R618, R619, R620, R621, R622, R623, R624, R625, R626, R627, R628, R629, R630, R631, R632, R633, R634, R635, R636, R637, R638, R639, R640, R641, R642, R643, R644, R645, R646, R647, R648, R649, R650, R651, R652, R653, R654, R655, R656, R657, R658, R659, R660, R661, R662, R663, R664, R665, R666, R667, R668, R669, R670, R671, R672, R673, R674, R675, R676, R677, R678, R679, R680, R681, R682, R683, R684, R685, R686, R687, R688, R689, R690, R691, R692, R693, R694, R695, R696, R697, R698, R699, R700, R701, R702, R703, R704, R705, R706, R707, R708, R709, R710, R711, R712, R713, R714, R715, R716, R717, R718, R719, R720, R721, R722, R723, R724, R725, R726, R727, R728, R729, R730, R731, R732, R733, R734, R735, R736, R737, R738, R739, R740, R741, R742, R743, R744, R745, R746, R747, R748, R749, R750, R751, R752, R753, R754, R755, R756, R757, R758, R759, R760, R761, R762, R763, R764, R765, R766, R767
]> >,
// 2-element 64-bit vector types get aligned to 16 bytes with a size of 16 bytes
CCIfType<[v2f64, v2i64], CCAssignToReg<
[R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50, R51, R52, R53, R54, R55, R56, R57, R58, R59, R60, R61, R62, R63, R64, R65, R66, R67, R68, R69, R70, R71, R72, R73, R74, R75, R76, R77, R78, R79, R80, R81, R82, R83, R84, R85, R86, R87, R88, R89, R90, R91, R92, R93, R94, R95, R96, R97, R98, R99, R100, R101, R102, R103, R104, R105, R106, R107, R108, R109, R110, R111, R112, R113, R114, R115, R116, R117, R118, R119, R120, R121, R122, R123, R124, R125, R126, R127, R128, R129, R130, R131, R132, R133, R134, R135, R136, R137, R138, R139, R140, R141, R142, R143, R144, R145, R146, R147, R148, R149, R150, R151, R152, R153, R154, R155, R156, R157, R158, R159, R160, R161, R162, R163, R164, R165, R166, R167, R168, R169, R170, R171, R172, R173, R174, R175, R176, R177, R178, R179, R180, R181, R182, R183, R184, R185, R186, R187, R188, R189, R190, R191, R192, R193, R194, R195, R196, R197, R198, R199, R200, R201, R202, R203, R204, R205, R206, R207, R208, R209, R210, R211, R212, R213, R214, R215, R216, R217, R218, R219, R220, R221, R222, R223, R224, R225, R226, R227, R228, R229, R230, R231, R232, R233, R234, R235, R236, R237, R238, R239, R240, R241, R242, R243, R244, R245, R246, R247, R248, R249, R250, R251, R252, R253, R254, R255, R256, R257, R258, R259, R260, R261, R262, R263, R264, R265, R266, R267, R268, R269, R270, R271, R272, R273, R274, R275, R276, R277, R278, R279, R280, R281, R282, R283, R284, R285, R286, R287, R288, R289, R290, R291, R292, R293, R294, R295, R296, R297, R298, R299, R300, R301, R302, R303, R304, R305, R306, R307, R308, R309, R310, R311, R312, R313, R314, R315, R316, R317, R318, R319, R320, R321, R322, R323, R324, R325, R326, R327, R328, R329, R330, R331, R332, R333, R334, R335, R336, R337, R338, R339, R340, R341, R342, R343, R344, R345, R346, R347, R348, R349, R350, R351, R352, R353, R354, R355, R356, R357, R358, R359, R360, R361, R362, R363, R364, R365, R366, R367, R368, R369, R370, R371, R372, R373, R374, R375, R376, R377, R378, R379, R380, R381, R382, R383, R384, R385, R386, R387, R388, R389, R390, R391, R392, R393, R394, R395, R396, R397, R398, R399, R400, R401, R402, R403, R404, R405, R406, R407, R408, R409, R410, R411, R412, R413, R414, R415, R416, R417, R418, R419, R420, R421, R422, R423, R424, R425, R426, R427, R428, R429, R430, R431, R432, R433, R434, R435, R436, R437, R438, R439, R440, R441, R442, R443, R444, R445, R446, R447, R448, R449, R450, R451, R452, R453, R454, R455, R456, R457, R458, R459, R460, R461, R462, R463, R464, R465, R466, R467, R468, R469, R470, R471, R472, R473, R474, R475, R476, R477, R478, R479, R480, R481, R482, R483, R484, R485, R486, R487, R488, R489, R490, R491, R492, R493, R494, R495, R496, R497, R498, R499, R500, R501, R502, R503, R504, R505, R506, R507, R508, R509, R510, R511, R512, R513, R514, R515, R516, R517, R518, R519, R520, R521, R522, R523, R524, R525, R526, R527, R528, R529, R530, R531, R532, R533, R534, R535, R536, R537, R538, R539, R540, R541, R542, R543, R544, R545, R546, R547, R548, R549, R550, R551, R552, R553, R554, R555, R556, R557, R558, R559, R560, R561, R562, R563, R564, R565, R566, R567, R568, R569, R570, R571, R572, R573, R574, R575, R576, R577, R578, R579, R580, R581, R582, R583, R584, R585, R586, R587, R588, R589, R590, R591, R592, R593, R594, R595, R596, R597, R598, R599, R600, R601, R602, R603, R604, R605, R606, R607, R608, R609, R610, R611, R612, R613, R614, R615, R616, R617, R618, R619, R620, R621, R622, R623, R624, R625, R626, R627, R628, R629, R630, R631, R632, R633, R634, R635, R636, R637, R638, R639, R640, R641, R642, R643, R644, R645, R646, R647, R648, R649, R650, R651, R652, R653, R654, R655, R656, R657, R658, R659, R660, R661, R662, R663, R664, R665, R666, R667, R668, R669, R670, R671, R672, R673, R674, R675, R676, R677, R678, R679, R680, R681, R682, R683, R684, R685, R686, R687, R688, R689, R690, R691, R692, R693, R694, R695, R696, R697, R698, R699, R700, R701, R702, R703, R704, R705, R706, R707, R708, R709, R710, R711, R712, R713, R714, R715, R716, R717, R718, R719, R720, R721, R722, R723, R724, R725, R726, R727, R728, R729, R730, R731, R732, R733, R734, R735, R736, R737, R738, R739, R740, R741, R742, R743, R744, R745, R746, R747, R748, R749, R750, R751, R752, R753, R754, R755, R756, R757, R758, R759, R760, R761, R762, R763, R764, R765, R766, R767
]> >, CCAssignToStack<16, 16>
]>;
R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20
]> >, CCAssignToStack<16, 16>]>;
// AMDIL 32-bit C Calling convention.
def CC_AMDIL32 : CallingConv<[
@ -53,23 +37,6 @@ def CC_AMDIL32 : CallingConv<[
// but with a size of 4 bytes
// Integer and FP scalar values get put on the stack at 16-byte alignment
// but with a size of 4 bytes
CCIfType<[i1, i8, i16, i32, f32, f64, i64], CCAssignToReg<
[R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50, R51, R52, R53, R54, R55, R56, R57, R58, R59, R60, R61, R62, R63, R64, R65, R66, R67, R68, R69, R70, R71, R72, R73, R74, R75, R76, R77, R78, R79, R80, R81, R82, R83, R84, R85, R86, R87, R88, R89, R90, R91, R92, R93, R94, R95, R96, R97, R98, R99, R100, R101, R102, R103, R104, R105, R106, R107, R108, R109, R110, R111, R112, R113, R114, R115, R116, R117, R118, R119, R120, R121, R122, R123, R124, R125, R126, R127, R128, R129, R130, R131, R132, R133, R134, R135, R136, R137, R138, R139, R140, R141, R142, R143, R144, R145, R146, R147, R148, R149, R150, R151, R152, R153, R154, R155, R156, R157, R158, R159, R160, R161, R162, R163, R164, R165, R166, R167, R168, R169, R170, R171, R172, R173, R174, R175, R176, R177, R178, R179, R180, R181, R182, R183, R184, R185, R186, R187, R188, R189, R190, R191, R192, R193, R194, R195, R196, R197, R198, R199, R200, R201, R202, R203, R204, R205, R206, R207, R208, R209, R210, R211, R212, R213, R214, R215, R216, R217, R218, R219, R220, R221, R222, R223, R224, R225, R226, R227, R228, R229, R230, R231, R232, R233, R234, R235, R236, R237, R238, R239, R240, R241, R242, R243, R244, R245, R246, R247, R248, R249, R250, R251, R252, R253, R254, R255, R256, R257, R258, R259, R260, R261, R262, R263, R264, R265, R266, R267, R268, R269, R270, R271, R272, R273, R274, R275, R276, R277, R278, R279, R280, R281, R282, R283, R284, R285, R286, R287, R288, R289, R290, R291, R292, R293, R294, R295, R296, R297, R298, R299, R300, R301, R302, R303, R304, R305, R306, R307, R308, R309, R310, R311, R312, R313, R314, R315, R316, R317, R318, R319, R320, R321, R322, R323, R324, R325, R326, R327, R328, R329, R330, R331, R332, R333, R334, R335, R336, R337, R338, R339, R340, R341, R342, R343, R344, R345, R346, R347, R348, R349, R350, R351, R352, R353, R354, R355, R356, R357, R358, R359, R360, R361, R362, R363, R364, R365, R366, R367, R368, R369, R370, R371, R372, R373, R374, R375, R376, R377, R378, R379, R380, R381, R382, R383, R384, R385, R386, R387, R388, R389, R390, R391, R392, R393, R394, R395, R396, R397, R398, R399, R400, R401, R402, R403, R404, R405, R406, R407, R408, R409, R410, R411, R412, R413, R414, R415, R416, R417, R418, R419, R420, R421, R422, R423, R424, R425, R426, R427, R428, R429, R430, R431, R432, R433, R434, R435, R436, R437, R438, R439, R440, R441, R442, R443, R444, R445, R446, R447, R448, R449, R450, R451, R452, R453, R454, R455, R456, R457, R458, R459, R460, R461, R462, R463, R464, R465, R466, R467, R468, R469, R470, R471, R472, R473, R474, R475, R476, R477, R478, R479, R480, R481, R482, R483, R484, R485, R486, R487, R488, R489, R490, R491, R492, R493, R494, R495, R496, R497, R498, R499, R500, R501, R502, R503, R504, R505, R506, R507, R508, R509, R510, R511, R512, R513, R514, R515, R516, R517, R518, R519, R520, R521, R522, R523, R524, R525, R526, R527, R528, R529, R530, R531, R532, R533, R534, R535, R536, R537, R538, R539, R540, R541, R542, R543, R544, R545, R546, R547, R548, R549, R550, R551, R552, R553, R554, R555, R556, R557, R558, R559, R560, R561, R562, R563, R564, R565, R566, R567, R568, R569, R570, R571, R572, R573, R574, R575, R576, R577, R578, R579, R580, R581, R582, R583, R584, R585, R586, R587, R588, R589, R590, R591, R592, R593, R594, R595, R596, R597, R598, R599, R600, R601, R602, R603, R604, R605, R606, R607, R608, R609, R610, R611, R612, R613, R614, R615, R616, R617, R618, R619, R620, R621, R622, R623, R624, R625, R626, R627, R628, R629, R630, R631, R632, R633, R634, R635, R636, R637, R638, R639, R640, R641, R642, R643, R644, R645, R646, R647, R648, R649, R650, R651, R652, R653, R654, R655, R656, R657, R658, R659, R660, R661, R662, R663, R664, R665, R666, R667, R668, R669, R670, R671, R672, R673, R674, R675, R676, R677, R678, R679, R680, R681, R682, R683, R684, R685, R686, R687, R688, R689, R690, R691, R692, R693, R694, R695, R696, R697, R698, R699, R700, R701, R702, R703, R704, R705, R706, R707, R708, R709, R710, R711, R712, R713, R714, R715, R716, R717, R718, R719, R720, R721, R722, R723, R724, R725, R726, R727, R728, R729, R730, R731, R732, R733, R734, R735, R736, R737, R738, R739, R740, R741, R742, R743, R744, R745, R746, R747, R748, R749, R750, R751, R752, R753, R754, R755, R756, R757, R758, R759, R760, R761, R762, R763, R764, R765, R766, R767
]> >,
// 2-element Short vector types get 16 byte alignment and size of 8 bytes
CCIfType<[v2i32, v2f32, v2i8, v4i8, v2i16, v4i16], CCAssignToReg<
[R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50, R51, R52, R53, R54, R55, R56, R57, R58, R59, R60, R61, R62, R63, R64, R65, R66, R67, R68, R69, R70, R71, R72, R73, R74, R75, R76, R77, R78, R79, R80, R81, R82, R83, R84, R85, R86, R87, R88, R89, R90, R91, R92, R93, R94, R95, R96, R97, R98, R99, R100, R101, R102, R103, R104, R105, R106, R107, R108, R109, R110, R111, R112, R113, R114, R115, R116, R117, R118, R119, R120, R121, R122, R123, R124, R125, R126, R127, R128, R129, R130, R131, R132, R133, R134, R135, R136, R137, R138, R139, R140, R141, R142, R143, R144, R145, R146, R147, R148, R149, R150, R151, R152, R153, R154, R155, R156, R157, R158, R159, R160, R161, R162, R163, R164, R165, R166, R167, R168, R169, R170, R171, R172, R173, R174, R175, R176, R177, R178, R179, R180, R181, R182, R183, R184, R185, R186, R187, R188, R189, R190, R191, R192, R193, R194, R195, R196, R197, R198, R199, R200, R201, R202, R203, R204, R205, R206, R207, R208, R209, R210, R211, R212, R213, R214, R215, R216, R217, R218, R219, R220, R221, R222, R223, R224, R225, R226, R227, R228, R229, R230, R231, R232, R233, R234, R235, R236, R237, R238, R239, R240, R241, R242, R243, R244, R245, R246, R247, R248, R249, R250, R251, R252, R253, R254, R255, R256, R257, R258, R259, R260, R261, R262, R263, R264, R265, R266, R267, R268, R269, R270, R271, R272, R273, R274, R275, R276, R277, R278, R279, R280, R281, R282, R283, R284, R285, R286, R287, R288, R289, R290, R291, R292, R293, R294, R295, R296, R297, R298, R299, R300, R301, R302, R303, R304, R305, R306, R307, R308, R309, R310, R311, R312, R313, R314, R315, R316, R317, R318, R319, R320, R321, R322, R323, R324, R325, R326, R327, R328, R329, R330, R331, R332, R333, R334, R335, R336, R337, R338, R339, R340, R341, R342, R343, R344, R345, R346, R347, R348, R349, R350, R351, R352, R353, R354, R355, R356, R357, R358, R359, R360, R361, R362, R363, R364, R365, R366, R367, R368, R369, R370, R371, R372, R373, R374, R375, R376, R377, R378, R379, R380, R381, R382, R383, R384, R385, R386, R387, R388, R389, R390, R391, R392, R393, R394, R395, R396, R397, R398, R399, R400, R401, R402, R403, R404, R405, R406, R407, R408, R409, R410, R411, R412, R413, R414, R415, R416, R417, R418, R419, R420, R421, R422, R423, R424, R425, R426, R427, R428, R429, R430, R431, R432, R433, R434, R435, R436, R437, R438, R439, R440, R441, R442, R443, R444, R445, R446, R447, R448, R449, R450, R451, R452, R453, R454, R455, R456, R457, R458, R459, R460, R461, R462, R463, R464, R465, R466, R467, R468, R469, R470, R471, R472, R473, R474, R475, R476, R477, R478, R479, R480, R481, R482, R483, R484, R485, R486, R487, R488, R489, R490, R491, R492, R493, R494, R495, R496, R497, R498, R499, R500, R501, R502, R503, R504, R505, R506, R507, R508, R509, R510, R511, R512, R513, R514, R515, R516, R517, R518, R519, R520, R521, R522, R523, R524, R525, R526, R527, R528, R529, R530, R531, R532, R533, R534, R535, R536, R537, R538, R539, R540, R541, R542, R543, R544, R545, R546, R547, R548, R549, R550, R551, R552, R553, R554, R555, R556, R557, R558, R559, R560, R561, R562, R563, R564, R565, R566, R567, R568, R569, R570, R571, R572, R573, R574, R575, R576, R577, R578, R579, R580, R581, R582, R583, R584, R585, R586, R587, R588, R589, R590, R591, R592, R593, R594, R595, R596, R597, R598, R599, R600, R601, R602, R603, R604, R605, R606, R607, R608, R609, R610, R611, R612, R613, R614, R615, R616, R617, R618, R619, R620, R621, R622, R623, R624, R625, R626, R627, R628, R629, R630, R631, R632, R633, R634, R635, R636, R637, R638, R639, R640, R641, R642, R643, R644, R645, R646, R647, R648, R649, R650, R651, R652, R653, R654, R655, R656, R657, R658, R659, R660, R661, R662, R663, R664, R665, R666, R667, R668, R669, R670, R671, R672, R673, R674, R675, R676, R677, R678, R679, R680, R681, R682, R683, R684, R685, R686, R687, R688, R689, R690, R691, R692, R693, R694, R695, R696, R697, R698, R699, R700, R701, R702, R703, R704, R705, R706, R707, R708, R709, R710, R711, R712, R713, R714, R715, R716, R717, R718, R719, R720, R721, R722, R723, R724, R725, R726, R727, R728, R729, R730, R731, R732, R733, R734, R735, R736, R737, R738, R739, R740, R741, R742, R743, R744, R745, R746, R747, R748, R749, R750, R751, R752, R753, R754, R755, R756, R757, R758, R759, R760, R761, R762, R763, R764, R765, R766, R767
]> >,
// 4-element Short vector types get 16 byte alignment and size of 16 bytes
CCIfType<[v4i32, v4f32], CCAssignToReg<
[R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50, R51, R52, R53, R54, R55, R56, R57, R58, R59, R60, R61, R62, R63, R64, R65, R66, R67, R68, R69, R70, R71, R72, R73, R74, R75, R76, R77, R78, R79, R80, R81, R82, R83, R84, R85, R86, R87, R88, R89, R90, R91, R92, R93, R94, R95, R96, R97, R98, R99, R100, R101, R102, R103, R104, R105, R106, R107, R108, R109, R110, R111, R112, R113, R114, R115, R116, R117, R118, R119, R120, R121, R122, R123, R124, R125, R126, R127, R128, R129, R130, R131, R132, R133, R134, R135, R136, R137, R138, R139, R140, R141, R142, R143, R144, R145, R146, R147, R148, R149, R150, R151, R152, R153, R154, R155, R156, R157, R158, R159, R160, R161, R162, R163, R164, R165, R166, R167, R168, R169, R170, R171, R172, R173, R174, R175, R176, R177, R178, R179, R180, R181, R182, R183, R184, R185, R186, R187, R188, R189, R190, R191, R192, R193, R194, R195, R196, R197, R198, R199, R200, R201, R202, R203, R204, R205, R206, R207, R208, R209, R210, R211, R212, R213, R214, R215, R216, R217, R218, R219, R220, R221, R222, R223, R224, R225, R226, R227, R228, R229, R230, R231, R232, R233, R234, R235, R236, R237, R238, R239, R240, R241, R242, R243, R244, R245, R246, R247, R248, R249, R250, R251, R252, R253, R254, R255, R256, R257, R258, R259, R260, R261, R262, R263, R264, R265, R266, R267, R268, R269, R270, R271, R272, R273, R274, R275, R276, R277, R278, R279, R280, R281, R282, R283, R284, R285, R286, R287, R288, R289, R290, R291, R292, R293, R294, R295, R296, R297, R298, R299, R300, R301, R302, R303, R304, R305, R306, R307, R308, R309, R310, R311, R312, R313, R314, R315, R316, R317, R318, R319, R320, R321, R322, R323, R324, R325, R326, R327, R328, R329, R330, R331, R332, R333, R334, R335, R336, R337, R338, R339, R340, R341, R342, R343, R344, R345, R346, R347, R348, R349, R350, R351, R352, R353, R354, R355, R356, R357, R358, R359, R360, R361, R362, R363, R364, R365, R366, R367, R368, R369, R370, R371, R372, R373, R374, R375, R376, R377, R378, R379, R380, R381, R382, R383, R384, R385, R386, R387, R388, R389, R390, R391, R392, R393, R394, R395, R396, R397, R398, R399, R400, R401, R402, R403, R404, R405, R406, R407, R408, R409, R410, R411, R412, R413, R414, R415, R416, R417, R418, R419, R420, R421, R422, R423, R424, R425, R426, R427, R428, R429, R430, R431, R432, R433, R434, R435, R436, R437, R438, R439, R440, R441, R442, R443, R444, R445, R446, R447, R448, R449, R450, R451, R452, R453, R454, R455, R456, R457, R458, R459, R460, R461, R462, R463, R464, R465, R466, R467, R468, R469, R470, R471, R472, R473, R474, R475, R476, R477, R478, R479, R480, R481, R482, R483, R484, R485, R486, R487, R488, R489, R490, R491, R492, R493, R494, R495, R496, R497, R498, R499, R500, R501, R502, R503, R504, R505, R506, R507, R508, R509, R510, R511, R512, R513, R514, R515, R516, R517, R518, R519, R520, R521, R522, R523, R524, R525, R526, R527, R528, R529, R530, R531, R532, R533, R534, R535, R536, R537, R538, R539, R540, R541, R542, R543, R544, R545, R546, R547, R548, R549, R550, R551, R552, R553, R554, R555, R556, R557, R558, R559, R560, R561, R562, R563, R564, R565, R566, R567, R568, R569, R570, R571, R572, R573, R574, R575, R576, R577, R578, R579, R580, R581, R582, R583, R584, R585, R586, R587, R588, R589, R590, R591, R592, R593, R594, R595, R596, R597, R598, R599, R600, R601, R602, R603, R604, R605, R606, R607, R608, R609, R610, R611, R612, R613, R614, R615, R616, R617, R618, R619, R620, R621, R622, R623, R624, R625, R626, R627, R628, R629, R630, R631, R632, R633, R634, R635, R636, R637, R638, R639, R640, R641, R642, R643, R644, R645, R646, R647, R648, R649, R650, R651, R652, R653, R654, R655, R656, R657, R658, R659, R660, R661, R662, R663, R664, R665, R666, R667, R668, R669, R670, R671, R672, R673, R674, R675, R676, R677, R678, R679, R680, R681, R682, R683, R684, R685, R686, R687, R688, R689, R690, R691, R692, R693, R694, R695, R696, R697, R698, R699, R700, R701, R702, R703, R704, R705, R706, R707, R708, R709, R710, R711, R712, R713, R714, R715, R716, R717, R718, R719, R720, R721, R722, R723, R724, R725, R726, R727, R728, R729, R730, R731, R732, R733, R734, R735, R736, R737, R738, R739, R740, R741, R742, R743, R744, R745, R746, R747, R748, R749, R750, R751, R752, R753, R754, R755, R756, R757, R758, R759, R760, R761, R762, R763, R764, R765, R766, R767
]> >,
// 2-element 64-bit vector types get aligned to 16 bytes with a size of 16 bytes
CCIfType<[v2f64, v2i64], CCAssignToReg<
[R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50, R51, R52, R53, R54, R55, R56, R57, R58, R59, R60, R61, R62, R63, R64, R65, R66, R67, R68, R69, R70, R71, R72, R73, R74, R75, R76, R77, R78, R79, R80, R81, R82, R83, R84, R85, R86, R87, R88, R89, R90, R91, R92, R93, R94, R95, R96, R97, R98, R99, R100, R101, R102, R103, R104, R105, R106, R107, R108, R109, R110, R111, R112, R113, R114, R115, R116, R117, R118, R119, R120, R121, R122, R123, R124, R125, R126, R127, R128, R129, R130, R131, R132, R133, R134, R135, R136, R137, R138, R139, R140, R141, R142, R143, R144, R145, R146, R147, R148, R149, R150, R151, R152, R153, R154, R155, R156, R157, R158, R159, R160, R161, R162, R163, R164, R165, R166, R167, R168, R169, R170, R171, R172, R173, R174, R175, R176, R177, R178, R179, R180, R181, R182, R183, R184, R185, R186, R187, R188, R189, R190, R191, R192, R193, R194, R195, R196, R197, R198, R199, R200, R201, R202, R203, R204, R205, R206, R207, R208, R209, R210, R211, R212, R213, R214, R215, R216, R217, R218, R219, R220, R221, R222, R223, R224, R225, R226, R227, R228, R229, R230, R231, R232, R233, R234, R235, R236, R237, R238, R239, R240, R241, R242, R243, R244, R245, R246, R247, R248, R249, R250, R251, R252, R253, R254, R255, R256, R257, R258, R259, R260, R261, R262, R263, R264, R265, R266, R267, R268, R269, R270, R271, R272, R273, R274, R275, R276, R277, R278, R279, R280, R281, R282, R283, R284, R285, R286, R287, R288, R289, R290, R291, R292, R293, R294, R295, R296, R297, R298, R299, R300, R301, R302, R303, R304, R305, R306, R307, R308, R309, R310, R311, R312, R313, R314, R315, R316, R317, R318, R319, R320, R321, R322, R323, R324, R325, R326, R327, R328, R329, R330, R331, R332, R333, R334, R335, R336, R337, R338, R339, R340, R341, R342, R343, R344, R345, R346, R347, R348, R349, R350, R351, R352, R353, R354, R355, R356, R357, R358, R359, R360, R361, R362, R363, R364, R365, R366, R367, R368, R369, R370, R371, R372, R373, R374, R375, R376, R377, R378, R379, R380, R381, R382, R383, R384, R385, R386, R387, R388, R389, R390, R391, R392, R393, R394, R395, R396, R397, R398, R399, R400, R401, R402, R403, R404, R405, R406, R407, R408, R409, R410, R411, R412, R413, R414, R415, R416, R417, R418, R419, R420, R421, R422, R423, R424, R425, R426, R427, R428, R429, R430, R431, R432, R433, R434, R435, R436, R437, R438, R439, R440, R441, R442, R443, R444, R445, R446, R447, R448, R449, R450, R451, R452, R453, R454, R455, R456, R457, R458, R459, R460, R461, R462, R463, R464, R465, R466, R467, R468, R469, R470, R471, R472, R473, R474, R475, R476, R477, R478, R479, R480, R481, R482, R483, R484, R485, R486, R487, R488, R489, R490, R491, R492, R493, R494, R495, R496, R497, R498, R499, R500, R501, R502, R503, R504, R505, R506, R507, R508, R509, R510, R511, R512, R513, R514, R515, R516, R517, R518, R519, R520, R521, R522, R523, R524, R525, R526, R527, R528, R529, R530, R531, R532, R533, R534, R535, R536, R537, R538, R539, R540, R541, R542, R543, R544, R545, R546, R547, R548, R549, R550, R551, R552, R553, R554, R555, R556, R557, R558, R559, R560, R561, R562, R563, R564, R565, R566, R567, R568, R569, R570, R571, R572, R573, R574, R575, R576, R577, R578, R579, R580, R581, R582, R583, R584, R585, R586, R587, R588, R589, R590, R591, R592, R593, R594, R595, R596, R597, R598, R599, R600, R601, R602, R603, R604, R605, R606, R607, R608, R609, R610, R611, R612, R613, R614, R615, R616, R617, R618, R619, R620, R621, R622, R623, R624, R625, R626, R627, R628, R629, R630, R631, R632, R633, R634, R635, R636, R637, R638, R639, R640, R641, R642, R643, R644, R645, R646, R647, R648, R649, R650, R651, R652, R653, R654, R655, R656, R657, R658, R659, R660, R661, R662, R663, R664, R665, R666, R667, R668, R669, R670, R671, R672, R673, R674, R675, R676, R677, R678, R679, R680, R681, R682, R683, R684, R685, R686, R687, R688, R689, R690, R691, R692, R693, R694, R695, R696, R697, R698, R699, R700, R701, R702, R703, R704, R705, R706, R707, R708, R709, R710, R711, R712, R713, R714, R715, R716, R717, R718, R719, R720, R721, R722, R723, R724, R725, R726, R727, R728, R729, R730, R731, R732, R733, R734, R735, R736, R737, R738, R739, R740, R741, R742, R743, R744, R745, R746, R747, R748, R749, R750, R751, R752, R753, R754, R755, R756, R757, R758, R759, R760, R761, R762, R763, R764, R765, R766, R767
]> >, CCAssignToStack<16, 16>
]>;
CCIfType<[i32, f32], CCAssignToReg<
[R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20
]> >, CCAssignToStack<16, 16>]>;

View file

@ -29,40 +29,6 @@ class ILFormat<ILOpCode op, dag outs, dag ins, string asmstr, list<dag> pattern>
bit hasZeroOpFlag = 0;
}
//===--------------------------------------------------------------------===//
// The base class for vector insert instructions. It is a single dest, quad
// source instruction where the last two source operands must be 32bit
// immediate values that are encoding the swizzle of the source register
// The src2 and src3 instructions must also be inversion of each other such
// that if src2 is 0x1000300(x0z0), src3 must be 0x20004(0y0w). The values
// are encoded as 32bit integer with each 8 char representing a swizzle value.
// The encoding is as follows for 32bit register types:
// 0x00 -> '_'
// 0x01 -> 'x'
// 0x02 -> 'y'
// 0x03 -> 'z'
// 0x04 -> 'w'
// 0x05 -> 'x'
// 0x06 -> 'y'
// 0x07 -> 'z'
// 0x08 -> 'w'
// 0x09 -> '0'
// The encoding is as follows for 64bit register types:
// 0x00 -> "__"
// 0x01 -> "xy"
// 0x02 -> "zw"
// 0x03 -> "xy"
// 0x04 -> "zw"
// 0x05 -> "00"
//===--------------------------------------------------------------------===//
class InsertVectorClass<ILOpCode op, RegisterClass DReg, RegisterClass SReg,
SDNode OpNode, string asmstr> :
ILFormat<op, (outs DReg:$dst),
(ins DReg:$src0, SReg:$src1, i32imm:$src2, i32imm:$src3),
!strconcat(asmstr, " $dst, $src0, $src1"),
[(set DReg:$dst, (OpNode DReg:$src0, SReg:$src1,
timm:$src2, timm:$src3))]>;
//===--------------------------------------------------------------------===//
// Class that has one input parameters and one output parameter.
// The basic pattern for this class is "Opcode Dst, Src0" and
@ -86,18 +52,6 @@ class OneInOneOut<ILOpCode op, dag outs, dag ins,
ILSrcMod src0_reg_rel_mod;
}
//===--------------------------------------------------------------------===//
// A simplified version of OneInOneOut class where the pattern is standard
// and does not need special cases. This requires that the pattern has
// a SDNode and takes a source and destination register that is of type
// RegisterClass. This is the standard unary op class.
//===--------------------------------------------------------------------===//
class UnaryOp<ILOpCode op, SDNode OpNode,
RegisterClass dRegs, RegisterClass sRegs>
: OneInOneOut<op, (outs dRegs:$dst), (ins sRegs:$src),
!strconcat(op.Text, " $dst, $src"),
[(set dRegs:$dst, (OpNode sRegs:$src))]>;
//===--------------------------------------------------------------------===//
// This class is similiar to the UnaryOp class, however, there is no
// result value to assign.
@ -130,39 +84,6 @@ class TwoInOneOut<ILOpCode op, dag outs, dag ins,
ILSrc src1_reg_rel;
ILSrcMod src1_reg_rel_mod;
}
//===--------------------------------------------------------------------===//
// A simplification of the TwoInOneOut pattern for Binary Operations.
// This class is a helper class that assumes the simple pattern of
// $dst = op $src0 $src1.
// Other type of matching patterns need to use the TwoInOneOut class.
//===--------------------------------------------------------------------===//
class BinaryOp<ILOpCode op, SDNode OpNode, RegisterClass dReg,
RegisterClass sReg0, RegisterClass sReg1>
: TwoInOneOut<op, (outs dReg:$dst), (ins sReg0:$src0, sReg1:$src1),
!strconcat(op.Text, " $dst, $src0, $src1"),
[(set dReg:$dst, (OpNode sReg0:$src0, sReg1:$src1))]>;
//===--------------------------------------------------------------------===//
// The base class for vector extract instructions. The vector extract
// instructions take as an input value a source register and a 32bit integer
// with the same encoding as specified in InsertVectorClass and produces
// a result with only the swizzled component in the destination register.
//===--------------------------------------------------------------------===//
class ExtractVectorClass<RegisterClass DReg, RegisterClass SReg, SDNode OpNode>
: TwoInOneOut<IL_OP_MOV, (outs DReg:$dst), (ins SReg:$src0, i32imm:$src1),
"mov $dst, $src0",
[(set DReg:$dst, (OpNode SReg:$src0, timm:$src1))]>;
//===--------------------------------------------------------------------===//
// The base class for vector concatenation. This class creates either a vec2
// or a vec4 of 32bit data types or a vec2 of 64bit data types. This is done
// by swizzling either the 'x' or 'xy' components of the source operands
// into the destination register.
//===--------------------------------------------------------------------===//
class VectorConcatClass<RegisterClass Dst, RegisterClass Src, SDNode OpNode>
: TwoInOneOut<IL_OP_I_ADD, (outs Dst:$dst), (ins Src:$src0, Src:$src1),
"iadd $dst, $src0, $src1",
[(set Dst:$dst, (OpNode Src:$src0, Src:$src1))]>;
//===--------------------------------------------------------------------===//
// Similiar to the UnaryOpNoRet class, but takes as arguments two input
@ -197,203 +118,6 @@ class ThreeInOneOut<ILOpCode op, dag outs, dag ins,
ILSrcMod src2_reg_rel_mod;
}
//===--------------------------------------------------------------------===//
// The g version of the Three Input pattern uses a standard pattern but
// but allows specification of the register to further generalize the class
// This class is mainly used in the generic multiclasses in AMDILMultiClass.td
//===--------------------------------------------------------------------===//
class TernaryOp<ILOpCode op, SDNode OpNode,
RegisterClass dReg,
RegisterClass sReg0,
RegisterClass sReg1,
RegisterClass sReg2>
: ThreeInOneOut<op, (outs dReg:$dst),
(ins sReg0:$src0, sReg1:$src1, sReg2:$src2),
!strconcat(op.Text, " $dst, $src0, $src1, $src2"),
[(set dReg:$dst,
(OpNode sReg0:$src0, sReg1:$src1, sReg2:$src2))]>;
//===--------------------------------------------------------------------===//
// Set of classes that have three input parameters and one output parameter.
// The basic pattern for this class is "Opcode Dst, Src0, Src1, Src2" and
// handles the mad and conditional mov instruction.
// It sets the binary token ILSrc, ILSrcMod, ILRelAddr and ILSrc and ILSrcMod
// if the addressing is register relative.
// This class is the parent class of TernaryOp
//===--------------------------------------------------------------------===//
class FourInOneOut<ILOpCode op, dag outs, dag ins,
string asmstr, list<dag> pattern>
: ThreeInOneOut<op, outs, ins, asmstr, pattern> {
ILSrc src3_reg;
ILSrcMod src3_mod;
ILRelAddr src3_rel;
ILSrc src3_reg_rel;
ILSrcMod src3_reg_rel_mod;
}
//===--------------------------------------------------------------------===//
// The macro class that is an extension of OneInOneOut but is tailored for
// macros only where all the register types are the same
//===--------------------------------------------------------------------===//
class UnaryMacro<RegisterClass Dst, RegisterClass Src0, SDNode OpNode>
: OneInOneOut<IL_OP_MACRO, (outs Dst:$dst),
(ins Src0:$src0),
"($dst),($src0)",
[(set Dst:$dst, (OpNode Src0:$src0))]>;
//===--------------------------------------------------------------------===//
// The macro class is an extension of TwoInOneOut but is tailored for
// macros only where all the register types are the same
//===--------------------------------------------------------------------===//
class BinaryMacro<RegisterClass Dst,
RegisterClass Src0,
RegisterClass Src1,
SDNode OpNode>
: TwoInOneOut<IL_OP_MACRO, (outs Dst:$dst),
(ins Src0: $src0, Src1:$src1),
"($dst),($src0, $src1)",
[(set Dst:$dst, (OpNode Src0:$src0, Src1:$src1))]>;
//===--------------------------------------------------------------------===//
// Classes for dealing with atomic instructions w/ 32bit pointers
//===--------------------------------------------------------------------===//
class Append<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst),
(ins MEMI32:$id),
!strconcat(op.Text, !strconcat(idType," $dst")),
[(set GPRI32:$dst, (intr ADDR:$id))]>;
// TODO: Need to get this working without dst...
class AppendNoRet<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst),
(ins MEMI32:$id),
!strconcat(op.Text, !strconcat(idType," $dst")),
[(set GPRI32:$dst, (intr ADDR:$id))]>;
class UniAtom<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst),
(ins MEMI32:$ptr, i32imm:$id),
!strconcat(op.Text, !strconcat(idType," $dst, $ptr")),
[(set GPRI32:$dst, (intr ADDR:$ptr, timm:$id))]>;
// TODO: Need to get this working without dst...
class UniAtomNoRet<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst), (ins MEMI32:$ptr, i32imm:$id),
!strconcat(op.Text, !strconcat(idType," $ptr")),
[(set GPRI32:$dst, (intr ADDR:$ptr, timm:$id))]>;
class BinAtom<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst),
(ins MEMI32:$ptr, GPRI32:$src, i32imm:$id),
!strconcat(op.Text, !strconcat(idType," $dst, $ptr, $src")),
[(set GPRI32:$dst, (intr ADDR:$ptr, GPRI32:$src, timm:$id))]>;
// TODO: Need to get this working without dst...
class BinAtomNoRet<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst), (ins MEMI32:$ptr, GPRI32:$src, i32imm:$id),
!strconcat(op.Text, !strconcat(idType," $ptr, $src")),
[(set GPRI32:$dst, (intr ADDR:$ptr, GPRI32:$src, timm:$id))]>;
class TriAtom<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst),
(ins MEMI32:$ptr, GPRI32:$src, GPRI32:$src1, i32imm:$id),
!strconcat(op.Text, !strconcat(idType," $dst, $ptr, $src, $src1")),
[(set GPRI32:$dst, (intr ADDR:$ptr, GPRI32:$src, GPRI32:$src1, timm:$id))]>;
class CmpXChg<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst),
(ins MEMI32:$ptr, GPRI32:$src, GPRI32:$src1, i32imm:$id),
!strconcat(op.Text, !strconcat(idType," $dst, $ptr, $src1, $src")),
[(set GPRI32:$dst, (intr ADDR:$ptr, GPRI32:$src, GPRI32:$src1, timm:$id))]>;
// TODO: Need to get this working without dst...
class TriAtomNoRet<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst),
(ins MEMI32:$ptr, GPRI32:$src, GPRI32:$src1, i32imm:$id),
!strconcat(op.Text, !strconcat(idType," $ptr, $src, $src1")),
[(set GPRI32:$dst, (intr ADDR:$ptr, GPRI32:$src, GPRI32:$src1, timm:$id))]>;
// TODO: Need to get this working without dst...
class CmpXChgNoRet<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst),
(ins MEMI32:$ptr, GPRI32:$src, GPRI32:$src1, i32imm:$id),
!strconcat(op.Text, !strconcat(idType," $ptr, $src1, $src")),
[(set GPRI32:$dst, (intr ADDR:$ptr, GPRI32:$src, GPRI32:$src1, timm:$id))]>;
//===--------------------------------------------------------------------===//
// Classes for dealing with atomic instructions w/ 64bit pointers
//===--------------------------------------------------------------------===//
class Append64<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst),
(ins MEMI64:$id),
!strconcat(op.Text, !strconcat(idType," $dst")),
[(set GPRI32:$dst, (intr ADDR64:$id))]>;
// TODO: Need to get this working without dst...
class AppendNoRet64<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst),
(ins MEMI64:$id),
!strconcat(op.Text, !strconcat(idType," $dst")),
[(set GPRI32:$dst, (intr ADDR64:$id))]>;
class UniAtom64<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst),
(ins MEMI64:$ptr, i32imm:$id),
!strconcat(op.Text, !strconcat(idType," $dst, $ptr")),
[(set GPRI32:$dst, (intr ADDR64:$ptr, timm:$id))]>;
// TODO: Need to get this working without dst...
class UniAtomNoRet64<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst), (ins MEMI64:$ptr, i32imm:$id),
!strconcat(op.Text, !strconcat(idType," $ptr")),
[(set GPRI32:$dst, (intr ADDR64:$ptr, timm:$id))]>;
class BinAtom64<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst),
(ins MEMI64:$ptr, GPRI32:$src, i32imm:$id),
!strconcat(op.Text, !strconcat(idType," $dst, $ptr, $src")),
[(set GPRI32:$dst, (intr ADDR64:$ptr, GPRI32:$src, timm:$id))]>;
// TODO: Need to get this working without dst...
class BinAtomNoRet64<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst), (ins MEMI64:$ptr, GPRI32:$src, i32imm:$id),
!strconcat(op.Text, !strconcat(idType," $ptr, $src")),
[(set GPRI32:$dst, (intr ADDR64:$ptr, GPRI32:$src, timm:$id))]>;
class TriAtom64<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst),
(ins MEMI64:$ptr, GPRI32:$src, GPRI32:$src1, i32imm:$id),
!strconcat(op.Text, !strconcat(idType," $dst, $ptr, $src, $src1")),
[(set GPRI32:$dst, (intr ADDR64:$ptr, GPRI32:$src, GPRI32:$src1, timm:$id))]>;
class CmpXChg64<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst),
(ins MEMI64:$ptr, GPRI32:$src, GPRI32:$src1, i32imm:$id),
!strconcat(op.Text, !strconcat(idType," $dst, $ptr, $src1, $src")),
[(set GPRI32:$dst, (intr ADDR64:$ptr, GPRI32:$src, GPRI32:$src1, timm:$id))]>;
// TODO: Need to get this working without dst...
class TriAtomNoRet64<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst),
(ins MEMI64:$ptr, GPRI32:$src, GPRI32:$src1, i32imm:$id),
!strconcat(op.Text, !strconcat(idType," $ptr, $src, $src1")),
[(set GPRI32:$dst, (intr ADDR64:$ptr, GPRI32:$src, GPRI32:$src1, timm:$id))]>;
// TODO: Need to get this working without dst...
class CmpXChgNoRet64<ILOpCode op, string idType, SDNode intr>
: ILFormat<op, (outs GPRI32:$dst),
(ins MEMI64:$ptr, GPRI32:$src, GPRI32:$src1, i32imm:$id),
!strconcat(op.Text, !strconcat(idType," $ptr, $src1, $src")),
[(set GPRI32:$dst, (intr ADDR64:$ptr, GPRI32:$src, GPRI32:$src1, timm:$id))]>;
//===--------------------------------------------------------------------===//
// Intrinsic classes
// Generic versions of the above classes but for Target specific intrinsics

View file

@ -65,8 +65,6 @@ private:
static bool isLocalLoad(const LoadSDNode *N);
static bool isRegionLoad(const LoadSDNode *N);
SDNode *xformAtomicInst(SDNode *N);
bool SelectADDR8BitOffset(SDValue Addr, SDValue& Base, SDValue& Offset);
bool SelectADDRReg(SDValue Addr, SDValue& Base, SDValue& Offset);
bool SelectADDRVTX_READ(SDValue Addr, SDValue &Base, SDValue &Offset);
@ -170,11 +168,6 @@ SDNode *AMDILDAGToDAGISel::Select(SDNode *N) {
}
break;
}
// For all atomic instructions, we need to add a constant
// operand that stores the resource ID in the instruction
if (Opc > AMDILISD::ADDADDR && Opc < AMDILISD::APPEND_ALLOC) {
N = xformAtomicInst(N);
}
return SelectCode(N);
}
@ -313,206 +306,6 @@ const char *AMDILDAGToDAGISel::getPassName() const {
return "AMDIL DAG->DAG Pattern Instruction Selection";
}
SDNode*
AMDILDAGToDAGISel::xformAtomicInst(SDNode *N)
{
uint32_t addVal = 1;
bool addOne = false;
// bool bitCastToInt = (N->getValueType(0) == MVT::f32);
unsigned opc = N->getOpcode();
switch (opc) {
default: return N;
case AMDILISD::ATOM_G_ADD:
case AMDILISD::ATOM_G_AND:
case AMDILISD::ATOM_G_MAX:
case AMDILISD::ATOM_G_UMAX:
case AMDILISD::ATOM_G_MIN:
case AMDILISD::ATOM_G_UMIN:
case AMDILISD::ATOM_G_OR:
case AMDILISD::ATOM_G_SUB:
case AMDILISD::ATOM_G_RSUB:
case AMDILISD::ATOM_G_XCHG:
case AMDILISD::ATOM_G_XOR:
case AMDILISD::ATOM_G_ADD_NORET:
case AMDILISD::ATOM_G_AND_NORET:
case AMDILISD::ATOM_G_MAX_NORET:
case AMDILISD::ATOM_G_UMAX_NORET:
case AMDILISD::ATOM_G_MIN_NORET:
case AMDILISD::ATOM_G_UMIN_NORET:
case AMDILISD::ATOM_G_OR_NORET:
case AMDILISD::ATOM_G_SUB_NORET:
case AMDILISD::ATOM_G_RSUB_NORET:
case AMDILISD::ATOM_G_XCHG_NORET:
case AMDILISD::ATOM_G_XOR_NORET:
case AMDILISD::ATOM_L_ADD:
case AMDILISD::ATOM_L_AND:
case AMDILISD::ATOM_L_MAX:
case AMDILISD::ATOM_L_UMAX:
case AMDILISD::ATOM_L_MIN:
case AMDILISD::ATOM_L_UMIN:
case AMDILISD::ATOM_L_OR:
case AMDILISD::ATOM_L_SUB:
case AMDILISD::ATOM_L_RSUB:
case AMDILISD::ATOM_L_XCHG:
case AMDILISD::ATOM_L_XOR:
case AMDILISD::ATOM_L_ADD_NORET:
case AMDILISD::ATOM_L_AND_NORET:
case AMDILISD::ATOM_L_MAX_NORET:
case AMDILISD::ATOM_L_UMAX_NORET:
case AMDILISD::ATOM_L_MIN_NORET:
case AMDILISD::ATOM_L_UMIN_NORET:
case AMDILISD::ATOM_L_OR_NORET:
case AMDILISD::ATOM_L_SUB_NORET:
case AMDILISD::ATOM_L_RSUB_NORET:
case AMDILISD::ATOM_L_XCHG_NORET:
case AMDILISD::ATOM_L_XOR_NORET:
case AMDILISD::ATOM_R_ADD:
case AMDILISD::ATOM_R_AND:
case AMDILISD::ATOM_R_MAX:
case AMDILISD::ATOM_R_UMAX:
case AMDILISD::ATOM_R_MIN:
case AMDILISD::ATOM_R_UMIN:
case AMDILISD::ATOM_R_OR:
case AMDILISD::ATOM_R_SUB:
case AMDILISD::ATOM_R_RSUB:
case AMDILISD::ATOM_R_XCHG:
case AMDILISD::ATOM_R_XOR:
case AMDILISD::ATOM_R_ADD_NORET:
case AMDILISD::ATOM_R_AND_NORET:
case AMDILISD::ATOM_R_MAX_NORET:
case AMDILISD::ATOM_R_UMAX_NORET:
case AMDILISD::ATOM_R_MIN_NORET:
case AMDILISD::ATOM_R_UMIN_NORET:
case AMDILISD::ATOM_R_OR_NORET:
case AMDILISD::ATOM_R_SUB_NORET:
case AMDILISD::ATOM_R_RSUB_NORET:
case AMDILISD::ATOM_R_XCHG_NORET:
case AMDILISD::ATOM_R_XOR_NORET:
case AMDILISD::ATOM_G_CMPXCHG:
case AMDILISD::ATOM_G_CMPXCHG_NORET:
case AMDILISD::ATOM_L_CMPXCHG:
case AMDILISD::ATOM_L_CMPXCHG_NORET:
case AMDILISD::ATOM_R_CMPXCHG:
case AMDILISD::ATOM_R_CMPXCHG_NORET:
break;
case AMDILISD::ATOM_G_DEC:
addOne = true;
if (Subtarget.calVersion() >= CAL_VERSION_SC_136) {
addVal = (uint32_t)-1;
} else {
opc = AMDILISD::ATOM_G_SUB;
}
break;
case AMDILISD::ATOM_G_INC:
addOne = true;
if (Subtarget.calVersion() >= CAL_VERSION_SC_136) {
addVal = (uint32_t)-1;
} else {
opc = AMDILISD::ATOM_G_ADD;
}
break;
case AMDILISD::ATOM_G_DEC_NORET:
addOne = true;
if (Subtarget.calVersion() >= CAL_VERSION_SC_136) {
addVal = (uint32_t)-1;
} else {
opc = AMDILISD::ATOM_G_SUB_NORET;
}
break;
case AMDILISD::ATOM_G_INC_NORET:
addOne = true;
if (Subtarget.calVersion() >= CAL_VERSION_SC_136) {
addVal = (uint32_t)-1;
} else {
opc = AMDILISD::ATOM_G_ADD_NORET;
}
break;
case AMDILISD::ATOM_L_DEC:
addOne = true;
if (Subtarget.calVersion() >= CAL_VERSION_SC_136) {
addVal = (uint32_t)-1;
} else {
opc = AMDILISD::ATOM_L_SUB;
}
break;
case AMDILISD::ATOM_L_INC:
addOne = true;
if (Subtarget.calVersion() >= CAL_VERSION_SC_136) {
addVal = (uint32_t)-1;
} else {
opc = AMDILISD::ATOM_L_ADD;
}
break;
case AMDILISD::ATOM_L_DEC_NORET:
addOne = true;
if (Subtarget.calVersion() >= CAL_VERSION_SC_136) {
addVal = (uint32_t)-1;
} else {
opc = AMDILISD::ATOM_L_SUB_NORET;
}
break;
case AMDILISD::ATOM_L_INC_NORET:
addOne = true;
if (Subtarget.calVersion() >= CAL_VERSION_SC_136) {
addVal = (uint32_t)-1;
} else {
opc = AMDILISD::ATOM_L_ADD_NORET;
}
break;
case AMDILISD::ATOM_R_DEC:
addOne = true;
if (Subtarget.calVersion() >= CAL_VERSION_SC_136) {
addVal = (uint32_t)-1;
} else {
opc = AMDILISD::ATOM_R_SUB;
}
break;
case AMDILISD::ATOM_R_INC:
addOne = true;
if (Subtarget.calVersion() >= CAL_VERSION_SC_136) {
addVal = (uint32_t)-1;
} else {
opc = AMDILISD::ATOM_R_ADD;
}
break;
case AMDILISD::ATOM_R_DEC_NORET:
addOne = true;
if (Subtarget.calVersion() >= CAL_VERSION_SC_136) {
addVal = (uint32_t)-1;
} else {
opc = AMDILISD::ATOM_R_SUB;
}
break;
case AMDILISD::ATOM_R_INC_NORET:
addOne = true;
if (Subtarget.calVersion() >= CAL_VERSION_SC_136) {
addVal = (uint32_t)-1;
} else {
opc = AMDILISD::ATOM_R_ADD_NORET;
}
break;
}
// The largest we can have is a cmpxchg w/ a return value and an output chain.
// The cmpxchg function has 3 inputs and a single output along with an
// output change and a target constant, giving a total of 6.
SDValue Ops[12];
unsigned x = 0;
unsigned y = N->getNumOperands();
for (x = 0; x < y; ++x) {
Ops[x] = N->getOperand(x);
}
if (addOne) {
Ops[x++] = SDValue(SelectCode(CurDAG->getConstant(addVal, MVT::i32).getNode()), 0);
}
Ops[x++] = CurDAG->getTargetConstant(0, MVT::i32);
SDVTList Tys = N->getVTList();
MemSDNode *MemNode = dyn_cast<MemSDNode>(N);
assert(MemNode && "Atomic should be of MemSDNode type!");
N = CurDAG->getMemIntrinsicNode(opc, N->getDebugLoc(), Tys, Ops, x,
MemNode->getMemoryVT(), MemNode->getMemOperand()).getNode();
return N;
}
#ifdef DEBUGTMP
#undef INT64_C
#endif

View file

@ -670,45 +670,13 @@ AMDILTargetLowering::getTargetNodeName(unsigned Opcode) const
{
switch (Opcode) {
default: return 0;
case AMDILISD::INTTOANY: return "AMDILISD::INTTOANY";
case AMDILISD::DP_TO_FP: return "AMDILISD::DP_TO_FP";
case AMDILISD::FP_TO_DP: return "AMDILISD::FP_TO_DP";
case AMDILISD::BITCONV: return "AMDILISD::BITCONV";
case AMDILISD::CMOV: return "AMDILISD::CMOV";
case AMDILISD::CMOVLOG: return "AMDILISD::CMOVLOG";
case AMDILISD::INEGATE: return "AMDILISD::INEGATE";
case AMDILISD::MAD: return "AMDILISD::MAD";
case AMDILISD::UMAD: return "AMDILISD::UMAD";
case AMDILISD::CALL: return "AMDILISD::CALL";
case AMDILISD::RET: return "AMDILISD::RET";
case AMDILISD::IFFB_HI: return "AMDILISD::IFFB_HI";
case AMDILISD::IFFB_LO: return "AMDILISD::IFFB_LO";
case AMDILISD::ADD: return "AMDILISD::ADD";
case AMDILISD::SELECT_CC: return "AMDILISD::SELECT_CC";
case AMDILISD::UMUL: return "AMDILISD::UMUL";
case AMDILISD::AND: return "AMDILISD::AND";
case AMDILISD::OR: return "AMDILISD::OR";
case AMDILISD::NOT: return "AMDILISD::NOT";
case AMDILISD::XOR: return "AMDILISD::XOR";
case AMDILISD::DIV_INF: return "AMDILISD::DIV_INF";
case AMDILISD::SMAX: return "AMDILISD::SMAX";
case AMDILISD::PHIMOVE: return "AMDILISD::PHIMOVE";
case AMDILISD::MOVE: return "AMDILISD::MOVE";
case AMDILISD::VBUILD: return "AMDILISD::VBUILD";
case AMDILISD::VEXTRACT: return "AMDILISD::VEXTRACT";
case AMDILISD::VINSERT: return "AMDILISD::VINSERT";
case AMDILISD::VCONCAT: return "AMDILISD::VCONCAT";
case AMDILISD::LCREATE: return "AMDILISD::LCREATE";
case AMDILISD::LCOMPHI: return "AMDILISD::LCOMPHI";
case AMDILISD::LCOMPLO: return "AMDILISD::LCOMPLO";
case AMDILISD::DCREATE: return "AMDILISD::DCREATE";
case AMDILISD::DCOMPHI: return "AMDILISD::DCOMPHI";
case AMDILISD::DCOMPLO: return "AMDILISD::DCOMPLO";
case AMDILISD::LCREATE2: return "AMDILISD::LCREATE2";
case AMDILISD::LCOMPHI2: return "AMDILISD::LCOMPHI2";
case AMDILISD::LCOMPLO2: return "AMDILISD::LCOMPLO2";
case AMDILISD::DCREATE2: return "AMDILISD::DCREATE2";
case AMDILISD::DCOMPHI2: return "AMDILISD::DCOMPHI2";
case AMDILISD::DCOMPLO2: return "AMDILISD::DCOMPLO2";
case AMDILISD::CMP: return "AMDILISD::CMP";
case AMDILISD::IL_CC_I_LT: return "AMDILISD::IL_CC_I_LT";
case AMDILISD::IL_CC_I_LE: return "AMDILISD::IL_CC_I_LE";
@ -718,107 +686,6 @@ AMDILTargetLowering::getTargetNodeName(unsigned Opcode) const
case AMDILISD::IL_CC_I_NE: return "AMDILISD::IL_CC_I_NE";
case AMDILISD::RET_FLAG: return "AMDILISD::RET_FLAG";
case AMDILISD::BRANCH_COND: return "AMDILISD::BRANCH_COND";
case AMDILISD::LOOP_NZERO: return "AMDILISD::LOOP_NZERO";
case AMDILISD::LOOP_ZERO: return "AMDILISD::LOOP_ZERO";
case AMDILISD::LOOP_CMP: return "AMDILISD::LOOP_CMP";
case AMDILISD::ADDADDR: return "AMDILISD::ADDADDR";
case AMDILISD::ATOM_G_ADD: return "AMDILISD::ATOM_G_ADD";
case AMDILISD::ATOM_G_AND: return "AMDILISD::ATOM_G_AND";
case AMDILISD::ATOM_G_CMPXCHG: return "AMDILISD::ATOM_G_CMPXCHG";
case AMDILISD::ATOM_G_DEC: return "AMDILISD::ATOM_G_DEC";
case AMDILISD::ATOM_G_INC: return "AMDILISD::ATOM_G_INC";
case AMDILISD::ATOM_G_MAX: return "AMDILISD::ATOM_G_MAX";
case AMDILISD::ATOM_G_UMAX: return "AMDILISD::ATOM_G_UMAX";
case AMDILISD::ATOM_G_MIN: return "AMDILISD::ATOM_G_MIN";
case AMDILISD::ATOM_G_UMIN: return "AMDILISD::ATOM_G_UMIN";
case AMDILISD::ATOM_G_OR: return "AMDILISD::ATOM_G_OR";
case AMDILISD::ATOM_G_SUB: return "AMDILISD::ATOM_G_SUB";
case AMDILISD::ATOM_G_RSUB: return "AMDILISD::ATOM_G_RSUB";
case AMDILISD::ATOM_G_XCHG: return "AMDILISD::ATOM_G_XCHG";
case AMDILISD::ATOM_G_XOR: return "AMDILISD::ATOM_G_XOR";
case AMDILISD::ATOM_G_ADD_NORET: return "AMDILISD::ATOM_G_ADD_NORET";
case AMDILISD::ATOM_G_AND_NORET: return "AMDILISD::ATOM_G_AND_NORET";
case AMDILISD::ATOM_G_CMPXCHG_NORET: return "AMDILISD::ATOM_G_CMPXCHG_NORET";
case AMDILISD::ATOM_G_DEC_NORET: return "AMDILISD::ATOM_G_DEC_NORET";
case AMDILISD::ATOM_G_INC_NORET: return "AMDILISD::ATOM_G_INC_NORET";
case AMDILISD::ATOM_G_MAX_NORET: return "AMDILISD::ATOM_G_MAX_NORET";
case AMDILISD::ATOM_G_UMAX_NORET: return "AMDILISD::ATOM_G_UMAX_NORET";
case AMDILISD::ATOM_G_MIN_NORET: return "AMDILISD::ATOM_G_MIN_NORET";
case AMDILISD::ATOM_G_UMIN_NORET: return "AMDILISD::ATOM_G_UMIN_NORET";
case AMDILISD::ATOM_G_OR_NORET: return "AMDILISD::ATOM_G_OR_NORET";
case AMDILISD::ATOM_G_SUB_NORET: return "AMDILISD::ATOM_G_SUB_NORET";
case AMDILISD::ATOM_G_RSUB_NORET: return "AMDILISD::ATOM_G_RSUB_NORET";
case AMDILISD::ATOM_G_XCHG_NORET: return "AMDILISD::ATOM_G_XCHG_NORET";
case AMDILISD::ATOM_G_XOR_NORET: return "AMDILISD::ATOM_G_XOR_NORET";
case AMDILISD::ATOM_L_ADD: return "AMDILISD::ATOM_L_ADD";
case AMDILISD::ATOM_L_AND: return "AMDILISD::ATOM_L_AND";
case AMDILISD::ATOM_L_CMPXCHG: return "AMDILISD::ATOM_L_CMPXCHG";
case AMDILISD::ATOM_L_DEC: return "AMDILISD::ATOM_L_DEC";
case AMDILISD::ATOM_L_INC: return "AMDILISD::ATOM_L_INC";
case AMDILISD::ATOM_L_MAX: return "AMDILISD::ATOM_L_MAX";
case AMDILISD::ATOM_L_UMAX: return "AMDILISD::ATOM_L_UMAX";
case AMDILISD::ATOM_L_MIN: return "AMDILISD::ATOM_L_MIN";
case AMDILISD::ATOM_L_UMIN: return "AMDILISD::ATOM_L_UMIN";
case AMDILISD::ATOM_L_OR: return "AMDILISD::ATOM_L_OR";
case AMDILISD::ATOM_L_SUB: return "AMDILISD::ATOM_L_SUB";
case AMDILISD::ATOM_L_RSUB: return "AMDILISD::ATOM_L_RSUB";
case AMDILISD::ATOM_L_XCHG: return "AMDILISD::ATOM_L_XCHG";
case AMDILISD::ATOM_L_XOR: return "AMDILISD::ATOM_L_XOR";
case AMDILISD::ATOM_L_ADD_NORET: return "AMDILISD::ATOM_L_ADD_NORET";
case AMDILISD::ATOM_L_AND_NORET: return "AMDILISD::ATOM_L_AND_NORET";
case AMDILISD::ATOM_L_CMPXCHG_NORET: return "AMDILISD::ATOM_L_CMPXCHG_NORET";
case AMDILISD::ATOM_L_DEC_NORET: return "AMDILISD::ATOM_L_DEC_NORET";
case AMDILISD::ATOM_L_INC_NORET: return "AMDILISD::ATOM_L_INC_NORET";
case AMDILISD::ATOM_L_MAX_NORET: return "AMDILISD::ATOM_L_MAX_NORET";
case AMDILISD::ATOM_L_UMAX_NORET: return "AMDILISD::ATOM_L_UMAX_NORET";
case AMDILISD::ATOM_L_MIN_NORET: return "AMDILISD::ATOM_L_MIN_NORET";
case AMDILISD::ATOM_L_UMIN_NORET: return "AMDILISD::ATOM_L_UMIN_NORET";
case AMDILISD::ATOM_L_OR_NORET: return "AMDILISD::ATOM_L_OR_NORET";
case AMDILISD::ATOM_L_SUB_NORET: return "AMDILISD::ATOM_L_SUB_NORET";
case AMDILISD::ATOM_L_RSUB_NORET: return "AMDILISD::ATOM_L_RSUB_NORET";
case AMDILISD::ATOM_L_XCHG_NORET: return "AMDILISD::ATOM_L_XCHG_NORET";
case AMDILISD::ATOM_R_ADD: return "AMDILISD::ATOM_R_ADD";
case AMDILISD::ATOM_R_AND: return "AMDILISD::ATOM_R_AND";
case AMDILISD::ATOM_R_CMPXCHG: return "AMDILISD::ATOM_R_CMPXCHG";
case AMDILISD::ATOM_R_DEC: return "AMDILISD::ATOM_R_DEC";
case AMDILISD::ATOM_R_INC: return "AMDILISD::ATOM_R_INC";
case AMDILISD::ATOM_R_MAX: return "AMDILISD::ATOM_R_MAX";
case AMDILISD::ATOM_R_UMAX: return "AMDILISD::ATOM_R_UMAX";
case AMDILISD::ATOM_R_MIN: return "AMDILISD::ATOM_R_MIN";
case AMDILISD::ATOM_R_UMIN: return "AMDILISD::ATOM_R_UMIN";
case AMDILISD::ATOM_R_OR: return "AMDILISD::ATOM_R_OR";
case AMDILISD::ATOM_R_MSKOR: return "AMDILISD::ATOM_R_MSKOR";
case AMDILISD::ATOM_R_SUB: return "AMDILISD::ATOM_R_SUB";
case AMDILISD::ATOM_R_RSUB: return "AMDILISD::ATOM_R_RSUB";
case AMDILISD::ATOM_R_XCHG: return "AMDILISD::ATOM_R_XCHG";
case AMDILISD::ATOM_R_XOR: return "AMDILISD::ATOM_R_XOR";
case AMDILISD::ATOM_R_ADD_NORET: return "AMDILISD::ATOM_R_ADD_NORET";
case AMDILISD::ATOM_R_AND_NORET: return "AMDILISD::ATOM_R_AND_NORET";
case AMDILISD::ATOM_R_CMPXCHG_NORET: return "AMDILISD::ATOM_R_CMPXCHG_NORET";
case AMDILISD::ATOM_R_DEC_NORET: return "AMDILISD::ATOM_R_DEC_NORET";
case AMDILISD::ATOM_R_INC_NORET: return "AMDILISD::ATOM_R_INC_NORET";
case AMDILISD::ATOM_R_MAX_NORET: return "AMDILISD::ATOM_R_MAX_NORET";
case AMDILISD::ATOM_R_UMAX_NORET: return "AMDILISD::ATOM_R_UMAX_NORET";
case AMDILISD::ATOM_R_MIN_NORET: return "AMDILISD::ATOM_R_MIN_NORET";
case AMDILISD::ATOM_R_UMIN_NORET: return "AMDILISD::ATOM_R_UMIN_NORET";
case AMDILISD::ATOM_R_OR_NORET: return "AMDILISD::ATOM_R_OR_NORET";
case AMDILISD::ATOM_R_MSKOR_NORET: return "AMDILISD::ATOM_R_MSKOR_NORET";
case AMDILISD::ATOM_R_SUB_NORET: return "AMDILISD::ATOM_R_SUB_NORET";
case AMDILISD::ATOM_R_RSUB_NORET: return "AMDILISD::ATOM_R_RSUB_NORET";
case AMDILISD::ATOM_R_XCHG_NORET: return "AMDILISD::ATOM_R_XCHG_NORET";
case AMDILISD::ATOM_R_XOR_NORET: return "AMDILISD::ATOM_R_XOR_NORET";
case AMDILISD::APPEND_ALLOC: return "AMDILISD::APPEND_ALLOC";
case AMDILISD::APPEND_ALLOC_NORET: return "AMDILISD::APPEND_ALLOC_NORET";
case AMDILISD::APPEND_CONSUME: return "AMDILISD::APPEND_CONSUME";
case AMDILISD::APPEND_CONSUME_NORET: return "AMDILISD::APPEND_CONSUME_NORET";
case AMDILISD::IMAGE2D_READ: return "AMDILISD::IMAGE2D_READ";
case AMDILISD::IMAGE2D_WRITE: return "AMDILISD::IMAGE2D_WRITE";
case AMDILISD::IMAGE2D_INFO0: return "AMDILISD::IMAGE2D_INFO0";
case AMDILISD::IMAGE2D_INFO1: return "AMDILISD::IMAGE2D_INFO1";
case AMDILISD::IMAGE3D_READ: return "AMDILISD::IMAGE3D_READ";
case AMDILISD::IMAGE3D_WRITE: return "AMDILISD::IMAGE3D_WRITE";
case AMDILISD::IMAGE3D_INFO0: return "AMDILISD::IMAGE3D_INFO0";
case AMDILISD::IMAGE3D_INFO1: return "AMDILISD::IMAGE3D_INFO1";
};
}
@ -826,380 +693,7 @@ bool
AMDILTargetLowering::getTgtMemIntrinsic(IntrinsicInfo &Info,
const CallInst &I, unsigned Intrinsic) const
{
if (Intrinsic <= AMDGPUIntrinsic::last_non_AMDIL_intrinsic
|| Intrinsic > AMDGPUIntrinsic::num_AMDIL_intrinsics) {
return false;
}
bool bitCastToInt = false;
unsigned IntNo;
bool isRet = true;
const AMDILSubtarget *STM = &this->getTargetMachine()
.getSubtarget<AMDILSubtarget>();
switch (Intrinsic) {
default: return false; // Don't custom lower most intrinsics.
case AMDGPUIntrinsic::AMDIL_atomic_add_gi32:
case AMDGPUIntrinsic::AMDIL_atomic_add_gu32:
IntNo = AMDILISD::ATOM_G_ADD; break;
case AMDGPUIntrinsic::AMDIL_atomic_add_gi32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_add_gu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_G_ADD_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_add_lu32:
case AMDGPUIntrinsic::AMDIL_atomic_add_li32:
IntNo = AMDILISD::ATOM_L_ADD; break;
case AMDGPUIntrinsic::AMDIL_atomic_add_li32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_add_lu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_L_ADD_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_add_ru32:
case AMDGPUIntrinsic::AMDIL_atomic_add_ri32:
IntNo = AMDILISD::ATOM_R_ADD; break;
case AMDGPUIntrinsic::AMDIL_atomic_add_ri32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_add_ru32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_R_ADD_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_and_gi32:
case AMDGPUIntrinsic::AMDIL_atomic_and_gu32:
IntNo = AMDILISD::ATOM_G_AND; break;
case AMDGPUIntrinsic::AMDIL_atomic_and_gi32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_and_gu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_G_AND_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_and_li32:
case AMDGPUIntrinsic::AMDIL_atomic_and_lu32:
IntNo = AMDILISD::ATOM_L_AND; break;
case AMDGPUIntrinsic::AMDIL_atomic_and_li32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_and_lu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_L_AND_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_and_ri32:
case AMDGPUIntrinsic::AMDIL_atomic_and_ru32:
IntNo = AMDILISD::ATOM_R_AND; break;
case AMDGPUIntrinsic::AMDIL_atomic_and_ri32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_and_ru32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_R_AND_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_cmpxchg_gi32:
case AMDGPUIntrinsic::AMDIL_atomic_cmpxchg_gu32:
IntNo = AMDILISD::ATOM_G_CMPXCHG; break;
case AMDGPUIntrinsic::AMDIL_atomic_cmpxchg_gi32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_cmpxchg_gu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_G_CMPXCHG_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_cmpxchg_li32:
case AMDGPUIntrinsic::AMDIL_atomic_cmpxchg_lu32:
IntNo = AMDILISD::ATOM_L_CMPXCHG; break;
case AMDGPUIntrinsic::AMDIL_atomic_cmpxchg_li32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_cmpxchg_lu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_L_CMPXCHG_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_cmpxchg_ri32:
case AMDGPUIntrinsic::AMDIL_atomic_cmpxchg_ru32:
IntNo = AMDILISD::ATOM_R_CMPXCHG; break;
case AMDGPUIntrinsic::AMDIL_atomic_cmpxchg_ri32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_cmpxchg_ru32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_R_CMPXCHG_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_dec_gi32:
case AMDGPUIntrinsic::AMDIL_atomic_dec_gu32:
if (STM->calVersion() >= CAL_VERSION_SC_136) {
IntNo = AMDILISD::ATOM_G_DEC;
} else {
IntNo = AMDILISD::ATOM_G_SUB;
}
break;
case AMDGPUIntrinsic::AMDIL_atomic_dec_gi32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_dec_gu32_noret:
isRet = false;
if (STM->calVersion() >= CAL_VERSION_SC_136) {
IntNo = AMDILISD::ATOM_G_DEC_NORET;
} else {
IntNo = AMDILISD::ATOM_G_SUB_NORET;
}
break;
case AMDGPUIntrinsic::AMDIL_atomic_dec_li32:
case AMDGPUIntrinsic::AMDIL_atomic_dec_lu32:
if (STM->calVersion() >= CAL_VERSION_SC_136) {
IntNo = AMDILISD::ATOM_L_DEC;
} else {
IntNo = AMDILISD::ATOM_L_SUB;
}
break;
case AMDGPUIntrinsic::AMDIL_atomic_dec_li32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_dec_lu32_noret:
isRet = false;
if (STM->calVersion() >= CAL_VERSION_SC_136) {
IntNo = AMDILISD::ATOM_L_DEC_NORET;
} else {
IntNo = AMDILISD::ATOM_L_SUB_NORET;
}
break;
case AMDGPUIntrinsic::AMDIL_atomic_dec_ri32:
case AMDGPUIntrinsic::AMDIL_atomic_dec_ru32:
if (STM->calVersion() >= CAL_VERSION_SC_136) {
IntNo = AMDILISD::ATOM_R_DEC;
} else {
IntNo = AMDILISD::ATOM_R_SUB;
}
break;
case AMDGPUIntrinsic::AMDIL_atomic_dec_ri32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_dec_ru32_noret:
isRet = false;
if (STM->calVersion() >= CAL_VERSION_SC_136) {
IntNo = AMDILISD::ATOM_R_DEC_NORET;
} else {
IntNo = AMDILISD::ATOM_R_SUB_NORET;
}
break;
case AMDGPUIntrinsic::AMDIL_atomic_inc_gi32:
case AMDGPUIntrinsic::AMDIL_atomic_inc_gu32:
if (STM->calVersion() >= CAL_VERSION_SC_136) {
IntNo = AMDILISD::ATOM_G_INC;
} else {
IntNo = AMDILISD::ATOM_G_ADD;
}
break;
case AMDGPUIntrinsic::AMDIL_atomic_inc_gi32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_inc_gu32_noret:
isRet = false;
if (STM->calVersion() >= CAL_VERSION_SC_136) {
IntNo = AMDILISD::ATOM_G_INC_NORET;
} else {
IntNo = AMDILISD::ATOM_G_ADD_NORET;
}
break;
case AMDGPUIntrinsic::AMDIL_atomic_inc_li32:
case AMDGPUIntrinsic::AMDIL_atomic_inc_lu32:
if (STM->calVersion() >= CAL_VERSION_SC_136) {
IntNo = AMDILISD::ATOM_L_INC;
} else {
IntNo = AMDILISD::ATOM_L_ADD;
}
break;
case AMDGPUIntrinsic::AMDIL_atomic_inc_li32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_inc_lu32_noret:
isRet = false;
if (STM->calVersion() >= CAL_VERSION_SC_136) {
IntNo = AMDILISD::ATOM_L_INC_NORET;
} else {
IntNo = AMDILISD::ATOM_L_ADD_NORET;
}
break;
case AMDGPUIntrinsic::AMDIL_atomic_inc_ri32:
case AMDGPUIntrinsic::AMDIL_atomic_inc_ru32:
if (STM->calVersion() >= CAL_VERSION_SC_136) {
IntNo = AMDILISD::ATOM_R_INC;
} else {
IntNo = AMDILISD::ATOM_R_ADD;
}
break;
case AMDGPUIntrinsic::AMDIL_atomic_inc_ri32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_inc_ru32_noret:
isRet = false;
if (STM->calVersion() >= CAL_VERSION_SC_136) {
IntNo = AMDILISD::ATOM_R_INC_NORET;
} else {
IntNo = AMDILISD::ATOM_R_ADD_NORET;
}
break;
case AMDGPUIntrinsic::AMDIL_atomic_max_gi32:
IntNo = AMDILISD::ATOM_G_MAX; break;
case AMDGPUIntrinsic::AMDIL_atomic_max_gu32:
IntNo = AMDILISD::ATOM_G_UMAX; break;
case AMDGPUIntrinsic::AMDIL_atomic_max_gi32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_G_MAX_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_max_gu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_G_UMAX_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_max_li32:
IntNo = AMDILISD::ATOM_L_MAX; break;
case AMDGPUIntrinsic::AMDIL_atomic_max_lu32:
IntNo = AMDILISD::ATOM_L_UMAX; break;
case AMDGPUIntrinsic::AMDIL_atomic_max_li32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_L_MAX_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_max_lu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_L_UMAX_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_max_ri32:
IntNo = AMDILISD::ATOM_R_MAX; break;
case AMDGPUIntrinsic::AMDIL_atomic_max_ru32:
IntNo = AMDILISD::ATOM_R_UMAX; break;
case AMDGPUIntrinsic::AMDIL_atomic_max_ri32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_R_MAX_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_max_ru32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_R_UMAX_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_min_gi32:
IntNo = AMDILISD::ATOM_G_MIN; break;
case AMDGPUIntrinsic::AMDIL_atomic_min_gu32:
IntNo = AMDILISD::ATOM_G_UMIN; break;
case AMDGPUIntrinsic::AMDIL_atomic_min_gi32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_G_MIN_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_min_gu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_G_UMIN_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_min_li32:
IntNo = AMDILISD::ATOM_L_MIN; break;
case AMDGPUIntrinsic::AMDIL_atomic_min_lu32:
IntNo = AMDILISD::ATOM_L_UMIN; break;
case AMDGPUIntrinsic::AMDIL_atomic_min_li32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_L_MIN_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_min_lu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_L_UMIN_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_min_ri32:
IntNo = AMDILISD::ATOM_R_MIN; break;
case AMDGPUIntrinsic::AMDIL_atomic_min_ru32:
IntNo = AMDILISD::ATOM_R_UMIN; break;
case AMDGPUIntrinsic::AMDIL_atomic_min_ri32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_R_MIN_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_min_ru32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_R_UMIN_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_or_gi32:
case AMDGPUIntrinsic::AMDIL_atomic_or_gu32:
IntNo = AMDILISD::ATOM_G_OR; break;
case AMDGPUIntrinsic::AMDIL_atomic_or_gi32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_or_gu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_G_OR_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_or_li32:
case AMDGPUIntrinsic::AMDIL_atomic_or_lu32:
IntNo = AMDILISD::ATOM_L_OR; break;
case AMDGPUIntrinsic::AMDIL_atomic_or_li32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_or_lu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_L_OR_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_or_ri32:
case AMDGPUIntrinsic::AMDIL_atomic_or_ru32:
IntNo = AMDILISD::ATOM_R_OR; break;
case AMDGPUIntrinsic::AMDIL_atomic_or_ri32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_or_ru32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_R_OR_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_sub_gi32:
case AMDGPUIntrinsic::AMDIL_atomic_sub_gu32:
IntNo = AMDILISD::ATOM_G_SUB; break;
case AMDGPUIntrinsic::AMDIL_atomic_sub_gi32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_sub_gu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_G_SUB_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_sub_li32:
case AMDGPUIntrinsic::AMDIL_atomic_sub_lu32:
IntNo = AMDILISD::ATOM_L_SUB; break;
case AMDGPUIntrinsic::AMDIL_atomic_sub_li32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_sub_lu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_L_SUB_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_sub_ri32:
case AMDGPUIntrinsic::AMDIL_atomic_sub_ru32:
IntNo = AMDILISD::ATOM_R_SUB; break;
case AMDGPUIntrinsic::AMDIL_atomic_sub_ri32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_sub_ru32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_R_SUB_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_rsub_gi32:
case AMDGPUIntrinsic::AMDIL_atomic_rsub_gu32:
IntNo = AMDILISD::ATOM_G_RSUB; break;
case AMDGPUIntrinsic::AMDIL_atomic_rsub_gi32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_rsub_gu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_G_RSUB_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_rsub_li32:
case AMDGPUIntrinsic::AMDIL_atomic_rsub_lu32:
IntNo = AMDILISD::ATOM_L_RSUB; break;
case AMDGPUIntrinsic::AMDIL_atomic_rsub_li32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_rsub_lu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_L_RSUB_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_rsub_ri32:
case AMDGPUIntrinsic::AMDIL_atomic_rsub_ru32:
IntNo = AMDILISD::ATOM_R_RSUB; break;
case AMDGPUIntrinsic::AMDIL_atomic_rsub_ri32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_rsub_ru32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_R_RSUB_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_xchg_gf32:
bitCastToInt = true;
case AMDGPUIntrinsic::AMDIL_atomic_xchg_gi32:
case AMDGPUIntrinsic::AMDIL_atomic_xchg_gu32:
IntNo = AMDILISD::ATOM_G_XCHG; break;
case AMDGPUIntrinsic::AMDIL_atomic_xchg_gf32_noret:
bitCastToInt = true;
case AMDGPUIntrinsic::AMDIL_atomic_xchg_gi32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_xchg_gu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_G_XCHG_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_xchg_lf32:
bitCastToInt = true;
case AMDGPUIntrinsic::AMDIL_atomic_xchg_li32:
case AMDGPUIntrinsic::AMDIL_atomic_xchg_lu32:
IntNo = AMDILISD::ATOM_L_XCHG; break;
case AMDGPUIntrinsic::AMDIL_atomic_xchg_lf32_noret:
bitCastToInt = true;
case AMDGPUIntrinsic::AMDIL_atomic_xchg_li32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_xchg_lu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_L_XCHG_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_xchg_rf32:
bitCastToInt = true;
case AMDGPUIntrinsic::AMDIL_atomic_xchg_ri32:
case AMDGPUIntrinsic::AMDIL_atomic_xchg_ru32:
IntNo = AMDILISD::ATOM_R_XCHG; break;
case AMDGPUIntrinsic::AMDIL_atomic_xchg_rf32_noret:
bitCastToInt = true;
case AMDGPUIntrinsic::AMDIL_atomic_xchg_ri32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_xchg_ru32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_R_XCHG_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_xor_gi32:
case AMDGPUIntrinsic::AMDIL_atomic_xor_gu32:
IntNo = AMDILISD::ATOM_G_XOR; break;
case AMDGPUIntrinsic::AMDIL_atomic_xor_gi32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_xor_gu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_G_XOR_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_xor_li32:
case AMDGPUIntrinsic::AMDIL_atomic_xor_lu32:
IntNo = AMDILISD::ATOM_L_XOR; break;
case AMDGPUIntrinsic::AMDIL_atomic_xor_li32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_xor_lu32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_L_XOR_NORET; break;
case AMDGPUIntrinsic::AMDIL_atomic_xor_ri32:
case AMDGPUIntrinsic::AMDIL_atomic_xor_ru32:
IntNo = AMDILISD::ATOM_R_XOR; break;
case AMDGPUIntrinsic::AMDIL_atomic_xor_ri32_noret:
case AMDGPUIntrinsic::AMDIL_atomic_xor_ru32_noret:
isRet = false;
IntNo = AMDILISD::ATOM_R_XOR_NORET; break;
case AMDGPUIntrinsic::AMDIL_append_alloc_i32:
IntNo = AMDILISD::APPEND_ALLOC; break;
case AMDGPUIntrinsic::AMDIL_append_alloc_i32_noret:
isRet = false;
IntNo = AMDILISD::APPEND_ALLOC_NORET; break;
case AMDGPUIntrinsic::AMDIL_append_consume_i32:
IntNo = AMDILISD::APPEND_CONSUME; break;
case AMDGPUIntrinsic::AMDIL_append_consume_i32_noret:
isRet = false;
IntNo = AMDILISD::APPEND_CONSUME_NORET; break;
};
Info.opc = IntNo;
Info.memVT = (bitCastToInt) ? MVT::f32 : MVT::i32;
Info.ptrVal = I.getOperand(0);
Info.offset = 0;
Info.align = 4;
Info.vol = true;
Info.readMem = isRet;
Info.writeMem = true;
return true;
return false;
}
// The backend supports 32 and 64 bit floating point immediates
bool

View file

@ -27,60 +27,13 @@ namespace llvm
enum
{
FIRST_NUMBER = ISD::BUILTIN_OP_END,
INTTOANY, // Dummy instruction that takes an int and goes to
// any type converts the SDNode to an int
DP_TO_FP, // Conversion from 64bit FP to 32bit FP
FP_TO_DP, // Conversion from 32bit FP to 64bit FP
BITCONV, // instruction that converts from any type to any type
CMOV, // 32bit FP Conditional move instruction
CMOVLOG, // 32bit FP Conditional move logical instruction
SELECT, // 32bit FP Conditional move logical instruction
SETCC, // 32bit FP Conditional move logical instruction
ISGN, // 32bit Int Sign instruction
INEGATE, // 32bit Int Negation instruction
MAD, // 32bit Fused Multiply Add instruction
ADD, // 32/64 bit pseudo instruction
AND, // 128 bit and instruction
OR, // 128 bit or instruction
NOT, // 128 bit not instruction
XOR, // 128 bit xor instruction
MOVE, // generic mov instruction
PHIMOVE, // generic phi-node mov instruction
VBUILD, // scalar to vector mov instruction
VEXTRACT, // extract vector components
VINSERT, // insert vector components
VCONCAT, // concat a single vector to another vector
UMAD, // 32bit UInt Fused Multiply Add instruction
CALL, // Function call based on a single integer
RET, // Return from a function call
SELECT_CC, // Select the correct conditional instruction
BRCC, // Select the correct branch instruction
CMPCC, // Compare to GPR operands
CMPICC, // Compare two GPR operands, set icc.
CMPFCC, // Compare two FP operands, set fcc.
BRICC, // Branch to dest on icc condition
BRFCC, // Branch to dest on fcc condition
SELECT_ICC, // Select between two values using the current ICC
//flags.
SELECT_FCC, // Select between two values using the current FCC
//flags.
LCREATE, // Create a 64bit integer from two 32 bit integers
LCOMPHI, // Get the hi 32 bits from a 64 bit integer
LCOMPLO, // Get the lo 32 bits from a 64 bit integer
DCREATE, // Create a 64bit float from two 32 bit integers
DCOMPHI, // Get the hi 32 bits from a 64 bit float
DCOMPLO, // Get the lo 32 bits from a 64 bit float
LCREATE2, // Create a 64bit integer from two 32 bit integers
LCOMPHI2, // Get the hi 32 bits from a 64 bit integer
LCOMPLO2, // Get the lo 32 bits from a 64 bit integer
DCREATE2, // Create a 64bit float from two 32 bit integers
DCOMPHI2, // Get the hi 32 bits from a 64 bit float
DCOMPLO2, // Get the lo 32 bits from a 64 bit float
UMUL, // 32bit unsigned multiplication
IFFB_HI, // 32bit find first hi bit instruction
IFFB_LO, // 32bit find first low bit instruction
DIV_INF, // Divide with infinity returned on zero divisor
SMAX, // Signed integer max
CMP,
IL_CC_I_GT,
IL_CC_I_LT,
@ -90,119 +43,6 @@ namespace llvm
IL_CC_I_NE,
RET_FLAG,
BRANCH_COND,
LOOP_NZERO,
LOOP_ZERO,
LOOP_CMP,
ADDADDR,
LAST_NON_MEMORY_OPCODE,
// ATOMIC Operations
// Global Memory
ATOM_G_ADD = ISD::FIRST_TARGET_MEMORY_OPCODE,
ATOM_G_AND,
ATOM_G_CMPXCHG,
ATOM_G_DEC,
ATOM_G_INC,
ATOM_G_MAX,
ATOM_G_UMAX,
ATOM_G_MIN,
ATOM_G_UMIN,
ATOM_G_OR,
ATOM_G_SUB,
ATOM_G_RSUB,
ATOM_G_XCHG,
ATOM_G_XOR,
ATOM_G_ADD_NORET,
ATOM_G_AND_NORET,
ATOM_G_CMPXCHG_NORET,
ATOM_G_DEC_NORET,
ATOM_G_INC_NORET,
ATOM_G_MAX_NORET,
ATOM_G_UMAX_NORET,
ATOM_G_MIN_NORET,
ATOM_G_UMIN_NORET,
ATOM_G_OR_NORET,
ATOM_G_SUB_NORET,
ATOM_G_RSUB_NORET,
ATOM_G_XCHG_NORET,
ATOM_G_XOR_NORET,
// Local Memory
ATOM_L_ADD,
ATOM_L_AND,
ATOM_L_CMPXCHG,
ATOM_L_DEC,
ATOM_L_INC,
ATOM_L_MAX,
ATOM_L_UMAX,
ATOM_L_MIN,
ATOM_L_UMIN,
ATOM_L_OR,
ATOM_L_MSKOR,
ATOM_L_SUB,
ATOM_L_RSUB,
ATOM_L_XCHG,
ATOM_L_XOR,
ATOM_L_ADD_NORET,
ATOM_L_AND_NORET,
ATOM_L_CMPXCHG_NORET,
ATOM_L_DEC_NORET,
ATOM_L_INC_NORET,
ATOM_L_MAX_NORET,
ATOM_L_UMAX_NORET,
ATOM_L_MIN_NORET,
ATOM_L_UMIN_NORET,
ATOM_L_OR_NORET,
ATOM_L_MSKOR_NORET,
ATOM_L_SUB_NORET,
ATOM_L_RSUB_NORET,
ATOM_L_XCHG_NORET,
ATOM_L_XOR_NORET,
// Region Memory
ATOM_R_ADD,
ATOM_R_AND,
ATOM_R_CMPXCHG,
ATOM_R_DEC,
ATOM_R_INC,
ATOM_R_MAX,
ATOM_R_UMAX,
ATOM_R_MIN,
ATOM_R_UMIN,
ATOM_R_OR,
ATOM_R_MSKOR,
ATOM_R_SUB,
ATOM_R_RSUB,
ATOM_R_XCHG,
ATOM_R_XOR,
ATOM_R_ADD_NORET,
ATOM_R_AND_NORET,
ATOM_R_CMPXCHG_NORET,
ATOM_R_DEC_NORET,
ATOM_R_INC_NORET,
ATOM_R_MAX_NORET,
ATOM_R_UMAX_NORET,
ATOM_R_MIN_NORET,
ATOM_R_UMIN_NORET,
ATOM_R_OR_NORET,
ATOM_R_MSKOR_NORET,
ATOM_R_SUB_NORET,
ATOM_R_RSUB_NORET,
ATOM_R_XCHG_NORET,
ATOM_R_XOR_NORET,
// Append buffer
APPEND_ALLOC,
APPEND_ALLOC_NORET,
APPEND_CONSUME,
APPEND_CONSUME_NORET,
// 2D Images
IMAGE2D_READ,
IMAGE2D_WRITE,
IMAGE2D_INFO0,
IMAGE2D_INFO1,
// 3D Images
IMAGE3D_READ,
IMAGE3D_WRITE,
IMAGE3D_INFO0,
IMAGE3D_INFO1,
LAST_ISD_NUMBER
};
} // AMDILISD

View file

@ -27,7 +27,7 @@
using namespace llvm;
AMDILInstrInfo::AMDILInstrInfo(TargetMachine &tm)
: AMDILGenInstrInfo(AMDIL::ADJCALLSTACKDOWN, AMDIL::ADJCALLSTACKUP),
: AMDILGenInstrInfo(),
RI(tm, *this),
TM(tm) {
}
@ -154,12 +154,8 @@ unsigned int AMDILInstrInfo::getBranchInstr(const MachineOperand &op) const {
switch (MI->getDesc().OpInfo->RegClass) {
default: // FIXME: fallthrough??
case AMDIL::GPRI8RegClassID: return AMDIL::BRANCH_COND_i8;
case AMDIL::GPRI16RegClassID: return AMDIL::BRANCH_COND_i16;
case AMDIL::GPRI32RegClassID: return AMDIL::BRANCH_COND_i32;
case AMDIL::GPRI64RegClassID: return AMDIL::BRANCH_COND_i64;
case AMDIL::GPRF32RegClassID: return AMDIL::BRANCH_COND_f32;
case AMDIL::GPRF64RegClassID: return AMDIL::BRANCH_COND_f64;
};
}
@ -257,57 +253,12 @@ AMDILInstrInfo::storeRegToStackSlot(MachineBasicBlock &MBB,
DebugLoc DL;
switch (RC->getID()) {
default:
Opc = AMDIL::PRIVATESTORE_v4i32;
break;
case AMDIL::GPRF32RegClassID:
Opc = AMDIL::PRIVATESTORE_f32;
break;
case AMDIL::GPRF64RegClassID:
Opc = AMDIL::PRIVATESTORE_f64;
break;
case AMDIL::GPRI16RegClassID:
Opc = AMDIL::PRIVATESTORE_i16;
break;
case AMDIL::GPRI32RegClassID:
Opc = AMDIL::PRIVATESTORE_i32;
break;
case AMDIL::GPRI8RegClassID:
Opc = AMDIL::PRIVATESTORE_i8;
break;
case AMDIL::GPRI64RegClassID:
Opc = AMDIL::PRIVATESTORE_i64;
break;
case AMDIL::GPRV2F32RegClassID:
Opc = AMDIL::PRIVATESTORE_v2f32;
break;
case AMDIL::GPRV2F64RegClassID:
Opc = AMDIL::PRIVATESTORE_v2f64;
break;
case AMDIL::GPRV2I16RegClassID:
Opc = AMDIL::PRIVATESTORE_v2i16;
break;
case AMDIL::GPRV2I32RegClassID:
Opc = AMDIL::PRIVATESTORE_v2i32;
break;
case AMDIL::GPRV2I8RegClassID:
Opc = AMDIL::PRIVATESTORE_v2i8;
break;
case AMDIL::GPRV2I64RegClassID:
Opc = AMDIL::PRIVATESTORE_v2i64;
break;
case AMDIL::GPRV4F32RegClassID:
Opc = AMDIL::PRIVATESTORE_v4f32;
break;
case AMDIL::GPRV4I16RegClassID:
Opc = AMDIL::PRIVATESTORE_v4i16;
break;
case AMDIL::GPRV4I32RegClassID:
Opc = AMDIL::PRIVATESTORE_v4i32;
break;
case AMDIL::GPRV4I8RegClassID:
Opc = AMDIL::PRIVATESTORE_v4i8;
break;
}
if (MI != MBB.end()) DL = MI->getDebugLoc();
MachineMemOperand *MMO =
@ -337,57 +288,12 @@ AMDILInstrInfo::loadRegFromStackSlot(MachineBasicBlock &MBB,
MachineFrameInfo &MFI = *MF.getFrameInfo();
DebugLoc DL;
switch (RC->getID()) {
default:
Opc = AMDIL::PRIVATELOAD_v4i32;
break;
case AMDIL::GPRF32RegClassID:
Opc = AMDIL::PRIVATELOAD_f32;
break;
case AMDIL::GPRF64RegClassID:
Opc = AMDIL::PRIVATELOAD_f64;
break;
case AMDIL::GPRI16RegClassID:
Opc = AMDIL::PRIVATELOAD_i16;
break;
case AMDIL::GPRI32RegClassID:
Opc = AMDIL::PRIVATELOAD_i32;
break;
case AMDIL::GPRI8RegClassID:
Opc = AMDIL::PRIVATELOAD_i8;
break;
case AMDIL::GPRI64RegClassID:
Opc = AMDIL::PRIVATELOAD_i64;
break;
case AMDIL::GPRV2F32RegClassID:
Opc = AMDIL::PRIVATELOAD_v2f32;
break;
case AMDIL::GPRV2F64RegClassID:
Opc = AMDIL::PRIVATELOAD_v2f64;
break;
case AMDIL::GPRV2I16RegClassID:
Opc = AMDIL::PRIVATELOAD_v2i16;
break;
case AMDIL::GPRV2I32RegClassID:
Opc = AMDIL::PRIVATELOAD_v2i32;
break;
case AMDIL::GPRV2I8RegClassID:
Opc = AMDIL::PRIVATELOAD_v2i8;
break;
case AMDIL::GPRV2I64RegClassID:
Opc = AMDIL::PRIVATELOAD_v2i64;
break;
case AMDIL::GPRV4F32RegClassID:
Opc = AMDIL::PRIVATELOAD_v4f32;
break;
case AMDIL::GPRV4I16RegClassID:
Opc = AMDIL::PRIVATELOAD_v4i16;
break;
case AMDIL::GPRV4I32RegClassID:
Opc = AMDIL::PRIVATELOAD_v4i32;
break;
case AMDIL::GPRV4I8RegClassID:
Opc = AMDIL::PRIVATELOAD_v4i8;
break;
}
MachineMemOperand *MMO =
@ -512,16 +418,6 @@ bool AMDILInstrInfo::isLoadInst(MachineInstr *MI) const {
bool AMDILInstrInfo::isSWSExtLoadInst(MachineInstr *MI) const
{
switch (MI->getOpcode()) {
default:
break;
ExpandCaseToByteShortTypes(AMDIL::LOCALLOAD);
ExpandCaseToByteShortTypes(AMDIL::REGIONLOAD);
ExpandCaseToByteShortTypes(AMDIL::PRIVATELOAD);
ExpandCaseToByteShortTypes(AMDIL::CPOOLLOAD);
ExpandCaseToByteShortTypes(AMDIL::CONSTANTLOAD);
return true;
};
return false;
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -7,13 +7,6 @@
//
//==-----------------------------------------------------------------------===//
//===----------------------------------------------------------------------===//
// Conversion DAG Nodes
//===----------------------------------------------------------------------===//
// Double to Single conversion
def IL_d2f : SDNode<"AMDILISD::DP_TO_FP" , SDTIL_DPToFPOp>;
def IL_inttoany: SDNode<"AMDILISD::INTTOANY", SDTIL_IntToAny>;
//===----------------------------------------------------------------------===//
// Flow Control DAG Nodes
//===----------------------------------------------------------------------===//
@ -27,299 +20,28 @@ def IL_cmp : SDNode<"AMDILISD::CMP", SDTIL_Cmp>;
//===----------------------------------------------------------------------===//
// Call/Return DAG Nodes
//===----------------------------------------------------------------------===//
def IL_callseq_start : SDNode<"ISD::CALLSEQ_START", SDTIL_CallSeqStart,
[SDNPHasChain, SDNPOutGlue]>;
def IL_callseq_end : SDNode<"ISD::CALLSEQ_END", SDTIL_CallSeqEnd,
[SDNPHasChain, SDNPOptInGlue, SDNPOutGlue]>;
def IL_call : SDNode<"AMDILISD::CALL", SDTIL_Call,
[SDNPHasChain, SDNPOptInGlue, SDNPOutGlue]>;
def IL_retflag : SDNode<"AMDILISD::RET_FLAG", SDTNone,
[SDNPHasChain, SDNPOptInGlue]>;
//===----------------------------------------------------------------------===//
// Arithmetic DAG Nodes
//===----------------------------------------------------------------------===//
// Address modification nodes
def IL_addaddrri : SDNode<"AMDILISD::ADDADDR", SDTIL_AddAddrri,
[SDNPCommutative, SDNPAssociative]>;
def IL_addaddrir : SDNode<"AMDILISD::ADDADDR", SDTIL_AddAddrir,
[SDNPCommutative, SDNPAssociative]>;
//===--------------------------------------------------------------------===//
// Instructions
//===--------------------------------------------------------------------===//
// Floating point math functions
def IL_cmov_logical : SDNode<"AMDILISD::CMOVLOG", SDTIL_GenTernaryOp>;
def IL_add : SDNode<"AMDILISD::ADD" , SDTIL_GenBinaryOp>;
def IL_cmov : SDNode<"AMDILISD::CMOV" , SDTIL_GenBinaryOp>;
def IL_or : SDNode<"AMDILISD::OR" ,SDTIL_GenBinaryOp>;
def IL_and : SDNode<"AMDILISD::AND" ,SDTIL_GenBinaryOp>;
def IL_xor : SDNode<"AMDILISD::XOR", SDTIL_GenBinaryOp>;
def IL_not : SDNode<"AMDILISD::NOT", SDTIL_GenUnaryOp>;
def IL_div_inf : SDNode<"AMDILISD::DIV_INF", SDTIL_GenBinaryOp>;
def IL_mad : SDNode<"AMDILISD::MAD", SDTIL_GenTernaryOp>;
//===----------------------------------------------------------------------===//
// Integer functions
//===----------------------------------------------------------------------===//
def IL_inegate : SDNode<"AMDILISD::INEGATE" , SDTIntUnaryOp>;
def IL_umul : SDNode<"AMDILISD::UMUL" , SDTIntBinOp,
[SDNPCommutative, SDNPAssociative]>;
def IL_mov : SDNode<"AMDILISD::MOVE", SDTIL_GenUnaryOp>;
def IL_phimov : SDNode<"AMDILISD::PHIMOVE", SDTIL_GenUnaryOp>;
def IL_bitconv : SDNode<"AMDILISD::BITCONV", SDTIL_GenBitConv>;
def IL_ffb_hi : SDNode<"AMDILISD::IFFB_HI", SDTIL_GenUnaryOp>;
def IL_ffb_lo : SDNode<"AMDILISD::IFFB_LO", SDTIL_GenUnaryOp>;
def IL_smax : SDNode<"AMDILISD::SMAX", SDTIL_GenBinaryOp>;
//===----------------------------------------------------------------------===//
// Double functions
//===----------------------------------------------------------------------===//
def IL_dcreate : SDNode<"AMDILISD::DCREATE" , SDTIL_DCreate>;
def IL_dcomphi : SDNode<"AMDILISD::DCOMPHI" , SDTIL_DComp>;
def IL_dcomplo : SDNode<"AMDILISD::DCOMPLO" , SDTIL_DComp>;
def IL_dcreate2 : SDNode<"AMDILISD::DCREATE2" , SDTIL_DCreate2>;
def IL_dcomphi2 : SDNode<"AMDILISD::DCOMPHI2" , SDTIL_DComp2>;
def IL_dcomplo2 : SDNode<"AMDILISD::DCOMPLO2" , SDTIL_DComp2>;
//===----------------------------------------------------------------------===//
// Long functions
//===----------------------------------------------------------------------===//
def IL_lcreate : SDNode<"AMDILISD::LCREATE" , SDTIL_LCreate>;
def IL_lcreate2 : SDNode<"AMDILISD::LCREATE2" , SDTIL_LCreate2>;
def IL_lcomphi : SDNode<"AMDILISD::LCOMPHI" , SDTIL_LComp>;
def IL_lcomphi2 : SDNode<"AMDILISD::LCOMPHI2" , SDTIL_LComp2>;
def IL_lcomplo : SDNode<"AMDILISD::LCOMPLO" , SDTIL_LComp>;
def IL_lcomplo2 : SDNode<"AMDILISD::LCOMPLO2" , SDTIL_LComp2>;
//===----------------------------------------------------------------------===//
// Vector functions
//===----------------------------------------------------------------------===//
def IL_vbuild : SDNode<"AMDILISD::VBUILD", SDTIL_GenVecBuild,
[]>;
def IL_vextract : SDNode<"AMDILISD::VEXTRACT", SDTIL_GenVecExtract,
[]>;
def IL_vinsert : SDNode<"AMDILISD::VINSERT", SDTIL_GenVecInsert,
[]>;
def IL_vconcat : SDNode<"AMDILISD::VCONCAT", SDTIL_GenVecConcat,
[]>;
//===----------------------------------------------------------------------===//
// AMDIL Image Custom SDNodes
//===----------------------------------------------------------------------===//
def image2d_read : SDNode<"AMDILISD::IMAGE2D_READ", SDTIL_ImageRead,
[SDNPHasChain, SDNPMayLoad]>;
def image2d_write : SDNode<"AMDILISD::IMAGE2D_WRITE", SDTIL_ImageWrite,
[SDNPHasChain, SDNPMayStore]>;
def image2d_info0 : SDNode<"AMDILISD::IMAGE2D_INFO0", SDTIL_ImageInfo, []>;
def image2d_info1 : SDNode<"AMDILISD::IMAGE2D_INFO1", SDTIL_ImageInfo, []>;
def image3d_read : SDNode<"AMDILISD::IMAGE3D_READ", SDTIL_ImageRead,
[SDNPHasChain, SDNPMayLoad]>;
def image3d_write : SDNode<"AMDILISD::IMAGE3D_WRITE", SDTIL_ImageWrite3D,
[SDNPHasChain, SDNPMayStore]>;
def image3d_info0 : SDNode<"AMDILISD::IMAGE3D_INFO0", SDTIL_ImageInfo, []>;
def image3d_info1 : SDNode<"AMDILISD::IMAGE3D_INFO1", SDTIL_ImageInfo, []>;
//===----------------------------------------------------------------------===//
// AMDIL Atomic Custom SDNodes
//===----------------------------------------------------------------------===//
//===-------------- 32 bit global atomics with return values --------------===//
def atom_g_add : SDNode<"AMDILISD::ATOM_G_ADD", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_g_and : SDNode<"AMDILISD::ATOM_G_AND", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_g_cmpxchg : SDNode<"AMDILISD::ATOM_G_CMPXCHG", SDTIL_TriAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_g_dec : SDNode<"AMDILISD::ATOM_G_DEC", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_g_inc : SDNode<"AMDILISD::ATOM_G_INC", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_g_max : SDNode<"AMDILISD::ATOM_G_MAX", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_g_umax : SDNode<"AMDILISD::ATOM_G_UMAX", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_g_min : SDNode<"AMDILISD::ATOM_G_MIN", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_g_umin : SDNode<"AMDILISD::ATOM_G_UMIN", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_g_or : SDNode<"AMDILISD::ATOM_G_OR", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_g_sub : SDNode<"AMDILISD::ATOM_G_SUB", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_g_rsub : SDNode<"AMDILISD::ATOM_G_RSUB", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_g_xchg : SDNode<"AMDILISD::ATOM_G_XCHG", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_g_xor : SDNode<"AMDILISD::ATOM_G_XOR", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
//===------------- 32 bit global atomics without return values ------------===//
def atom_g_add_noret : SDNode<"AMDILISD::ATOM_G_ADD_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_g_and_noret : SDNode<"AMDILISD::ATOM_G_AND_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_g_cmpxchg_noret : SDNode<"AMDILISD::ATOM_G_CMPXCHG_NORET",
SDTIL_TriAtom, [SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_g_cmp_noret : SDNode<"AMDILISD::ATOM_G_CMPXCHG_NORET",
SDTIL_TriAtom, [SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_g_dec_noret : SDNode<"AMDILISD::ATOM_G_DEC_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_g_inc_noret : SDNode<"AMDILISD::ATOM_G_INC_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_g_max_noret : SDNode<"AMDILISD::ATOM_G_MAX_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_g_umax_noret: SDNode<"AMDILISD::ATOM_G_UMAX_NORET",
SDTIL_BinAtom, [SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_g_min_noret : SDNode<"AMDILISD::ATOM_G_MIN_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_g_umin_noret: SDNode<"AMDILISD::ATOM_G_UMIN_NORET",
SDTIL_BinAtom, [SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_g_or_noret : SDNode<"AMDILISD::ATOM_G_OR_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_g_sub_noret : SDNode<"AMDILISD::ATOM_G_SUB_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_g_rsub_noret : SDNode<"AMDILISD::ATOM_G_RSUB_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_g_xchg_noret: SDNode<"AMDILISD::ATOM_G_XCHG_NORET",
SDTIL_BinAtom, [SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_g_xor_noret : SDNode<"AMDILISD::ATOM_G_XOR_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
//===--------------- 32 bit local atomics with return values --------------===//
def atom_l_add : SDNode<"AMDILISD::ATOM_L_ADD", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_l_and : SDNode<"AMDILISD::ATOM_L_AND", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_l_cmpxchg : SDNode<"AMDILISD::ATOM_L_CMPXCHG", SDTIL_TriAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_l_dec : SDNode<"AMDILISD::ATOM_L_DEC", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_l_inc : SDNode<"AMDILISD::ATOM_L_INC", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_l_max : SDNode<"AMDILISD::ATOM_L_MAX", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_l_umax : SDNode<"AMDILISD::ATOM_L_UMAX", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_l_min : SDNode<"AMDILISD::ATOM_L_MIN", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_l_umin : SDNode<"AMDILISD::ATOM_L_UMIN", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_l_or : SDNode<"AMDILISD::ATOM_L_OR", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_l_mskor : SDNode<"AMDILISD::ATOM_L_MSKOR", SDTIL_TriAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_l_sub : SDNode<"AMDILISD::ATOM_L_SUB", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_l_rsub : SDNode<"AMDILISD::ATOM_L_RSUB", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_l_xchg : SDNode<"AMDILISD::ATOM_L_XCHG", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_l_xor : SDNode<"AMDILISD::ATOM_L_XOR", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
//===-------------- 32 bit local atomics without return values ------------===//
def atom_l_add_noret : SDNode<"AMDILISD::ATOM_L_ADD_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_l_and_noret : SDNode<"AMDILISD::ATOM_L_AND_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_l_cmpxchg_noret : SDNode<"AMDILISD::ATOM_L_CMPXCHG_NORET",
SDTIL_TriAtom, [SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_l_dec_noret : SDNode<"AMDILISD::ATOM_L_DEC_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_l_inc_noret : SDNode<"AMDILISD::ATOM_L_INC_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_l_max_noret : SDNode<"AMDILISD::ATOM_L_MAX_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_l_umax_noret: SDNode<"AMDILISD::ATOM_L_UMAX_NORET",
SDTIL_BinAtom, [SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_l_min_noret : SDNode<"AMDILISD::ATOM_L_MIN_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_l_umin_noret: SDNode<"AMDILISD::ATOM_L_UMIN_NORET",
SDTIL_BinAtom, [SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_l_or_noret : SDNode<"AMDILISD::ATOM_L_OR_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_l_mskor_noret : SDNode<"AMDILISD::ATOM_L_MSKOR_NORET",
SDTIL_TriAtom, [SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_l_sub_noret : SDNode<"AMDILISD::ATOM_L_SUB_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_l_rsub_noret : SDNode<"AMDILISD::ATOM_L_RSUB_NORET",
SDTIL_BinAtom, [SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_l_xchg_noret: SDNode<"AMDILISD::ATOM_L_XCHG_NORET",
SDTIL_BinAtom, [SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_l_xor_noret : SDNode<"AMDILISD::ATOM_L_XOR_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
//===--------------- 32 bit local atomics with return values --------------===//
def atom_r_add : SDNode<"AMDILISD::ATOM_R_ADD", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_r_and : SDNode<"AMDILISD::ATOM_R_AND", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_r_cmpxchg : SDNode<"AMDILISD::ATOM_R_CMPXCHG", SDTIL_TriAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_r_dec : SDNode<"AMDILISD::ATOM_R_DEC", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_r_inc : SDNode<"AMDILISD::ATOM_R_INC", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_r_max : SDNode<"AMDILISD::ATOM_R_MAX", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_r_umax : SDNode<"AMDILISD::ATOM_R_UMAX", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_r_min : SDNode<"AMDILISD::ATOM_R_MIN", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_r_umin : SDNode<"AMDILISD::ATOM_R_UMIN", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_r_or : SDNode<"AMDILISD::ATOM_R_OR", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_r_mskor : SDNode<"AMDILISD::ATOM_R_MSKOR", SDTIL_TriAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_r_sub : SDNode<"AMDILISD::ATOM_R_SUB", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_r_rsub : SDNode<"AMDILISD::ATOM_R_RSUB", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_r_xchg : SDNode<"AMDILISD::ATOM_R_XCHG", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_r_xor : SDNode<"AMDILISD::ATOM_R_XOR", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
//===-------------- 32 bit local atomics without return values ------------===//
def atom_r_add_noret : SDNode<"AMDILISD::ATOM_R_ADD_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_r_and_noret : SDNode<"AMDILISD::ATOM_R_AND_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_r_cmpxchg_noret : SDNode<"AMDILISD::ATOM_R_CMPXCHG_NORET",
SDTIL_TriAtom, [SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_r_dec_noret : SDNode<"AMDILISD::ATOM_R_DEC_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_r_inc_noret : SDNode<"AMDILISD::ATOM_R_INC_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_r_max_noret : SDNode<"AMDILISD::ATOM_R_MAX_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_r_umax_noret: SDNode<"AMDILISD::ATOM_R_UMAX_NORET",
SDTIL_BinAtom, [SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_r_min_noret : SDNode<"AMDILISD::ATOM_R_MIN_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_r_umin_noret: SDNode<"AMDILISD::ATOM_R_UMIN_NORET",
SDTIL_BinAtom, [SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_r_or_noret : SDNode<"AMDILISD::ATOM_R_OR_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_r_mskor_noret : SDNode<"AMDILISD::ATOM_R_MSKOR_NORET", SDTIL_TriAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_r_sub_noret : SDNode<"AMDILISD::ATOM_R_SUB_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_r_rsub_noret : SDNode<"AMDILISD::ATOM_R_RSUB_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
def atom_r_xchg_noret: SDNode<"AMDILISD::ATOM_R_XCHG_NORET",
SDTIL_BinAtom, [SDNPHasChain, SDNPMayLoad, SDNPMayStore, SDNPMemOperand]>;
def atom_r_xor_noret : SDNode<"AMDILISD::ATOM_R_XOR_NORET", SDTIL_BinAtom,
[SDNPHasChain, SDNPMayStore, SDNPMemOperand]>;
//===--------------- 32 bit atomic counter instructions -------------------===//
def append_alloc : SDNode<"AMDILISD::APPEND_ALLOC", SDTIL_Append,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore]>;
def append_consume : SDNode<"AMDILISD::APPEND_CONSUME", SDTIL_Append,
[SDNPHasChain, SDNPMayLoad, SDNPMayStore]>;
def append_alloc_noret : SDNode<"AMDILISD::APPEND_ALLOC_NORET", SDTIL_Append,
[SDNPHasChain, SDNPMayStore]>;
def append_consume_noret : SDNode<"AMDILISD::APPEND_CONSUME_NORET",
SDTIL_Append, [SDNPHasChain, SDNPMayStore]>;

View file

@ -15,11 +15,6 @@ def MEMI32 : Operand<i32> {
let MIOperandInfo = (ops GPRI32, GPRI32);
}
def MEMI64 : Operand<i64> {
let PrintMethod = "printMemOperand";
let MIOperandInfo = (ops GPRI64, GPRI64);
}
// Call target types
def calltarget : Operand<i32>;
def brtarget : Operand<OtherVT>;

View file

@ -40,753 +40,6 @@ def R17 : AMDILReg<17, "r17">, DwarfRegNum<[17]>;
def R18 : AMDILReg<18, "r18">, DwarfRegNum<[18]>;
def R19 : AMDILReg<19, "r19">, DwarfRegNum<[19]>;
def R20 : AMDILReg<20, "r20">, DwarfRegNum<[20]>;
def R21 : AMDILReg<21, "r21">, DwarfRegNum<[21]>;
def R22 : AMDILReg<22, "r22">, DwarfRegNum<[22]>;
def R23 : AMDILReg<23, "r23">, DwarfRegNum<[23]>;
def R24 : AMDILReg<24, "r24">, DwarfRegNum<[24]>;
def R25 : AMDILReg<25, "r25">, DwarfRegNum<[25]>;
def R26 : AMDILReg<26, "r26">, DwarfRegNum<[26]>;
def R27 : AMDILReg<27, "r27">, DwarfRegNum<[27]>;
def R28 : AMDILReg<28, "r28">, DwarfRegNum<[28]>;
def R29 : AMDILReg<29, "r29">, DwarfRegNum<[29]>;
def R30 : AMDILReg<30, "r30">, DwarfRegNum<[30]>;
def R31 : AMDILReg<31, "r31">, DwarfRegNum<[31]>;
def R32 : AMDILReg<32, "r32">, DwarfRegNum<[32]>;
def R33 : AMDILReg<33, "r33">, DwarfRegNum<[33]>;
def R34 : AMDILReg<34, "r34">, DwarfRegNum<[34]>;
def R35 : AMDILReg<35, "r35">, DwarfRegNum<[35]>;
def R36 : AMDILReg<36, "r36">, DwarfRegNum<[36]>;
def R37 : AMDILReg<37, "r37">, DwarfRegNum<[37]>;
def R38 : AMDILReg<38, "r38">, DwarfRegNum<[38]>;
def R39 : AMDILReg<39, "r39">, DwarfRegNum<[39]>;
def R40 : AMDILReg<40, "r40">, DwarfRegNum<[40]>;
def R41 : AMDILReg<41, "r41">, DwarfRegNum<[41]>;
def R42 : AMDILReg<42, "r42">, DwarfRegNum<[42]>;
def R43 : AMDILReg<43, "r43">, DwarfRegNum<[43]>;
def R44 : AMDILReg<44, "r44">, DwarfRegNum<[44]>;
def R45 : AMDILReg<45, "r45">, DwarfRegNum<[45]>;
def R46 : AMDILReg<46, "r46">, DwarfRegNum<[46]>;
def R47 : AMDILReg<47, "r47">, DwarfRegNum<[47]>;
def R48 : AMDILReg<48, "r48">, DwarfRegNum<[48]>;
def R49 : AMDILReg<49, "r49">, DwarfRegNum<[49]>;
def R50 : AMDILReg<50, "r50">, DwarfRegNum<[50]>;
def R51 : AMDILReg<51, "r51">, DwarfRegNum<[51]>;
def R52 : AMDILReg<52, "r52">, DwarfRegNum<[52]>;
def R53 : AMDILReg<53, "r53">, DwarfRegNum<[53]>;
def R54 : AMDILReg<54, "r54">, DwarfRegNum<[54]>;
def R55 : AMDILReg<55, "r55">, DwarfRegNum<[55]>;
def R56 : AMDILReg<56, "r56">, DwarfRegNum<[56]>;
def R57 : AMDILReg<57, "r57">, DwarfRegNum<[57]>;
def R58 : AMDILReg<58, "r58">, DwarfRegNum<[58]>;
def R59 : AMDILReg<59, "r59">, DwarfRegNum<[59]>;
def R60 : AMDILReg<60, "r60">, DwarfRegNum<[60]>;
def R61 : AMDILReg<61, "r61">, DwarfRegNum<[61]>;
def R62 : AMDILReg<62, "r62">, DwarfRegNum<[62]>;
def R63 : AMDILReg<63, "r63">, DwarfRegNum<[63]>;
def R64 : AMDILReg<64, "r64">, DwarfRegNum<[64]>;
def R65 : AMDILReg<65, "r65">, DwarfRegNum<[65]>;
def R66 : AMDILReg<66, "r66">, DwarfRegNum<[66]>;
def R67 : AMDILReg<67, "r67">, DwarfRegNum<[67]>;
def R68 : AMDILReg<68, "r68">, DwarfRegNum<[68]>;
def R69 : AMDILReg<69, "r69">, DwarfRegNum<[69]>;
def R70 : AMDILReg<70, "r70">, DwarfRegNum<[70]>;
def R71 : AMDILReg<71, "r71">, DwarfRegNum<[71]>;
def R72 : AMDILReg<72, "r72">, DwarfRegNum<[72]>;
def R73 : AMDILReg<73, "r73">, DwarfRegNum<[73]>;
def R74 : AMDILReg<74, "r74">, DwarfRegNum<[74]>;
def R75 : AMDILReg<75, "r75">, DwarfRegNum<[75]>;
def R76 : AMDILReg<76, "r76">, DwarfRegNum<[76]>;
def R77 : AMDILReg<77, "r77">, DwarfRegNum<[77]>;
def R78 : AMDILReg<78, "r78">, DwarfRegNum<[78]>;
def R79 : AMDILReg<79, "r79">, DwarfRegNum<[79]>;
def R80 : AMDILReg<80, "r80">, DwarfRegNum<[80]>;
def R81 : AMDILReg<81, "r81">, DwarfRegNum<[81]>;
def R82 : AMDILReg<82, "r82">, DwarfRegNum<[82]>;
def R83 : AMDILReg<83, "r83">, DwarfRegNum<[83]>;
def R84 : AMDILReg<84, "r84">, DwarfRegNum<[84]>;
def R85 : AMDILReg<85, "r85">, DwarfRegNum<[85]>;
def R86 : AMDILReg<86, "r86">, DwarfRegNum<[86]>;
def R87 : AMDILReg<87, "r87">, DwarfRegNum<[87]>;
def R88 : AMDILReg<88, "r88">, DwarfRegNum<[88]>;
def R89 : AMDILReg<89, "r89">, DwarfRegNum<[89]>;
def R90 : AMDILReg<90, "r90">, DwarfRegNum<[90]>;
def R91 : AMDILReg<91, "r91">, DwarfRegNum<[91]>;
def R92 : AMDILReg<92, "r92">, DwarfRegNum<[92]>;
def R93 : AMDILReg<93, "r93">, DwarfRegNum<[93]>;
def R94 : AMDILReg<94, "r94">, DwarfRegNum<[94]>;
def R95 : AMDILReg<95, "r95">, DwarfRegNum<[95]>;
def R96 : AMDILReg<96, "r96">, DwarfRegNum<[96]>;
def R97 : AMDILReg<97, "r97">, DwarfRegNum<[97]>;
def R98 : AMDILReg<98, "r98">, DwarfRegNum<[98]>;
def R99 : AMDILReg<99, "r99">, DwarfRegNum<[99]>;
def R100 : AMDILReg<100, "r100">, DwarfRegNum<[100]>;
def R101 : AMDILReg<101, "r101">, DwarfRegNum<[101]>;
def R102 : AMDILReg<102, "r102">, DwarfRegNum<[102]>;
def R103 : AMDILReg<103, "r103">, DwarfRegNum<[103]>;
def R104 : AMDILReg<104, "r104">, DwarfRegNum<[104]>;
def R105 : AMDILReg<105, "r105">, DwarfRegNum<[105]>;
def R106 : AMDILReg<106, "r106">, DwarfRegNum<[106]>;
def R107 : AMDILReg<107, "r107">, DwarfRegNum<[107]>;
def R108 : AMDILReg<108, "r108">, DwarfRegNum<[108]>;
def R109 : AMDILReg<109, "r109">, DwarfRegNum<[109]>;
def R110 : AMDILReg<110, "r110">, DwarfRegNum<[110]>;
def R111 : AMDILReg<111, "r111">, DwarfRegNum<[111]>;
def R112 : AMDILReg<112, "r112">, DwarfRegNum<[112]>;
def R113 : AMDILReg<113, "r113">, DwarfRegNum<[113]>;
def R114 : AMDILReg<114, "r114">, DwarfRegNum<[114]>;
def R115 : AMDILReg<115, "r115">, DwarfRegNum<[115]>;
def R116 : AMDILReg<116, "r116">, DwarfRegNum<[116]>;
def R117 : AMDILReg<117, "r117">, DwarfRegNum<[117]>;
def R118 : AMDILReg<118, "r118">, DwarfRegNum<[118]>;
def R119 : AMDILReg<119, "r119">, DwarfRegNum<[119]>;
def R120 : AMDILReg<120, "r120">, DwarfRegNum<[120]>;
def R121 : AMDILReg<121, "r121">, DwarfRegNum<[121]>;
def R122 : AMDILReg<122, "r122">, DwarfRegNum<[122]>;
def R123 : AMDILReg<123, "r123">, DwarfRegNum<[123]>;
def R124 : AMDILReg<124, "r124">, DwarfRegNum<[124]>;
def R125 : AMDILReg<125, "r125">, DwarfRegNum<[125]>;
def R126 : AMDILReg<126, "r126">, DwarfRegNum<[126]>;
def R127 : AMDILReg<127, "r127">, DwarfRegNum<[127]>;
def R128 : AMDILReg<128, "r128">, DwarfRegNum<[128]>;
def R129 : AMDILReg<129, "r129">, DwarfRegNum<[129]>;
def R130 : AMDILReg<130, "r130">, DwarfRegNum<[130]>;
def R131 : AMDILReg<131, "r131">, DwarfRegNum<[131]>;
def R132 : AMDILReg<132, "r132">, DwarfRegNum<[132]>;
def R133 : AMDILReg<133, "r133">, DwarfRegNum<[133]>;
def R134 : AMDILReg<134, "r134">, DwarfRegNum<[134]>;
def R135 : AMDILReg<135, "r135">, DwarfRegNum<[135]>;
def R136 : AMDILReg<136, "r136">, DwarfRegNum<[136]>;
def R137 : AMDILReg<137, "r137">, DwarfRegNum<[137]>;
def R138 : AMDILReg<138, "r138">, DwarfRegNum<[138]>;
def R139 : AMDILReg<139, "r139">, DwarfRegNum<[139]>;
def R140 : AMDILReg<140, "r140">, DwarfRegNum<[140]>;
def R141 : AMDILReg<141, "r141">, DwarfRegNum<[141]>;
def R142 : AMDILReg<142, "r142">, DwarfRegNum<[142]>;
def R143 : AMDILReg<143, "r143">, DwarfRegNum<[143]>;
def R144 : AMDILReg<144, "r144">, DwarfRegNum<[144]>;
def R145 : AMDILReg<145, "r145">, DwarfRegNum<[145]>;
def R146 : AMDILReg<146, "r146">, DwarfRegNum<[146]>;
def R147 : AMDILReg<147, "r147">, DwarfRegNum<[147]>;
def R148 : AMDILReg<148, "r148">, DwarfRegNum<[148]>;
def R149 : AMDILReg<149, "r149">, DwarfRegNum<[149]>;
def R150 : AMDILReg<150, "r150">, DwarfRegNum<[150]>;
def R151 : AMDILReg<151, "r151">, DwarfRegNum<[151]>;
def R152 : AMDILReg<152, "r152">, DwarfRegNum<[152]>;
def R153 : AMDILReg<153, "r153">, DwarfRegNum<[153]>;
def R154 : AMDILReg<154, "r154">, DwarfRegNum<[154]>;
def R155 : AMDILReg<155, "r155">, DwarfRegNum<[155]>;
def R156 : AMDILReg<156, "r156">, DwarfRegNum<[156]>;
def R157 : AMDILReg<157, "r157">, DwarfRegNum<[157]>;
def R158 : AMDILReg<158, "r158">, DwarfRegNum<[158]>;
def R159 : AMDILReg<159, "r159">, DwarfRegNum<[159]>;
def R160 : AMDILReg<160, "r160">, DwarfRegNum<[160]>;
def R161 : AMDILReg<161, "r161">, DwarfRegNum<[161]>;
def R162 : AMDILReg<162, "r162">, DwarfRegNum<[162]>;
def R163 : AMDILReg<163, "r163">, DwarfRegNum<[163]>;
def R164 : AMDILReg<164, "r164">, DwarfRegNum<[164]>;
def R165 : AMDILReg<165, "r165">, DwarfRegNum<[165]>;
def R166 : AMDILReg<166, "r166">, DwarfRegNum<[166]>;
def R167 : AMDILReg<167, "r167">, DwarfRegNum<[167]>;
def R168 : AMDILReg<168, "r168">, DwarfRegNum<[168]>;
def R169 : AMDILReg<169, "r169">, DwarfRegNum<[169]>;
def R170 : AMDILReg<170, "r170">, DwarfRegNum<[170]>;
def R171 : AMDILReg<171, "r171">, DwarfRegNum<[171]>;
def R172 : AMDILReg<172, "r172">, DwarfRegNum<[172]>;
def R173 : AMDILReg<173, "r173">, DwarfRegNum<[173]>;
def R174 : AMDILReg<174, "r174">, DwarfRegNum<[174]>;
def R175 : AMDILReg<175, "r175">, DwarfRegNum<[175]>;
def R176 : AMDILReg<176, "r176">, DwarfRegNum<[176]>;
def R177 : AMDILReg<177, "r177">, DwarfRegNum<[177]>;
def R178 : AMDILReg<178, "r178">, DwarfRegNum<[178]>;
def R179 : AMDILReg<179, "r179">, DwarfRegNum<[179]>;
def R180 : AMDILReg<180, "r180">, DwarfRegNum<[180]>;
def R181 : AMDILReg<181, "r181">, DwarfRegNum<[181]>;
def R182 : AMDILReg<182, "r182">, DwarfRegNum<[182]>;
def R183 : AMDILReg<183, "r183">, DwarfRegNum<[183]>;
def R184 : AMDILReg<184, "r184">, DwarfRegNum<[184]>;
def R185 : AMDILReg<185, "r185">, DwarfRegNum<[185]>;
def R186 : AMDILReg<186, "r186">, DwarfRegNum<[186]>;
def R187 : AMDILReg<187, "r187">, DwarfRegNum<[187]>;
def R188 : AMDILReg<188, "r188">, DwarfRegNum<[188]>;
def R189 : AMDILReg<189, "r189">, DwarfRegNum<[189]>;
def R190 : AMDILReg<190, "r190">, DwarfRegNum<[190]>;
def R191 : AMDILReg<191, "r191">, DwarfRegNum<[191]>;
def R192 : AMDILReg<192, "r192">, DwarfRegNum<[192]>;
def R193 : AMDILReg<193, "r193">, DwarfRegNum<[193]>;
def R194 : AMDILReg<194, "r194">, DwarfRegNum<[194]>;
def R195 : AMDILReg<195, "r195">, DwarfRegNum<[195]>;
def R196 : AMDILReg<196, "r196">, DwarfRegNum<[196]>;
def R197 : AMDILReg<197, "r197">, DwarfRegNum<[197]>;
def R198 : AMDILReg<198, "r198">, DwarfRegNum<[198]>;
def R199 : AMDILReg<199, "r199">, DwarfRegNum<[199]>;
def R200 : AMDILReg<200, "r200">, DwarfRegNum<[200]>;
def R201 : AMDILReg<201, "r201">, DwarfRegNum<[201]>;
def R202 : AMDILReg<202, "r202">, DwarfRegNum<[202]>;
def R203 : AMDILReg<203, "r203">, DwarfRegNum<[203]>;
def R204 : AMDILReg<204, "r204">, DwarfRegNum<[204]>;
def R205 : AMDILReg<205, "r205">, DwarfRegNum<[205]>;
def R206 : AMDILReg<206, "r206">, DwarfRegNum<[206]>;
def R207 : AMDILReg<207, "r207">, DwarfRegNum<[207]>;
def R208 : AMDILReg<208, "r208">, DwarfRegNum<[208]>;
def R209 : AMDILReg<209, "r209">, DwarfRegNum<[209]>;
def R210 : AMDILReg<210, "r210">, DwarfRegNum<[210]>;
def R211 : AMDILReg<211, "r211">, DwarfRegNum<[211]>;
def R212 : AMDILReg<212, "r212">, DwarfRegNum<[212]>;
def R213 : AMDILReg<213, "r213">, DwarfRegNum<[213]>;
def R214 : AMDILReg<214, "r214">, DwarfRegNum<[214]>;
def R215 : AMDILReg<215, "r215">, DwarfRegNum<[215]>;
def R216 : AMDILReg<216, "r216">, DwarfRegNum<[216]>;
def R217 : AMDILReg<217, "r217">, DwarfRegNum<[217]>;
def R218 : AMDILReg<218, "r218">, DwarfRegNum<[218]>;
def R219 : AMDILReg<219, "r219">, DwarfRegNum<[219]>;
def R220 : AMDILReg<220, "r220">, DwarfRegNum<[220]>;
def R221 : AMDILReg<221, "r221">, DwarfRegNum<[221]>;
def R222 : AMDILReg<222, "r222">, DwarfRegNum<[222]>;
def R223 : AMDILReg<223, "r223">, DwarfRegNum<[223]>;
def R224 : AMDILReg<224, "r224">, DwarfRegNum<[224]>;
def R225 : AMDILReg<225, "r225">, DwarfRegNum<[225]>;
def R226 : AMDILReg<226, "r226">, DwarfRegNum<[226]>;
def R227 : AMDILReg<227, "r227">, DwarfRegNum<[227]>;
def R228 : AMDILReg<228, "r228">, DwarfRegNum<[228]>;
def R229 : AMDILReg<229, "r229">, DwarfRegNum<[229]>;
def R230 : AMDILReg<230, "r230">, DwarfRegNum<[230]>;
def R231 : AMDILReg<231, "r231">, DwarfRegNum<[231]>;
def R232 : AMDILReg<232, "r232">, DwarfRegNum<[232]>;
def R233 : AMDILReg<233, "r233">, DwarfRegNum<[233]>;
def R234 : AMDILReg<234, "r234">, DwarfRegNum<[234]>;
def R235 : AMDILReg<235, "r235">, DwarfRegNum<[235]>;
def R236 : AMDILReg<236, "r236">, DwarfRegNum<[236]>;
def R237 : AMDILReg<237, "r237">, DwarfRegNum<[237]>;
def R238 : AMDILReg<238, "r238">, DwarfRegNum<[238]>;
def R239 : AMDILReg<239, "r239">, DwarfRegNum<[239]>;
def R240 : AMDILReg<240, "r240">, DwarfRegNum<[240]>;
def R241 : AMDILReg<241, "r241">, DwarfRegNum<[241]>;
def R242 : AMDILReg<242, "r242">, DwarfRegNum<[242]>;
def R243 : AMDILReg<243, "r243">, DwarfRegNum<[243]>;
def R244 : AMDILReg<244, "r244">, DwarfRegNum<[244]>;
def R245 : AMDILReg<245, "r245">, DwarfRegNum<[245]>;
def R246 : AMDILReg<246, "r246">, DwarfRegNum<[246]>;
def R247 : AMDILReg<247, "r247">, DwarfRegNum<[247]>;
def R248 : AMDILReg<248, "r248">, DwarfRegNum<[248]>;
def R249 : AMDILReg<249, "r249">, DwarfRegNum<[249]>;
def R250 : AMDILReg<250, "r250">, DwarfRegNum<[250]>;
def R251 : AMDILReg<251, "r251">, DwarfRegNum<[251]>;
def R252 : AMDILReg<252, "r252">, DwarfRegNum<[252]>;
def R253 : AMDILReg<253, "r253">, DwarfRegNum<[253]>;
def R254 : AMDILReg<254, "r254">, DwarfRegNum<[254]>;
def R255 : AMDILReg<255, "r255">, DwarfRegNum<[255]>;
def R256 : AMDILReg<256, "r256">, DwarfRegNum<[256]>;
def R257 : AMDILReg<257, "r257">, DwarfRegNum<[257]>;
def R258 : AMDILReg<258, "r258">, DwarfRegNum<[258]>;
def R259 : AMDILReg<259, "r259">, DwarfRegNum<[259]>;
def R260 : AMDILReg<260, "r260">, DwarfRegNum<[260]>;
def R261 : AMDILReg<261, "r261">, DwarfRegNum<[261]>;
def R262 : AMDILReg<262, "r262">, DwarfRegNum<[262]>;
def R263 : AMDILReg<263, "r263">, DwarfRegNum<[263]>;
def R264 : AMDILReg<264, "r264">, DwarfRegNum<[264]>;
def R265 : AMDILReg<265, "r265">, DwarfRegNum<[265]>;
def R266 : AMDILReg<266, "r266">, DwarfRegNum<[266]>;
def R267 : AMDILReg<267, "r267">, DwarfRegNum<[267]>;
def R268 : AMDILReg<268, "r268">, DwarfRegNum<[268]>;
def R269 : AMDILReg<269, "r269">, DwarfRegNum<[269]>;
def R270 : AMDILReg<270, "r270">, DwarfRegNum<[270]>;
def R271 : AMDILReg<271, "r271">, DwarfRegNum<[271]>;
def R272 : AMDILReg<272, "r272">, DwarfRegNum<[272]>;
def R273 : AMDILReg<273, "r273">, DwarfRegNum<[273]>;
def R274 : AMDILReg<274, "r274">, DwarfRegNum<[274]>;
def R275 : AMDILReg<275, "r275">, DwarfRegNum<[275]>;
def R276 : AMDILReg<276, "r276">, DwarfRegNum<[276]>;
def R277 : AMDILReg<277, "r277">, DwarfRegNum<[277]>;
def R278 : AMDILReg<278, "r278">, DwarfRegNum<[278]>;
def R279 : AMDILReg<279, "r279">, DwarfRegNum<[279]>;
def R280 : AMDILReg<280, "r280">, DwarfRegNum<[280]>;
def R281 : AMDILReg<281, "r281">, DwarfRegNum<[281]>;
def R282 : AMDILReg<282, "r282">, DwarfRegNum<[282]>;
def R283 : AMDILReg<283, "r283">, DwarfRegNum<[283]>;
def R284 : AMDILReg<284, "r284">, DwarfRegNum<[284]>;
def R285 : AMDILReg<285, "r285">, DwarfRegNum<[285]>;
def R286 : AMDILReg<286, "r286">, DwarfRegNum<[286]>;
def R287 : AMDILReg<287, "r287">, DwarfRegNum<[287]>;
def R288 : AMDILReg<288, "r288">, DwarfRegNum<[288]>;
def R289 : AMDILReg<289, "r289">, DwarfRegNum<[289]>;
def R290 : AMDILReg<290, "r290">, DwarfRegNum<[290]>;
def R291 : AMDILReg<291, "r291">, DwarfRegNum<[291]>;
def R292 : AMDILReg<292, "r292">, DwarfRegNum<[292]>;
def R293 : AMDILReg<293, "r293">, DwarfRegNum<[293]>;
def R294 : AMDILReg<294, "r294">, DwarfRegNum<[294]>;
def R295 : AMDILReg<295, "r295">, DwarfRegNum<[295]>;
def R296 : AMDILReg<296, "r296">, DwarfRegNum<[296]>;
def R297 : AMDILReg<297, "r297">, DwarfRegNum<[297]>;
def R298 : AMDILReg<298, "r298">, DwarfRegNum<[298]>;
def R299 : AMDILReg<299, "r299">, DwarfRegNum<[299]>;
def R300 : AMDILReg<300, "r300">, DwarfRegNum<[300]>;
def R301 : AMDILReg<301, "r301">, DwarfRegNum<[301]>;
def R302 : AMDILReg<302, "r302">, DwarfRegNum<[302]>;
def R303 : AMDILReg<303, "r303">, DwarfRegNum<[303]>;
def R304 : AMDILReg<304, "r304">, DwarfRegNum<[304]>;
def R305 : AMDILReg<305, "r305">, DwarfRegNum<[305]>;
def R306 : AMDILReg<306, "r306">, DwarfRegNum<[306]>;
def R307 : AMDILReg<307, "r307">, DwarfRegNum<[307]>;
def R308 : AMDILReg<308, "r308">, DwarfRegNum<[308]>;
def R309 : AMDILReg<309, "r309">, DwarfRegNum<[309]>;
def R310 : AMDILReg<310, "r310">, DwarfRegNum<[310]>;
def R311 : AMDILReg<311, "r311">, DwarfRegNum<[311]>;
def R312 : AMDILReg<312, "r312">, DwarfRegNum<[312]>;
def R313 : AMDILReg<313, "r313">, DwarfRegNum<[313]>;
def R314 : AMDILReg<314, "r314">, DwarfRegNum<[314]>;
def R315 : AMDILReg<315, "r315">, DwarfRegNum<[315]>;
def R316 : AMDILReg<316, "r316">, DwarfRegNum<[316]>;
def R317 : AMDILReg<317, "r317">, DwarfRegNum<[317]>;
def R318 : AMDILReg<318, "r318">, DwarfRegNum<[318]>;
def R319 : AMDILReg<319, "r319">, DwarfRegNum<[319]>;
def R320 : AMDILReg<320, "r320">, DwarfRegNum<[320]>;
def R321 : AMDILReg<321, "r321">, DwarfRegNum<[321]>;
def R322 : AMDILReg<322, "r322">, DwarfRegNum<[322]>;
def R323 : AMDILReg<323, "r323">, DwarfRegNum<[323]>;
def R324 : AMDILReg<324, "r324">, DwarfRegNum<[324]>;
def R325 : AMDILReg<325, "r325">, DwarfRegNum<[325]>;
def R326 : AMDILReg<326, "r326">, DwarfRegNum<[326]>;
def R327 : AMDILReg<327, "r327">, DwarfRegNum<[327]>;
def R328 : AMDILReg<328, "r328">, DwarfRegNum<[328]>;
def R329 : AMDILReg<329, "r329">, DwarfRegNum<[329]>;
def R330 : AMDILReg<330, "r330">, DwarfRegNum<[330]>;
def R331 : AMDILReg<331, "r331">, DwarfRegNum<[331]>;
def R332 : AMDILReg<332, "r332">, DwarfRegNum<[332]>;
def R333 : AMDILReg<333, "r333">, DwarfRegNum<[333]>;
def R334 : AMDILReg<334, "r334">, DwarfRegNum<[334]>;
def R335 : AMDILReg<335, "r335">, DwarfRegNum<[335]>;
def R336 : AMDILReg<336, "r336">, DwarfRegNum<[336]>;
def R337 : AMDILReg<337, "r337">, DwarfRegNum<[337]>;
def R338 : AMDILReg<338, "r338">, DwarfRegNum<[338]>;
def R339 : AMDILReg<339, "r339">, DwarfRegNum<[339]>;
def R340 : AMDILReg<340, "r340">, DwarfRegNum<[340]>;
def R341 : AMDILReg<341, "r341">, DwarfRegNum<[341]>;
def R342 : AMDILReg<342, "r342">, DwarfRegNum<[342]>;
def R343 : AMDILReg<343, "r343">, DwarfRegNum<[343]>;
def R344 : AMDILReg<344, "r344">, DwarfRegNum<[344]>;
def R345 : AMDILReg<345, "r345">, DwarfRegNum<[345]>;
def R346 : AMDILReg<346, "r346">, DwarfRegNum<[346]>;
def R347 : AMDILReg<347, "r347">, DwarfRegNum<[347]>;
def R348 : AMDILReg<348, "r348">, DwarfRegNum<[348]>;
def R349 : AMDILReg<349, "r349">, DwarfRegNum<[349]>;
def R350 : AMDILReg<350, "r350">, DwarfRegNum<[350]>;
def R351 : AMDILReg<351, "r351">, DwarfRegNum<[351]>;
def R352 : AMDILReg<352, "r352">, DwarfRegNum<[352]>;
def R353 : AMDILReg<353, "r353">, DwarfRegNum<[353]>;
def R354 : AMDILReg<354, "r354">, DwarfRegNum<[354]>;
def R355 : AMDILReg<355, "r355">, DwarfRegNum<[355]>;
def R356 : AMDILReg<356, "r356">, DwarfRegNum<[356]>;
def R357 : AMDILReg<357, "r357">, DwarfRegNum<[357]>;
def R358 : AMDILReg<358, "r358">, DwarfRegNum<[358]>;
def R359 : AMDILReg<359, "r359">, DwarfRegNum<[359]>;
def R360 : AMDILReg<360, "r360">, DwarfRegNum<[360]>;
def R361 : AMDILReg<361, "r361">, DwarfRegNum<[361]>;
def R362 : AMDILReg<362, "r362">, DwarfRegNum<[362]>;
def R363 : AMDILReg<363, "r363">, DwarfRegNum<[363]>;
def R364 : AMDILReg<364, "r364">, DwarfRegNum<[364]>;
def R365 : AMDILReg<365, "r365">, DwarfRegNum<[365]>;
def R366 : AMDILReg<366, "r366">, DwarfRegNum<[366]>;
def R367 : AMDILReg<367, "r367">, DwarfRegNum<[367]>;
def R368 : AMDILReg<368, "r368">, DwarfRegNum<[368]>;
def R369 : AMDILReg<369, "r369">, DwarfRegNum<[369]>;
def R370 : AMDILReg<370, "r370">, DwarfRegNum<[370]>;
def R371 : AMDILReg<371, "r371">, DwarfRegNum<[371]>;
def R372 : AMDILReg<372, "r372">, DwarfRegNum<[372]>;
def R373 : AMDILReg<373, "r373">, DwarfRegNum<[373]>;
def R374 : AMDILReg<374, "r374">, DwarfRegNum<[374]>;
def R375 : AMDILReg<375, "r375">, DwarfRegNum<[375]>;
def R376 : AMDILReg<376, "r376">, DwarfRegNum<[376]>;
def R377 : AMDILReg<377, "r377">, DwarfRegNum<[377]>;
def R378 : AMDILReg<378, "r378">, DwarfRegNum<[378]>;
def R379 : AMDILReg<379, "r379">, DwarfRegNum<[379]>;
def R380 : AMDILReg<380, "r380">, DwarfRegNum<[380]>;
def R381 : AMDILReg<381, "r381">, DwarfRegNum<[381]>;
def R382 : AMDILReg<382, "r382">, DwarfRegNum<[382]>;
def R383 : AMDILReg<383, "r383">, DwarfRegNum<[383]>;
def R384 : AMDILReg<384, "r384">, DwarfRegNum<[384]>;
def R385 : AMDILReg<385, "r385">, DwarfRegNum<[385]>;
def R386 : AMDILReg<386, "r386">, DwarfRegNum<[386]>;
def R387 : AMDILReg<387, "r387">, DwarfRegNum<[387]>;
def R388 : AMDILReg<388, "r388">, DwarfRegNum<[388]>;
def R389 : AMDILReg<389, "r389">, DwarfRegNum<[389]>;
def R390 : AMDILReg<390, "r390">, DwarfRegNum<[390]>;
def R391 : AMDILReg<391, "r391">, DwarfRegNum<[391]>;
def R392 : AMDILReg<392, "r392">, DwarfRegNum<[392]>;
def R393 : AMDILReg<393, "r393">, DwarfRegNum<[393]>;
def R394 : AMDILReg<394, "r394">, DwarfRegNum<[394]>;
def R395 : AMDILReg<395, "r395">, DwarfRegNum<[395]>;
def R396 : AMDILReg<396, "r396">, DwarfRegNum<[396]>;
def R397 : AMDILReg<397, "r397">, DwarfRegNum<[397]>;
def R398 : AMDILReg<398, "r398">, DwarfRegNum<[398]>;
def R399 : AMDILReg<399, "r399">, DwarfRegNum<[399]>;
def R400 : AMDILReg<400, "r400">, DwarfRegNum<[400]>;
def R401 : AMDILReg<401, "r401">, DwarfRegNum<[401]>;
def R402 : AMDILReg<402, "r402">, DwarfRegNum<[402]>;
def R403 : AMDILReg<403, "r403">, DwarfRegNum<[403]>;
def R404 : AMDILReg<404, "r404">, DwarfRegNum<[404]>;
def R405 : AMDILReg<405, "r405">, DwarfRegNum<[405]>;
def R406 : AMDILReg<406, "r406">, DwarfRegNum<[406]>;
def R407 : AMDILReg<407, "r407">, DwarfRegNum<[407]>;
def R408 : AMDILReg<408, "r408">, DwarfRegNum<[408]>;
def R409 : AMDILReg<409, "r409">, DwarfRegNum<[409]>;
def R410 : AMDILReg<410, "r410">, DwarfRegNum<[410]>;
def R411 : AMDILReg<411, "r411">, DwarfRegNum<[411]>;
def R412 : AMDILReg<412, "r412">, DwarfRegNum<[412]>;
def R413 : AMDILReg<413, "r413">, DwarfRegNum<[413]>;
def R414 : AMDILReg<414, "r414">, DwarfRegNum<[414]>;
def R415 : AMDILReg<415, "r415">, DwarfRegNum<[415]>;
def R416 : AMDILReg<416, "r416">, DwarfRegNum<[416]>;
def R417 : AMDILReg<417, "r417">, DwarfRegNum<[417]>;
def R418 : AMDILReg<418, "r418">, DwarfRegNum<[418]>;
def R419 : AMDILReg<419, "r419">, DwarfRegNum<[419]>;
def R420 : AMDILReg<420, "r420">, DwarfRegNum<[420]>;
def R421 : AMDILReg<421, "r421">, DwarfRegNum<[421]>;
def R422 : AMDILReg<422, "r422">, DwarfRegNum<[422]>;
def R423 : AMDILReg<423, "r423">, DwarfRegNum<[423]>;
def R424 : AMDILReg<424, "r424">, DwarfRegNum<[424]>;
def R425 : AMDILReg<425, "r425">, DwarfRegNum<[425]>;
def R426 : AMDILReg<426, "r426">, DwarfRegNum<[426]>;
def R427 : AMDILReg<427, "r427">, DwarfRegNum<[427]>;
def R428 : AMDILReg<428, "r428">, DwarfRegNum<[428]>;
def R429 : AMDILReg<429, "r429">, DwarfRegNum<[429]>;
def R430 : AMDILReg<430, "r430">, DwarfRegNum<[430]>;
def R431 : AMDILReg<431, "r431">, DwarfRegNum<[431]>;
def R432 : AMDILReg<432, "r432">, DwarfRegNum<[432]>;
def R433 : AMDILReg<433, "r433">, DwarfRegNum<[433]>;
def R434 : AMDILReg<434, "r434">, DwarfRegNum<[434]>;
def R435 : AMDILReg<435, "r435">, DwarfRegNum<[435]>;
def R436 : AMDILReg<436, "r436">, DwarfRegNum<[436]>;
def R437 : AMDILReg<437, "r437">, DwarfRegNum<[437]>;
def R438 : AMDILReg<438, "r438">, DwarfRegNum<[438]>;
def R439 : AMDILReg<439, "r439">, DwarfRegNum<[439]>;
def R440 : AMDILReg<440, "r440">, DwarfRegNum<[440]>;
def R441 : AMDILReg<441, "r441">, DwarfRegNum<[441]>;
def R442 : AMDILReg<442, "r442">, DwarfRegNum<[442]>;
def R443 : AMDILReg<443, "r443">, DwarfRegNum<[443]>;
def R444 : AMDILReg<444, "r444">, DwarfRegNum<[444]>;
def R445 : AMDILReg<445, "r445">, DwarfRegNum<[445]>;
def R446 : AMDILReg<446, "r446">, DwarfRegNum<[446]>;
def R447 : AMDILReg<447, "r447">, DwarfRegNum<[447]>;
def R448 : AMDILReg<448, "r448">, DwarfRegNum<[448]>;
def R449 : AMDILReg<449, "r449">, DwarfRegNum<[449]>;
def R450 : AMDILReg<450, "r450">, DwarfRegNum<[450]>;
def R451 : AMDILReg<451, "r451">, DwarfRegNum<[451]>;
def R452 : AMDILReg<452, "r452">, DwarfRegNum<[452]>;
def R453 : AMDILReg<453, "r453">, DwarfRegNum<[453]>;
def R454 : AMDILReg<454, "r454">, DwarfRegNum<[454]>;
def R455 : AMDILReg<455, "r455">, DwarfRegNum<[455]>;
def R456 : AMDILReg<456, "r456">, DwarfRegNum<[456]>;
def R457 : AMDILReg<457, "r457">, DwarfRegNum<[457]>;
def R458 : AMDILReg<458, "r458">, DwarfRegNum<[458]>;
def R459 : AMDILReg<459, "r459">, DwarfRegNum<[459]>;
def R460 : AMDILReg<460, "r460">, DwarfRegNum<[460]>;
def R461 : AMDILReg<461, "r461">, DwarfRegNum<[461]>;
def R462 : AMDILReg<462, "r462">, DwarfRegNum<[462]>;
def R463 : AMDILReg<463, "r463">, DwarfRegNum<[463]>;
def R464 : AMDILReg<464, "r464">, DwarfRegNum<[464]>;
def R465 : AMDILReg<465, "r465">, DwarfRegNum<[465]>;
def R466 : AMDILReg<466, "r466">, DwarfRegNum<[466]>;
def R467 : AMDILReg<467, "r467">, DwarfRegNum<[467]>;
def R468 : AMDILReg<468, "r468">, DwarfRegNum<[468]>;
def R469 : AMDILReg<469, "r469">, DwarfRegNum<[469]>;
def R470 : AMDILReg<470, "r470">, DwarfRegNum<[470]>;
def R471 : AMDILReg<471, "r471">, DwarfRegNum<[471]>;
def R472 : AMDILReg<472, "r472">, DwarfRegNum<[472]>;
def R473 : AMDILReg<473, "r473">, DwarfRegNum<[473]>;
def R474 : AMDILReg<474, "r474">, DwarfRegNum<[474]>;
def R475 : AMDILReg<475, "r475">, DwarfRegNum<[475]>;
def R476 : AMDILReg<476, "r476">, DwarfRegNum<[476]>;
def R477 : AMDILReg<477, "r477">, DwarfRegNum<[477]>;
def R478 : AMDILReg<478, "r478">, DwarfRegNum<[478]>;
def R479 : AMDILReg<479, "r479">, DwarfRegNum<[479]>;
def R480 : AMDILReg<480, "r480">, DwarfRegNum<[480]>;
def R481 : AMDILReg<481, "r481">, DwarfRegNum<[481]>;
def R482 : AMDILReg<482, "r482">, DwarfRegNum<[482]>;
def R483 : AMDILReg<483, "r483">, DwarfRegNum<[483]>;
def R484 : AMDILReg<484, "r484">, DwarfRegNum<[484]>;
def R485 : AMDILReg<485, "r485">, DwarfRegNum<[485]>;
def R486 : AMDILReg<486, "r486">, DwarfRegNum<[486]>;
def R487 : AMDILReg<487, "r487">, DwarfRegNum<[487]>;
def R488 : AMDILReg<488, "r488">, DwarfRegNum<[488]>;
def R489 : AMDILReg<489, "r489">, DwarfRegNum<[489]>;
def R490 : AMDILReg<490, "r490">, DwarfRegNum<[490]>;
def R491 : AMDILReg<491, "r491">, DwarfRegNum<[491]>;
def R492 : AMDILReg<492, "r492">, DwarfRegNum<[492]>;
def R493 : AMDILReg<493, "r493">, DwarfRegNum<[493]>;
def R494 : AMDILReg<494, "r494">, DwarfRegNum<[494]>;
def R495 : AMDILReg<495, "r495">, DwarfRegNum<[495]>;
def R496 : AMDILReg<496, "r496">, DwarfRegNum<[496]>;
def R497 : AMDILReg<497, "r497">, DwarfRegNum<[497]>;
def R498 : AMDILReg<498, "r498">, DwarfRegNum<[498]>;
def R499 : AMDILReg<499, "r499">, DwarfRegNum<[499]>;
def R500 : AMDILReg<500, "r500">, DwarfRegNum<[500]>;
def R501 : AMDILReg<501, "r501">, DwarfRegNum<[501]>;
def R502 : AMDILReg<502, "r502">, DwarfRegNum<[502]>;
def R503 : AMDILReg<503, "r503">, DwarfRegNum<[503]>;
def R504 : AMDILReg<504, "r504">, DwarfRegNum<[504]>;
def R505 : AMDILReg<505, "r505">, DwarfRegNum<[505]>;
def R506 : AMDILReg<506, "r506">, DwarfRegNum<[506]>;
def R507 : AMDILReg<507, "r507">, DwarfRegNum<[507]>;
def R508 : AMDILReg<508, "r508">, DwarfRegNum<[508]>;
def R509 : AMDILReg<509, "r509">, DwarfRegNum<[509]>;
def R510 : AMDILReg<510, "r510">, DwarfRegNum<[510]>;
def R511 : AMDILReg<511, "r511">, DwarfRegNum<[511]>;
def R512 : AMDILReg<512, "r512">, DwarfRegNum<[512]>;
def R513 : AMDILReg<513, "r513">, DwarfRegNum<[513]>;
def R514 : AMDILReg<514, "r514">, DwarfRegNum<[514]>;
def R515 : AMDILReg<515, "r515">, DwarfRegNum<[515]>;
def R516 : AMDILReg<516, "r516">, DwarfRegNum<[516]>;
def R517 : AMDILReg<517, "r517">, DwarfRegNum<[517]>;
def R518 : AMDILReg<518, "r518">, DwarfRegNum<[518]>;
def R519 : AMDILReg<519, "r519">, DwarfRegNum<[519]>;
def R520 : AMDILReg<520, "r520">, DwarfRegNum<[520]>;
def R521 : AMDILReg<521, "r521">, DwarfRegNum<[521]>;
def R522 : AMDILReg<522, "r522">, DwarfRegNum<[522]>;
def R523 : AMDILReg<523, "r523">, DwarfRegNum<[523]>;
def R524 : AMDILReg<524, "r524">, DwarfRegNum<[524]>;
def R525 : AMDILReg<525, "r525">, DwarfRegNum<[525]>;
def R526 : AMDILReg<526, "r526">, DwarfRegNum<[526]>;
def R527 : AMDILReg<527, "r527">, DwarfRegNum<[527]>;
def R528 : AMDILReg<528, "r528">, DwarfRegNum<[528]>;
def R529 : AMDILReg<529, "r529">, DwarfRegNum<[529]>;
def R530 : AMDILReg<530, "r530">, DwarfRegNum<[530]>;
def R531 : AMDILReg<531, "r531">, DwarfRegNum<[531]>;
def R532 : AMDILReg<532, "r532">, DwarfRegNum<[532]>;
def R533 : AMDILReg<533, "r533">, DwarfRegNum<[533]>;
def R534 : AMDILReg<534, "r534">, DwarfRegNum<[534]>;
def R535 : AMDILReg<535, "r535">, DwarfRegNum<[535]>;
def R536 : AMDILReg<536, "r536">, DwarfRegNum<[536]>;
def R537 : AMDILReg<537, "r537">, DwarfRegNum<[537]>;
def R538 : AMDILReg<538, "r538">, DwarfRegNum<[538]>;
def R539 : AMDILReg<539, "r539">, DwarfRegNum<[539]>;
def R540 : AMDILReg<540, "r540">, DwarfRegNum<[540]>;
def R541 : AMDILReg<541, "r541">, DwarfRegNum<[541]>;
def R542 : AMDILReg<542, "r542">, DwarfRegNum<[542]>;
def R543 : AMDILReg<543, "r543">, DwarfRegNum<[543]>;
def R544 : AMDILReg<544, "r544">, DwarfRegNum<[544]>;
def R545 : AMDILReg<545, "r545">, DwarfRegNum<[545]>;
def R546 : AMDILReg<546, "r546">, DwarfRegNum<[546]>;
def R547 : AMDILReg<547, "r547">, DwarfRegNum<[547]>;
def R548 : AMDILReg<548, "r548">, DwarfRegNum<[548]>;
def R549 : AMDILReg<549, "r549">, DwarfRegNum<[549]>;
def R550 : AMDILReg<550, "r550">, DwarfRegNum<[550]>;
def R551 : AMDILReg<551, "r551">, DwarfRegNum<[551]>;
def R552 : AMDILReg<552, "r552">, DwarfRegNum<[552]>;
def R553 : AMDILReg<553, "r553">, DwarfRegNum<[553]>;
def R554 : AMDILReg<554, "r554">, DwarfRegNum<[554]>;
def R555 : AMDILReg<555, "r555">, DwarfRegNum<[555]>;
def R556 : AMDILReg<556, "r556">, DwarfRegNum<[556]>;
def R557 : AMDILReg<557, "r557">, DwarfRegNum<[557]>;
def R558 : AMDILReg<558, "r558">, DwarfRegNum<[558]>;
def R559 : AMDILReg<559, "r559">, DwarfRegNum<[559]>;
def R560 : AMDILReg<560, "r560">, DwarfRegNum<[560]>;
def R561 : AMDILReg<561, "r561">, DwarfRegNum<[561]>;
def R562 : AMDILReg<562, "r562">, DwarfRegNum<[562]>;
def R563 : AMDILReg<563, "r563">, DwarfRegNum<[563]>;
def R564 : AMDILReg<564, "r564">, DwarfRegNum<[564]>;
def R565 : AMDILReg<565, "r565">, DwarfRegNum<[565]>;
def R566 : AMDILReg<566, "r566">, DwarfRegNum<[566]>;
def R567 : AMDILReg<567, "r567">, DwarfRegNum<[567]>;
def R568 : AMDILReg<568, "r568">, DwarfRegNum<[568]>;
def R569 : AMDILReg<569, "r569">, DwarfRegNum<[569]>;
def R570 : AMDILReg<570, "r570">, DwarfRegNum<[570]>;
def R571 : AMDILReg<571, "r571">, DwarfRegNum<[571]>;
def R572 : AMDILReg<572, "r572">, DwarfRegNum<[572]>;
def R573 : AMDILReg<573, "r573">, DwarfRegNum<[573]>;
def R574 : AMDILReg<574, "r574">, DwarfRegNum<[574]>;
def R575 : AMDILReg<575, "r575">, DwarfRegNum<[575]>;
def R576 : AMDILReg<576, "r576">, DwarfRegNum<[576]>;
def R577 : AMDILReg<577, "r577">, DwarfRegNum<[577]>;
def R578 : AMDILReg<578, "r578">, DwarfRegNum<[578]>;
def R579 : AMDILReg<579, "r579">, DwarfRegNum<[579]>;
def R580 : AMDILReg<580, "r580">, DwarfRegNum<[580]>;
def R581 : AMDILReg<581, "r581">, DwarfRegNum<[581]>;
def R582 : AMDILReg<582, "r582">, DwarfRegNum<[582]>;
def R583 : AMDILReg<583, "r583">, DwarfRegNum<[583]>;
def R584 : AMDILReg<584, "r584">, DwarfRegNum<[584]>;
def R585 : AMDILReg<585, "r585">, DwarfRegNum<[585]>;
def R586 : AMDILReg<586, "r586">, DwarfRegNum<[586]>;
def R587 : AMDILReg<587, "r587">, DwarfRegNum<[587]>;
def R588 : AMDILReg<588, "r588">, DwarfRegNum<[588]>;
def R589 : AMDILReg<589, "r589">, DwarfRegNum<[589]>;
def R590 : AMDILReg<590, "r590">, DwarfRegNum<[590]>;
def R591 : AMDILReg<591, "r591">, DwarfRegNum<[591]>;
def R592 : AMDILReg<592, "r592">, DwarfRegNum<[592]>;
def R593 : AMDILReg<593, "r593">, DwarfRegNum<[593]>;
def R594 : AMDILReg<594, "r594">, DwarfRegNum<[594]>;
def R595 : AMDILReg<595, "r595">, DwarfRegNum<[595]>;
def R596 : AMDILReg<596, "r596">, DwarfRegNum<[596]>;
def R597 : AMDILReg<597, "r597">, DwarfRegNum<[597]>;
def R598 : AMDILReg<598, "r598">, DwarfRegNum<[598]>;
def R599 : AMDILReg<599, "r599">, DwarfRegNum<[599]>;
def R600 : AMDILReg<600, "r600">, DwarfRegNum<[600]>;
def R601 : AMDILReg<601, "r601">, DwarfRegNum<[601]>;
def R602 : AMDILReg<602, "r602">, DwarfRegNum<[602]>;
def R603 : AMDILReg<603, "r603">, DwarfRegNum<[603]>;
def R604 : AMDILReg<604, "r604">, DwarfRegNum<[604]>;
def R605 : AMDILReg<605, "r605">, DwarfRegNum<[605]>;
def R606 : AMDILReg<606, "r606">, DwarfRegNum<[606]>;
def R607 : AMDILReg<607, "r607">, DwarfRegNum<[607]>;
def R608 : AMDILReg<608, "r608">, DwarfRegNum<[608]>;
def R609 : AMDILReg<609, "r609">, DwarfRegNum<[609]>;
def R610 : AMDILReg<610, "r610">, DwarfRegNum<[610]>;
def R611 : AMDILReg<611, "r611">, DwarfRegNum<[611]>;
def R612 : AMDILReg<612, "r612">, DwarfRegNum<[612]>;
def R613 : AMDILReg<613, "r613">, DwarfRegNum<[613]>;
def R614 : AMDILReg<614, "r614">, DwarfRegNum<[614]>;
def R615 : AMDILReg<615, "r615">, DwarfRegNum<[615]>;
def R616 : AMDILReg<616, "r616">, DwarfRegNum<[616]>;
def R617 : AMDILReg<617, "r617">, DwarfRegNum<[617]>;
def R618 : AMDILReg<618, "r618">, DwarfRegNum<[618]>;
def R619 : AMDILReg<619, "r619">, DwarfRegNum<[619]>;
def R620 : AMDILReg<620, "r620">, DwarfRegNum<[620]>;
def R621 : AMDILReg<621, "r621">, DwarfRegNum<[621]>;
def R622 : AMDILReg<622, "r622">, DwarfRegNum<[622]>;
def R623 : AMDILReg<623, "r623">, DwarfRegNum<[623]>;
def R624 : AMDILReg<624, "r624">, DwarfRegNum<[624]>;
def R625 : AMDILReg<625, "r625">, DwarfRegNum<[625]>;
def R626 : AMDILReg<626, "r626">, DwarfRegNum<[626]>;
def R627 : AMDILReg<627, "r627">, DwarfRegNum<[627]>;
def R628 : AMDILReg<628, "r628">, DwarfRegNum<[628]>;
def R629 : AMDILReg<629, "r629">, DwarfRegNum<[629]>;
def R630 : AMDILReg<630, "r630">, DwarfRegNum<[630]>;
def R631 : AMDILReg<631, "r631">, DwarfRegNum<[631]>;
def R632 : AMDILReg<632, "r632">, DwarfRegNum<[632]>;
def R633 : AMDILReg<633, "r633">, DwarfRegNum<[633]>;
def R634 : AMDILReg<634, "r634">, DwarfRegNum<[634]>;
def R635 : AMDILReg<635, "r635">, DwarfRegNum<[635]>;
def R636 : AMDILReg<636, "r636">, DwarfRegNum<[636]>;
def R637 : AMDILReg<637, "r637">, DwarfRegNum<[637]>;
def R638 : AMDILReg<638, "r638">, DwarfRegNum<[638]>;
def R639 : AMDILReg<639, "r639">, DwarfRegNum<[639]>;
def R640 : AMDILReg<640, "r640">, DwarfRegNum<[640]>;
def R641 : AMDILReg<641, "r641">, DwarfRegNum<[641]>;
def R642 : AMDILReg<642, "r642">, DwarfRegNum<[642]>;
def R643 : AMDILReg<643, "r643">, DwarfRegNum<[643]>;
def R644 : AMDILReg<644, "r644">, DwarfRegNum<[644]>;
def R645 : AMDILReg<645, "r645">, DwarfRegNum<[645]>;
def R646 : AMDILReg<646, "r646">, DwarfRegNum<[646]>;
def R647 : AMDILReg<647, "r647">, DwarfRegNum<[647]>;
def R648 : AMDILReg<648, "r648">, DwarfRegNum<[648]>;
def R649 : AMDILReg<649, "r649">, DwarfRegNum<[649]>;
def R650 : AMDILReg<650, "r650">, DwarfRegNum<[650]>;
def R651 : AMDILReg<651, "r651">, DwarfRegNum<[651]>;
def R652 : AMDILReg<652, "r652">, DwarfRegNum<[652]>;
def R653 : AMDILReg<653, "r653">, DwarfRegNum<[653]>;
def R654 : AMDILReg<654, "r654">, DwarfRegNum<[654]>;
def R655 : AMDILReg<655, "r655">, DwarfRegNum<[655]>;
def R656 : AMDILReg<656, "r656">, DwarfRegNum<[656]>;
def R657 : AMDILReg<657, "r657">, DwarfRegNum<[657]>;
def R658 : AMDILReg<658, "r658">, DwarfRegNum<[658]>;
def R659 : AMDILReg<659, "r659">, DwarfRegNum<[659]>;
def R660 : AMDILReg<660, "r660">, DwarfRegNum<[660]>;
def R661 : AMDILReg<661, "r661">, DwarfRegNum<[661]>;
def R662 : AMDILReg<662, "r662">, DwarfRegNum<[662]>;
def R663 : AMDILReg<663, "r663">, DwarfRegNum<[663]>;
def R664 : AMDILReg<664, "r664">, DwarfRegNum<[664]>;
def R665 : AMDILReg<665, "r665">, DwarfRegNum<[665]>;
def R666 : AMDILReg<666, "r666">, DwarfRegNum<[666]>;
def R667 : AMDILReg<667, "r667">, DwarfRegNum<[667]>;
def R668 : AMDILReg<668, "r668">, DwarfRegNum<[668]>;
def R669 : AMDILReg<669, "r669">, DwarfRegNum<[669]>;
def R670 : AMDILReg<670, "r670">, DwarfRegNum<[670]>;
def R671 : AMDILReg<671, "r671">, DwarfRegNum<[671]>;
def R672 : AMDILReg<672, "r672">, DwarfRegNum<[672]>;
def R673 : AMDILReg<673, "r673">, DwarfRegNum<[673]>;
def R674 : AMDILReg<674, "r674">, DwarfRegNum<[674]>;
def R675 : AMDILReg<675, "r675">, DwarfRegNum<[675]>;
def R676 : AMDILReg<676, "r676">, DwarfRegNum<[676]>;
def R677 : AMDILReg<677, "r677">, DwarfRegNum<[677]>;
def R678 : AMDILReg<678, "r678">, DwarfRegNum<[678]>;
def R679 : AMDILReg<679, "r679">, DwarfRegNum<[679]>;
def R680 : AMDILReg<680, "r680">, DwarfRegNum<[680]>;
def R681 : AMDILReg<681, "r681">, DwarfRegNum<[681]>;
def R682 : AMDILReg<682, "r682">, DwarfRegNum<[682]>;
def R683 : AMDILReg<683, "r683">, DwarfRegNum<[683]>;
def R684 : AMDILReg<684, "r684">, DwarfRegNum<[684]>;
def R685 : AMDILReg<685, "r685">, DwarfRegNum<[685]>;
def R686 : AMDILReg<686, "r686">, DwarfRegNum<[686]>;
def R687 : AMDILReg<687, "r687">, DwarfRegNum<[687]>;
def R688 : AMDILReg<688, "r688">, DwarfRegNum<[688]>;
def R689 : AMDILReg<689, "r689">, DwarfRegNum<[689]>;
def R690 : AMDILReg<690, "r690">, DwarfRegNum<[690]>;
def R691 : AMDILReg<691, "r691">, DwarfRegNum<[691]>;
def R692 : AMDILReg<692, "r692">, DwarfRegNum<[692]>;
def R693 : AMDILReg<693, "r693">, DwarfRegNum<[693]>;
def R694 : AMDILReg<694, "r694">, DwarfRegNum<[694]>;
def R695 : AMDILReg<695, "r695">, DwarfRegNum<[695]>;
def R696 : AMDILReg<696, "r696">, DwarfRegNum<[696]>;
def R697 : AMDILReg<697, "r697">, DwarfRegNum<[697]>;
def R698 : AMDILReg<698, "r698">, DwarfRegNum<[698]>;
def R699 : AMDILReg<699, "r699">, DwarfRegNum<[699]>;
def R700 : AMDILReg<700, "r700">, DwarfRegNum<[700]>;
def R701 : AMDILReg<701, "r701">, DwarfRegNum<[701]>;
def R702 : AMDILReg<702, "r702">, DwarfRegNum<[702]>;
def R703 : AMDILReg<703, "r703">, DwarfRegNum<[703]>;
def R704 : AMDILReg<704, "r704">, DwarfRegNum<[704]>;
def R705 : AMDILReg<705, "r705">, DwarfRegNum<[705]>;
def R706 : AMDILReg<706, "r706">, DwarfRegNum<[706]>;
def R707 : AMDILReg<707, "r707">, DwarfRegNum<[707]>;
def R708 : AMDILReg<708, "r708">, DwarfRegNum<[708]>;
def R709 : AMDILReg<709, "r709">, DwarfRegNum<[709]>;
def R710 : AMDILReg<710, "r710">, DwarfRegNum<[710]>;
def R711 : AMDILReg<711, "r711">, DwarfRegNum<[711]>;
def R712 : AMDILReg<712, "r712">, DwarfRegNum<[712]>;
def R713 : AMDILReg<713, "r713">, DwarfRegNum<[713]>;
def R714 : AMDILReg<714, "r714">, DwarfRegNum<[714]>;
def R715 : AMDILReg<715, "r715">, DwarfRegNum<[715]>;
def R716 : AMDILReg<716, "r716">, DwarfRegNum<[716]>;
def R717 : AMDILReg<717, "r717">, DwarfRegNum<[717]>;
def R718 : AMDILReg<718, "r718">, DwarfRegNum<[718]>;
def R719 : AMDILReg<719, "r719">, DwarfRegNum<[719]>;
def R720 : AMDILReg<720, "r720">, DwarfRegNum<[720]>;
def R721 : AMDILReg<721, "r721">, DwarfRegNum<[721]>;
def R722 : AMDILReg<722, "r722">, DwarfRegNum<[722]>;
def R723 : AMDILReg<723, "r723">, DwarfRegNum<[723]>;
def R724 : AMDILReg<724, "r724">, DwarfRegNum<[724]>;
def R725 : AMDILReg<725, "r725">, DwarfRegNum<[725]>;
def R726 : AMDILReg<726, "r726">, DwarfRegNum<[726]>;
def R727 : AMDILReg<727, "r727">, DwarfRegNum<[727]>;
def R728 : AMDILReg<728, "r728">, DwarfRegNum<[728]>;
def R729 : AMDILReg<729, "r729">, DwarfRegNum<[729]>;
def R730 : AMDILReg<730, "r730">, DwarfRegNum<[730]>;
def R731 : AMDILReg<731, "r731">, DwarfRegNum<[731]>;
def R732 : AMDILReg<732, "r732">, DwarfRegNum<[732]>;
def R733 : AMDILReg<733, "r733">, DwarfRegNum<[733]>;
def R734 : AMDILReg<734, "r734">, DwarfRegNum<[734]>;
def R735 : AMDILReg<735, "r735">, DwarfRegNum<[735]>;
def R736 : AMDILReg<736, "r736">, DwarfRegNum<[736]>;
def R737 : AMDILReg<737, "r737">, DwarfRegNum<[737]>;
def R738 : AMDILReg<738, "r738">, DwarfRegNum<[738]>;
def R739 : AMDILReg<739, "r739">, DwarfRegNum<[739]>;
def R740 : AMDILReg<740, "r740">, DwarfRegNum<[740]>;
def R741 : AMDILReg<741, "r741">, DwarfRegNum<[741]>;
def R742 : AMDILReg<742, "r742">, DwarfRegNum<[742]>;
def R743 : AMDILReg<743, "r743">, DwarfRegNum<[743]>;
def R744 : AMDILReg<744, "r744">, DwarfRegNum<[744]>;
def R745 : AMDILReg<745, "r745">, DwarfRegNum<[745]>;
def R746 : AMDILReg<746, "r746">, DwarfRegNum<[746]>;
def R747 : AMDILReg<747, "r747">, DwarfRegNum<[747]>;
def R748 : AMDILReg<748, "r748">, DwarfRegNum<[748]>;
def R749 : AMDILReg<749, "r749">, DwarfRegNum<[749]>;
def R750 : AMDILReg<750, "r750">, DwarfRegNum<[750]>;
def R751 : AMDILReg<751, "r751">, DwarfRegNum<[751]>;
def R752 : AMDILReg<752, "r752">, DwarfRegNum<[752]>;
def R753 : AMDILReg<753, "r753">, DwarfRegNum<[753]>;
def R754 : AMDILReg<754, "r754">, DwarfRegNum<[754]>;
def R755 : AMDILReg<755, "r755">, DwarfRegNum<[755]>;
def R756 : AMDILReg<756, "r756">, DwarfRegNum<[756]>;
def R757 : AMDILReg<757, "r757">, DwarfRegNum<[757]>;
def R758 : AMDILReg<758, "r758">, DwarfRegNum<[758]>;
def R759 : AMDILReg<759, "r759">, DwarfRegNum<[759]>;
def R760 : AMDILReg<760, "r760">, DwarfRegNum<[760]>;
def R761 : AMDILReg<761, "r761">, DwarfRegNum<[761]>;
def R762 : AMDILReg<762, "r762">, DwarfRegNum<[762]>;
def R763 : AMDILReg<763, "r763">, DwarfRegNum<[763]>;
def R764 : AMDILReg<764, "r764">, DwarfRegNum<[764]>;
def R765 : AMDILReg<765, "r765">, DwarfRegNum<[765]>;
def R766 : AMDILReg<766, "r766">, DwarfRegNum<[766]>;
def R767 : AMDILReg<767, "r767">, DwarfRegNum<[767]>;
// All registers between 1000 and 1024 are reserved and cannot be used
// unless commented in this section
@ -831,134 +84,27 @@ def R1001: AMDILReg<1001, "r1001">, DwarfRegNum<[1001]>;
def MEM : AMDILReg<999, "mem">, DwarfRegNum<[999]>;
def RA : AMDILReg<998, "r998">, DwarfRegNum<[998]>;
def FP : AMDILReg<997, "r997">, DwarfRegNum<[997]>;
def GPRI8 : RegisterClass<"AMDIL", [i8], 8,
(add (sequence "R%u", 1, 767), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
{
let AltOrders = [(add (sequence "R%u", 1, 767))];
let AltOrderSelect = [{
return 1;
}];
}
def GPRV2I8 : RegisterClass<"AMDIL", [v2i8], 16,
(add (sequence "R%u", 1, 767), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
{
let AltOrders = [(add (sequence "R%u", 1, 767))];
let AltOrderSelect = [{
return 1;
}];
}
def GPRV4I8 : RegisterClass<"AMDIL", [v4i8], 32,
(add (sequence "R%u", 1, 767), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
{
let AltOrders = [(add (sequence "R%u", 1, 767))];
let AltOrderSelect = [{
return 1;
}];
}
def GPRI16 : RegisterClass<"AMDIL", [i16], 16,
(add (sequence "R%u", 1, 767), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
(add (sequence "R%u", 1, 20), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
{
let AltOrders = [(add (sequence "R%u", 1, 767))];
let AltOrderSelect = [{
return 1;
}];
}
def GPRV2I16 : RegisterClass<"AMDIL", [v2i16], 32,
(add (sequence "R%u", 1, 767), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
{
let AltOrders = [(add (sequence "R%u", 1, 767))];
let AltOrderSelect = [{
return 1;
}];
}
def GPRV4I16 : RegisterClass<"AMDIL", [v4i16], 64,
(add (sequence "R%u", 1, 767), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
{
let AltOrders = [(add (sequence "R%u", 1, 767))];
let AltOrders = [(add (sequence "R%u", 1, 20))];
let AltOrderSelect = [{
return 1;
}];
}
def GPRI32 : RegisterClass<"AMDIL", [i32], 32,
(add (sequence "R%u", 1, 767), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
(add (sequence "R%u", 1, 20), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
{
let AltOrders = [(add (sequence "R%u", 1, 767))];
let AltOrders = [(add (sequence "R%u", 1, 20))];
let AltOrderSelect = [{
return 1;
}];
}
def GPRF32 : RegisterClass<"AMDIL", [f32], 32,
(add (sequence "R%u", 1, 767), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
(add (sequence "R%u", 1, 20), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
{
let AltOrders = [(add (sequence "R%u", 1, 767))];
let AltOrders = [(add (sequence "R%u", 1, 20))];
let AltOrderSelect = [{
return 1;
}];
}
// For 64 bit integer emulation, the lower 32 bits are in x
// and the upper 32 bits are in y
def GPRI64 : RegisterClass<"AMDIL", [i64], 64,
(add (sequence "R%u", 1, 767), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
{
let AltOrders = [(add (sequence "R%u", 1, 767))];
let AltOrderSelect = [{
return 1;
}];
}
def GPRF64 : RegisterClass<"AMDIL", [f64], 64,
(add (sequence "R%u", 1, 767), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
{
let AltOrders = [(add (sequence "R%u", 1, 767))];
let AltOrderSelect = [{
return 1;
}];
}
def GPRV4F32 : RegisterClass<"AMDIL", [v4f32], 128,
(add (sequence "R%u", 1, 767), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
{
let AltOrders = [(add (sequence "R%u", 1, 767))];
let AltOrderSelect = [{
return 1;
}];
}
def GPRV4I32 : RegisterClass<"AMDIL", [v4i32], 128,
(add (sequence "R%u", 1, 767), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
{
let AltOrders = [(add (sequence "R%u", 1, 767))];
let AltOrderSelect = [{
return 1;
}];
}
def GPRV2I32 : RegisterClass<"AMDIL", [v2i32], 64,
(add (sequence "R%u", 1, 767), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
{
let AltOrders = [(add (sequence "R%u", 1, 767))];
let AltOrderSelect = [{
return 1;
}];
}
def GPRV2F32 : RegisterClass<"AMDIL", [v2f32], 64,
(add (sequence "R%u", 1, 767), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
{
let AltOrders = [(add (sequence "R%u", 1, 767))];
let AltOrderSelect = [{
return 1;
}];
}
def GPRV2I64 : RegisterClass<"AMDIL", [v2i64], 128,
(add (sequence "R%u", 1, 767), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
{
let AltOrders = [(add (sequence "R%u", 1, 767))];
let AltOrderSelect = [{
return 1;
}];
}
def GPRV2F64 : RegisterClass<"AMDIL", [v2f64], 128,
(add (sequence "R%u", 1, 767), RA, SP, T1, T2, T3, T4, T5, SDP, R1010, R1011, R1001, R1002, R1003, R1004, R1005, R1006, R1007, R1008, MEM, R1012)>
{
let AltOrders = [(add (sequence "R%u", 1, 767))];
let AltOrderSelect = [{
return 1;
}];
}

View file

@ -16,31 +16,20 @@
// Macros that are used to help with switch statements for various data types
// However, these macro's do not return anything unlike the second set below.
#define ExpandCaseTo32bitIntTypes(Instr) \
case Instr##_i8: \
case Instr##_i16: \
case Instr##_i32:
#define ExpandCaseTo32bitIntTruncTypes(Instr) \
case Instr##_i16i8: \
case Instr##_i32i8: \
case Instr##_i32i16:
#define ExpandCaseToIntTypes(Instr) \
ExpandCaseTo32bitIntTypes(Instr) \
case Instr##_i64:
ExpandCaseTo32bitIntTypes(Instr)
#define ExpandCaseToIntTruncTypes(Instr) \
ExpandCaseTo32bitIntTruncTypes(Instr) \
case Instr##_i64i8:\
case Instr##_i64i16:\
case Instr##_i64i32:\
ExpandCaseTo32bitIntTruncTypes(Instr)
#define ExpandCaseToFloatTypes(Instr) \
case Instr##_f32: \
case Instr##_f64:
#define ExpandCaseToFloatTruncTypes(Instr) \
case Instr##_f64f32:
case Instr##_f32:
#define ExpandCaseTo32bitScalarTypes(Instr) \
ExpandCaseTo32bitIntTypes(Instr) \
@ -54,80 +43,21 @@ ExpandCaseToIntTypes(Instr)
ExpandCaseToFloatTruncTypes(Instr) \
ExpandCaseToIntTruncTypes(Instr)
// Vector versions of above macros
#define ExpandCaseToVectorIntTypes(Instr) \
case Instr##_v2i8: \
case Instr##_v4i8: \
case Instr##_v2i16: \
case Instr##_v4i16: \
case Instr##_v2i32: \
case Instr##_v4i32: \
case Instr##_v2i64:
#define ExpandCaseToVectorIntTruncTypes(Instr) \
case Instr##_v2i16i8: \
case Instr##_v4i16i8: \
case Instr##_v2i32i8: \
case Instr##_v4i32i8: \
case Instr##_v2i32i16: \
case Instr##_v4i32i16: \
case Instr##_v2i64i8: \
case Instr##_v2i64i16: \
case Instr##_v2i64i32:
#define ExpandCaseToVectorFloatTypes(Instr) \
case Instr##_v2f32: \
case Instr##_v4f32: \
case Instr##_v2f64:
#define ExpandCaseToVectorFloatTruncTypes(Instr) \
case Instr##_v2f64f32:
#define ExpandCaseToVectorByteTypes(Instr) \
case Instr##_v4i8:\
case Instr##_v2i16: \
case Instr##_v4i16:
#define ExpandCaseToAllVectorTypes(Instr) \
ExpandCaseToVectorFloatTypes(Instr) \
ExpandCaseToVectorIntTypes(Instr)
#define ExpandCaseToAllVectorTruncTypes(Instr) \
ExpandCaseToVectorFloatTruncTypes(Instr) \
ExpandCaseToVectorIntTruncTypes(Instr)
#define ExpandCaseToAllTypes(Instr) \
ExpandCaseToAllVectorTypes(Instr) \
ExpandCaseToAllScalarTypes(Instr)
#define ExpandCaseToAllTruncTypes(Instr) \
ExpandCaseToAllVectorTruncTypes(Instr) \
ExpandCaseToAllScalarTruncTypes(Instr)
#define ExpandCaseToPackedTypes(Instr) \
case Instr##_v2i8: \
case Instr##_v4i8: \
case Instr##_v2i16: \
case Instr##_v4i16:
#define ExpandCaseToByteShortTypes(Instr) \
case Instr##_i8: \
case Instr##_i16: \
ExpandCaseToPackedTypes(Instr)
// Macros that expand into case statements with return values
// Macros that expand into statements with return values
#define ExpandCaseTo32bitIntReturn(Instr, Return) \
case Instr##_i8: return Return##_i8;\
case Instr##_i16: return Return##_i16;\
case Instr##_i32: return Return##_i32;
#define ExpandCaseToIntReturn(Instr, Return) \
ExpandCaseTo32bitIntReturn(Instr, Return) \
case Instr##_i64: return Return##_i64;
ExpandCaseTo32bitIntReturn(Instr, Return)
#define ExpandCaseToFloatReturn(Instr, Return) \
case Instr##_f32: return Return##_f32;\
case Instr##_f64: return Return##_f64;
#define ExpandCaseToAllScalarReturn(Instr, Return) \
ExpandCaseToFloatReturn(Instr, Return) \
@ -135,44 +65,11 @@ ExpandCaseToIntReturn(Instr, Return)
// These macros expand to common groupings of RegClass ID's
#define ExpandCaseTo1CompRegID \
case AMDIL::GPRI8RegClassID: \
case AMDIL::GPRI16RegClassID: \
case AMDIL::GPRI32RegClassID: \
case AMDIL::GPRF32RegClassID:
#define ExpandCaseTo2CompRegID \
case AMDIL::GPRI64RegClassID: \
case AMDIL::GPRF64RegClassID: \
case AMDIL::GPRV2I8RegClassID: \
case AMDIL::GPRV2I16RegClassID: \
case AMDIL::GPRV2I32RegClassID: \
case AMDIL::GPRV2F32RegClassID:
// Macros that expand to case statements for specific bitlengths
#define ExpandCaseTo8BitType(Instr) \
case Instr##_i8:
#define ExpandCaseTo16BitType(Instr) \
case Instr##_v2i8: \
case Instr##_i16:
#define ExpandCaseTo32BitType(Instr) \
case Instr##_v4i8: \
case Instr##_v2i16: \
case Instr##_i32: \
case Instr##_f32:
#define ExpandCaseTo64BitType(Instr) \
case Instr##_v4i16: \
case Instr##_v2i32: \
case Instr##_v2f32: \
case Instr##_i64: \
case Instr##_f64:
#define ExpandCaseTo128BitType(Instr) \
case Instr##_v4i32: \
case Instr##_v4f32: \
case Instr##_v2i64: \
case Instr##_v2f64:
#endif // AMDILUTILITYFUNCTIONS_H_

View file

@ -55,21 +55,4 @@ def BARRIER_REGION : BinaryOpNoRet<IL_OP_BARRIER_REGION, (outs),
(ins GPRI32:$flag, GPRI32:$id),
"fence_threads_gds",
[(int_AMDIL_barrier_region GPRI32:$flag, GPRI32:$id)]>;
def GET_REGION_ID : ILFormat<IL_OP_MOV, (outs GPRV4I32:$dst),
(ins), !strconcat(IL_OP_MOV.Text, " $dst, r1022.xyz0"),
[(set GPRV4I32:$dst, (int_AMDIL_get_region_id))]>;
def GET_REGION_LOCAL_ID : ILFormat<IL_OP_MOV, (outs GPRV4I32:$dst),
(ins), !strconcat(IL_OP_MOV.Text, " $dst, r1022.xyz0"),
[(set GPRV4I32:$dst, (int_AMDIL_get_region_local_id))]>;
def GET_REGION_SIZE : ILFormat<IL_OP_MOV, (outs GPRV4I32:$dst),
(ins), !strconcat(IL_OP_MOV.Text, " $dst, cb0[10].xyz0"),
[(set GPRV4I32:$dst, (int_AMDIL_get_region_size))]>;
def GET_NUM_REGIONS : ILFormat<IL_OP_MOV, (outs GPRV4I32:$dst),
(ins), !strconcat(IL_OP_MOV.Text, " $dst, cb0[11].xyz0"),
[(set GPRV4I32:$dst, (int_AMDIL_get_num_regions))]>;
}

View file

@ -55,9 +55,6 @@ const TargetRegisterClass *
R600RegisterInfo::getISARegClass(const TargetRegisterClass * rc) const
{
switch (rc->getID()) {
case AMDIL::GPRV4F32RegClassID:
case AMDIL::GPRV4I32RegClassID:
return &AMDIL::R600_Reg128RegClass;
case AMDIL::GPRF32RegClassID:
case AMDIL::GPRI32RegClassID:
return &AMDIL::R600_Reg32RegClass;

View file

@ -66,11 +66,10 @@ class SGPR_32 <bits<8> num, string name> : SIReg<name> {
}
class VGPR_32 <bits<9> num, string name, Register gprf32_alias> : SIReg<name> {
class VGPR_32 <bits<9> num, string name> : SIReg<name> {
field bits<9> Num;
let Num = num;
let Aliases = [gprf32_alias];
}
class SGPR_64 <bits<8> num, string name, list<Register> subregs> :
@ -132,13 +131,9 @@ for (my $i = 0; $i < $SGPR_COUNT; $i++) {
}
my @VGPR;
my @GPRF32;
for (my $i = 0; $i < $VGPR_COUNT; $i++) {
my $gprf32_num = $i + 1;
my $gprf32_name = "R$gprf32_num";
print "def VGPR$i : VGPR_32 <$i, \"VGPR$i\", $gprf32_name>;\n";
print "def VGPR$i : VGPR_32 <$i, \"VGPR$i\">;\n";
$VGPR[$i] = "VGPR$i";
$GPRF32[$i] = $gprf32_name;
}
print <<STRING;
@ -169,9 +164,7 @@ def VReg_32 : RegisterClass<"AMDIL", [f32, i32], 32,
>;
def AllReg_32 : RegisterClass<"AMDIL", [f32, i32], 32,
(add VReg_32,
SReg_32,
(sequence "R%u", 1, $VGPR_COUNT))
(add VReg_32, SReg_32)
>;
def CCReg : RegisterClass<"AMDIL", [f32], 32, (add VCC, SCC)>;

View file

@ -46,9 +46,6 @@ SIRegisterInfo::getISARegClass(const TargetRegisterClass * rc) const
switch (rc->getID()) {
case AMDIL::GPRF32RegClassID:
return &AMDIL::VReg_32RegClass;
case AMDIL::GPRV4F32RegClassID:
case AMDIL::GPRV4I32RegClassID:
return &AMDIL::VReg_128RegClass;
default: return rc;
}
}