@@ -1057,12 +1057,24 @@ def atomic_load_max_32_s: ATOMIC_SHARED_CHK<(ops node:$a, node:$b),
1057
1057
(atomic_load_max_32 node:$a, node:$b)>;
1058
1058
def atomic_load_max_32_gen: ATOMIC_GENERIC_CHK<(ops node:$a, node:$b),
1059
1059
(atomic_load_max_32 node:$a, node:$b)>;
1060
+ def atomic_load_max_64_g: ATOMIC_GLOBAL_CHK<(ops node:$a, node:$b)
1061
+ , (atomic_load_max_64 node:$a, node:$b)>;
1062
+ def atomic_load_max_64_s: ATOMIC_SHARED_CHK<(ops node:$a, node:$b),
1063
+ (atomic_load_max_64 node:$a, node:$b)>;
1064
+ def atomic_load_max_64_gen: ATOMIC_GENERIC_CHK<(ops node:$a, node:$b),
1065
+ (atomic_load_max_64 node:$a, node:$b)>;
1060
1066
def atomic_load_umax_32_g: ATOMIC_GLOBAL_CHK<(ops node:$a, node:$b),
1061
1067
(atomic_load_umax_32 node:$a, node:$b)>;
1062
1068
def atomic_load_umax_32_s: ATOMIC_SHARED_CHK<(ops node:$a, node:$b),
1063
1069
(atomic_load_umax_32 node:$a, node:$b)>;
1064
1070
def atomic_load_umax_32_gen: ATOMIC_GENERIC_CHK<(ops node:$a, node:$b),
1065
1071
(atomic_load_umax_32 node:$a, node:$b)>;
1072
+ def atomic_load_umax_64_g: ATOMIC_GLOBAL_CHK<(ops node:$a, node:$b),
1073
+ (atomic_load_umax_64 node:$a, node:$b)>;
1074
+ def atomic_load_umax_64_s: ATOMIC_SHARED_CHK<(ops node:$a, node:$b),
1075
+ (atomic_load_umax_64 node:$a, node:$b)>;
1076
+ def atomic_load_umax_64_gen: ATOMIC_GENERIC_CHK<(ops node:$a, node:$b),
1077
+ (atomic_load_umax_64 node:$a, node:$b)>;
1066
1078
1067
1079
defm INT_PTX_ATOM_LOAD_MAX_G_32 : F_ATOMIC_2<Int32Regs, ".global", ".s32",
1068
1080
".max", atomic_load_max_32_g, i32imm, imm, hasAtomRedG32>;
@@ -1072,6 +1084,14 @@ defm INT_PTX_ATOM_LOAD_MAX_GEN_32 : F_ATOMIC_2<Int32Regs, "", ".s32", ".max",
1072
1084
atomic_load_max_32_gen, i32imm, imm, hasAtomRedGen32>;
1073
1085
defm INT_PTX_ATOM_LOAD_MAX_GEN_32_USE_G : F_ATOMIC_2<Int32Regs, ".global",
1074
1086
".s32", ".max", atomic_load_max_32_gen, i32imm, imm, useAtomRedG32forGen32>;
1087
+ defm INT_PTX_ATOM_LOAD_MAX_G_64 : F_ATOMIC_2<Int64Regs, ".global", ".s64",
1088
+ ".max", atomic_load_max_64_g, i64imm, imm, hasAtomRedG64>;
1089
+ defm INT_PTX_ATOM_LOAD_MAX_S_64 : F_ATOMIC_2<Int64Regs, ".shared", ".s64",
1090
+ ".max", atomic_load_max_64_s, i64imm, imm, hasAtomRedS64>;
1091
+ defm INT_PTX_ATOM_LOAD_MAX_GEN_64 : F_ATOMIC_2<Int64Regs, "", ".s64", ".max",
1092
+ atomic_load_max_64_gen, i64imm, imm, hasAtomRedGen64>;
1093
+ defm INT_PTX_ATOM_LOAD_MAX_GEN_64_USE_G : F_ATOMIC_2<Int64Regs, ".global",
1094
+ ".s64", ".max", atomic_load_max_64_gen, i64imm, imm, useAtomRedG64forGen64>;
1075
1095
defm INT_PTX_ATOM_LOAD_UMAX_G_32 : F_ATOMIC_2<Int32Regs, ".global", ".u32",
1076
1096
".max", atomic_load_umax_32_g, i32imm, imm, hasAtomRedG32>;
1077
1097
defm INT_PTX_ATOM_LOAD_UMAX_S_32 : F_ATOMIC_2<Int32Regs, ".shared", ".u32",
@@ -1080,6 +1100,14 @@ defm INT_PTX_ATOM_LOAD_UMAX_GEN_32 : F_ATOMIC_2<Int32Regs, "", ".u32", ".max",
1080
1100
atomic_load_umax_32_gen, i32imm, imm, hasAtomRedGen32>;
1081
1101
defm INT_PTX_ATOM_LOAD_UMAX_GEN_32_USE_G : F_ATOMIC_2<Int32Regs, ".global",
1082
1102
".u32", ".max", atomic_load_umax_32_gen, i32imm, imm, useAtomRedG32forGen32>;
1103
+ defm INT_PTX_ATOM_LOAD_UMAX_G_64 : F_ATOMIC_2<Int64Regs, ".global", ".u64",
1104
+ ".max", atomic_load_umax_64_g, i64imm, imm, hasAtomRedG64>;
1105
+ defm INT_PTX_ATOM_LOAD_UMAX_S_64 : F_ATOMIC_2<Int64Regs, ".shared", ".u64",
1106
+ ".max", atomic_load_umax_64_s, i64imm, imm, hasAtomRedS64>;
1107
+ defm INT_PTX_ATOM_LOAD_UMAX_GEN_64 : F_ATOMIC_2<Int64Regs, "", ".u64", ".max",
1108
+ atomic_load_umax_64_gen, i64imm, imm, hasAtomRedGen64>;
1109
+ defm INT_PTX_ATOM_LOAD_UMAX_GEN_64_USE_G : F_ATOMIC_2<Int64Regs, ".global",
1110
+ ".u64", ".max", atomic_load_umax_64_gen, i64imm, imm, useAtomRedG64forGen64>;
1083
1111
1084
1112
// atom_min
1085
1113
@@ -1089,12 +1117,24 @@ def atomic_load_min_32_s: ATOMIC_SHARED_CHK<(ops node:$a, node:$b),
1089
1117
(atomic_load_min_32 node:$a, node:$b)>;
1090
1118
def atomic_load_min_32_gen: ATOMIC_GENERIC_CHK<(ops node:$a, node:$b),
1091
1119
(atomic_load_min_32 node:$a, node:$b)>;
1120
+ def atomic_load_min_64_g: ATOMIC_GLOBAL_CHK<(ops node:$a, node:$b),
1121
+ (atomic_load_min_64 node:$a, node:$b)>;
1122
+ def atomic_load_min_64_s: ATOMIC_SHARED_CHK<(ops node:$a, node:$b),
1123
+ (atomic_load_min_64 node:$a, node:$b)>;
1124
+ def atomic_load_min_64_gen: ATOMIC_GENERIC_CHK<(ops node:$a, node:$b),
1125
+ (atomic_load_min_64 node:$a, node:$b)>;
1092
1126
def atomic_load_umin_32_g: ATOMIC_GLOBAL_CHK<(ops node:$a, node:$b),
1093
1127
(atomic_load_umin_32 node:$a, node:$b)>;
1094
1128
def atomic_load_umin_32_s: ATOMIC_SHARED_CHK<(ops node:$a, node:$b),
1095
1129
(atomic_load_umin_32 node:$a, node:$b)>;
1096
1130
def atomic_load_umin_32_gen: ATOMIC_GENERIC_CHK<(ops node:$a, node:$b),
1097
1131
(atomic_load_umin_32 node:$a, node:$b)>;
1132
+ def atomic_load_umin_64_g: ATOMIC_GLOBAL_CHK<(ops node:$a, node:$b),
1133
+ (atomic_load_umin_64 node:$a, node:$b)>;
1134
+ def atomic_load_umin_64_s: ATOMIC_SHARED_CHK<(ops node:$a, node:$b),
1135
+ (atomic_load_umin_64 node:$a, node:$b)>;
1136
+ def atomic_load_umin_64_gen: ATOMIC_GENERIC_CHK<(ops node:$a, node:$b),
1137
+ (atomic_load_umin_64 node:$a, node:$b)>;
1098
1138
1099
1139
defm INT_PTX_ATOM_LOAD_MIN_G_32 : F_ATOMIC_2<Int32Regs, ".global", ".s32",
1100
1140
".min", atomic_load_min_32_g, i32imm, imm, hasAtomRedG32>;
@@ -1104,6 +1144,14 @@ defm INT_PTX_ATOM_LOAD_MIN_GEN_32 : F_ATOMIC_2<Int32Regs, "", ".s32", ".min",
1104
1144
atomic_load_min_32_gen, i32imm, imm, hasAtomRedGen32>;
1105
1145
defm INT_PTX_ATOM_LOAD_MIN_GEN_32_USE_G : F_ATOMIC_2<Int32Regs, ".global",
1106
1146
".s32", ".min", atomic_load_min_32_gen, i32imm, imm, useAtomRedG32forGen32>;
1147
+ defm INT_PTX_ATOM_LOAD_MIN_G_64 : F_ATOMIC_2<Int64Regs, ".global", ".s64",
1148
+ ".min", atomic_load_min_64_g, i64imm, imm, hasAtomRedG64>;
1149
+ defm INT_PTX_ATOM_LOAD_MIN_S_64 : F_ATOMIC_2<Int64Regs, ".shared", ".s64",
1150
+ ".min", atomic_load_min_64_s, i64imm, imm, hasAtomRedS64>;
1151
+ defm INT_PTX_ATOM_LOAD_MIN_GEN_64 : F_ATOMIC_2<Int64Regs, "", ".s64", ".min",
1152
+ atomic_load_min_64_gen, i64imm, imm, hasAtomRedGen64>;
1153
+ defm INT_PTX_ATOM_LOAD_MIN_GEN_64_USE_G : F_ATOMIC_2<Int64Regs, ".global",
1154
+ ".s64", ".min", atomic_load_min_64_gen, i64imm, imm, useAtomRedG64forGen64>;
1107
1155
defm INT_PTX_ATOM_LOAD_UMIN_G_32 : F_ATOMIC_2<Int32Regs, ".global", ".u32",
1108
1156
".min", atomic_load_umin_32_g, i32imm, imm, hasAtomRedG32>;
1109
1157
defm INT_PTX_ATOM_LOAD_UMIN_S_32 : F_ATOMIC_2<Int32Regs, ".shared", ".u32",
@@ -1112,6 +1160,14 @@ defm INT_PTX_ATOM_LOAD_UMIN_GEN_32 : F_ATOMIC_2<Int32Regs, "", ".u32", ".min",
1112
1160
atomic_load_umin_32_gen, i32imm, imm, hasAtomRedGen32>;
1113
1161
defm INT_PTX_ATOM_LOAD_UMIN_GEN_32_USE_G : F_ATOMIC_2<Int32Regs, ".global",
1114
1162
".u32", ".min", atomic_load_umin_32_gen, i32imm, imm, useAtomRedG32forGen32>;
1163
+ defm INT_PTX_ATOM_LOAD_UMIN_G_64 : F_ATOMIC_2<Int64Regs, ".global", ".u64",
1164
+ ".min", atomic_load_umin_64_g, i64imm, imm, hasAtomRedG64>;
1165
+ defm INT_PTX_ATOM_LOAD_UMIN_S_64 : F_ATOMIC_2<Int64Regs, ".shared", ".u64",
1166
+ ".min", atomic_load_umin_64_s, i64imm, imm, hasAtomRedS64>;
1167
+ defm INT_PTX_ATOM_LOAD_UMIN_GEN_64 : F_ATOMIC_2<Int64Regs, "", ".u64", ".min",
1168
+ atomic_load_umin_64_gen, i64imm, imm, hasAtomRedGen64>;
1169
+ defm INT_PTX_ATOM_LOAD_UMIN_GEN_64_USE_G : F_ATOMIC_2<Int64Regs, ".global",
1170
+ ".u64", ".min", atomic_load_umin_64_gen, i64imm, imm, useAtomRedG64forGen64>;
1115
1171
1116
1172
// atom_inc atom_dec
1117
1173
@@ -1153,6 +1209,12 @@ def atomic_load_and_32_s: ATOMIC_SHARED_CHK<(ops node:$a, node:$b),
1153
1209
(atomic_load_and_32 node:$a, node:$b)>;
1154
1210
def atomic_load_and_32_gen: ATOMIC_GENERIC_CHK<(ops node:$a, node:$b),
1155
1211
(atomic_load_and_32 node:$a, node:$b)>;
1212
+ def atomic_load_and_64_g: ATOMIC_GLOBAL_CHK<(ops node:$a, node:$b),
1213
+ (atomic_load_and_64 node:$a, node:$b)>;
1214
+ def atomic_load_and_64_s: ATOMIC_SHARED_CHK<(ops node:$a, node:$b),
1215
+ (atomic_load_and_64 node:$a, node:$b)>;
1216
+ def atomic_load_and_64_gen: ATOMIC_GENERIC_CHK<(ops node:$a, node:$b),
1217
+ (atomic_load_and_64 node:$a, node:$b)>;
1156
1218
1157
1219
defm INT_PTX_ATOM_AND_G_32 : F_ATOMIC_2<Int32Regs, ".global", ".b32", ".and",
1158
1220
atomic_load_and_32_g, i32imm, imm, hasAtomRedG32>;
@@ -1162,6 +1224,14 @@ defm INT_PTX_ATOM_AND_GEN_32 : F_ATOMIC_2<Int32Regs, "", ".b32", ".and",
1162
1224
atomic_load_and_32_gen, i32imm, imm, hasAtomRedGen32>;
1163
1225
defm INT_PTX_ATOM_AND_GEN_32_USE_G : F_ATOMIC_2<Int32Regs, ".global", ".b32",
1164
1226
".and", atomic_load_and_32_gen, i32imm, imm, useAtomRedG32forGen32>;
1227
+ defm INT_PTX_ATOM_AND_G_64 : F_ATOMIC_2<Int64Regs, ".global", ".b64", ".and",
1228
+ atomic_load_and_64_g, i64imm, imm, hasAtomRedG64>;
1229
+ defm INT_PTX_ATOM_AND_S_64 : F_ATOMIC_2<Int64Regs, ".shared", ".b64", ".and",
1230
+ atomic_load_and_64_s, i64imm, imm, hasAtomRedS64>;
1231
+ defm INT_PTX_ATOM_AND_GEN_64 : F_ATOMIC_2<Int64Regs, "", ".b64", ".and",
1232
+ atomic_load_and_64_gen, i64imm, imm, hasAtomRedGen64>;
1233
+ defm INT_PTX_ATOM_AND_GEN_64_USE_G : F_ATOMIC_2<Int64Regs, ".global", ".b64",
1234
+ ".and", atomic_load_and_64_gen, i64imm, imm, useAtomRedG64forGen64>;
1165
1235
1166
1236
// atom_or
1167
1237
@@ -1171,6 +1241,12 @@ def atomic_load_or_32_s: ATOMIC_SHARED_CHK<(ops node:$a, node:$b),
1171
1241
(atomic_load_or_32 node:$a, node:$b)>;
1172
1242
def atomic_load_or_32_gen: ATOMIC_GENERIC_CHK<(ops node:$a, node:$b),
1173
1243
(atomic_load_or_32 node:$a, node:$b)>;
1244
+ def atomic_load_or_64_g: ATOMIC_GLOBAL_CHK<(ops node:$a, node:$b),
1245
+ (atomic_load_or_64 node:$a, node:$b)>;
1246
+ def atomic_load_or_64_s: ATOMIC_SHARED_CHK<(ops node:$a, node:$b),
1247
+ (atomic_load_or_64 node:$a, node:$b)>;
1248
+ def atomic_load_or_64_gen: ATOMIC_GENERIC_CHK<(ops node:$a, node:$b),
1249
+ (atomic_load_or_64 node:$a, node:$b)>;
1174
1250
1175
1251
defm INT_PTX_ATOM_OR_G_32 : F_ATOMIC_2<Int32Regs, ".global", ".b32", ".or",
1176
1252
atomic_load_or_32_g, i32imm, imm, hasAtomRedG32>;
@@ -1180,6 +1256,14 @@ defm INT_PTX_ATOM_OR_GEN_32_USE_G : F_ATOMIC_2<Int32Regs, ".global", ".b32",
1180
1256
".or", atomic_load_or_32_gen, i32imm, imm, useAtomRedG32forGen32>;
1181
1257
defm INT_PTX_ATOM_OR_S_32 : F_ATOMIC_2<Int32Regs, ".shared", ".b32", ".or",
1182
1258
atomic_load_or_32_s, i32imm, imm, hasAtomRedS32>;
1259
+ defm INT_PTX_ATOM_OR_G_64 : F_ATOMIC_2<Int64Regs, ".global", ".b64", ".or",
1260
+ atomic_load_or_64_g, i64imm, imm, hasAtomRedG64>;
1261
+ defm INT_PTX_ATOM_OR_GEN_64 : F_ATOMIC_2<Int64Regs, "", ".b64", ".or",
1262
+ atomic_load_or_64_gen, i64imm, imm, hasAtomRedGen64>;
1263
+ defm INT_PTX_ATOM_OR_GEN_64_USE_G : F_ATOMIC_2<Int64Regs, ".global", ".b64",
1264
+ ".or", atomic_load_or_64_gen, i64imm, imm, useAtomRedG64forGen64>;
1265
+ defm INT_PTX_ATOM_OR_S_64 : F_ATOMIC_2<Int64Regs, ".shared", ".b64", ".or",
1266
+ atomic_load_or_64_s, i64imm, imm, hasAtomRedS64>;
1183
1267
1184
1268
// atom_xor
1185
1269
@@ -1189,6 +1273,12 @@ def atomic_load_xor_32_s: ATOMIC_SHARED_CHK<(ops node:$a, node:$b),
1189
1273
(atomic_load_xor_32 node:$a, node:$b)>;
1190
1274
def atomic_load_xor_32_gen: ATOMIC_GENERIC_CHK<(ops node:$a, node:$b),
1191
1275
(atomic_load_xor_32 node:$a, node:$b)>;
1276
+ def atomic_load_xor_64_g: ATOMIC_GLOBAL_CHK<(ops node:$a, node:$b),
1277
+ (atomic_load_xor_64 node:$a, node:$b)>;
1278
+ def atomic_load_xor_64_s: ATOMIC_SHARED_CHK<(ops node:$a, node:$b),
1279
+ (atomic_load_xor_64 node:$a, node:$b)>;
1280
+ def atomic_load_xor_64_gen: ATOMIC_GENERIC_CHK<(ops node:$a, node:$b),
1281
+ (atomic_load_xor_64 node:$a, node:$b)>;
1192
1282
1193
1283
defm INT_PTX_ATOM_XOR_G_32 : F_ATOMIC_2<Int32Regs, ".global", ".b32", ".xor",
1194
1284
atomic_load_xor_32_g, i32imm, imm, hasAtomRedG32>;
@@ -1198,6 +1288,14 @@ defm INT_PTX_ATOM_XOR_GEN_32 : F_ATOMIC_2<Int32Regs, "", ".b32", ".xor",
1198
1288
atomic_load_xor_32_gen, i32imm, imm, hasAtomRedGen32>;
1199
1289
defm INT_PTX_ATOM_XOR_GEN_32_USE_G : F_ATOMIC_2<Int32Regs, ".global", ".b32",
1200
1290
".xor", atomic_load_xor_32_gen, i32imm, imm, useAtomRedG32forGen32>;
1291
+ defm INT_PTX_ATOM_XOR_G_64 : F_ATOMIC_2<Int64Regs, ".global", ".b64", ".xor",
1292
+ atomic_load_xor_64_g, i64imm, imm, hasAtomRedG64>;
1293
+ defm INT_PTX_ATOM_XOR_S_64 : F_ATOMIC_2<Int64Regs, ".shared", ".b64", ".xor",
1294
+ atomic_load_xor_64_s, i64imm, imm, hasAtomRedS64>;
1295
+ defm INT_PTX_ATOM_XOR_GEN_64 : F_ATOMIC_2<Int64Regs, "", ".b64", ".xor",
1296
+ atomic_load_xor_64_gen, i64imm, imm, hasAtomRedGen64>;
1297
+ defm INT_PTX_ATOM_XOR_GEN_64_USE_G : F_ATOMIC_2<Int64Regs, ".global", ".b64",
1298
+ ".xor", atomic_load_xor_64_gen, i64imm, imm, useAtomRedG64forGen64>;
1201
1299
1202
1300
// atom_cas
1203
1301
0 commit comments