@@ -1934,6 +1934,10 @@ def MmaCode : Operand<i32> {
19341934 let PrintMethod = "printMmaCode";
19351935}
19361936
1937+ def Offseti32imm : Operand<i32> {
1938+ let PrintMethod = "printOffseti32imm";
1939+ }
1940+
19371941def SDTWrapper : SDTypeProfile<1, 1, [SDTCisSameAs<0, 1>, SDTCisPtrTy<0>]>;
19381942def Wrapper : SDNode<"NVPTXISD::Wrapper", SDTWrapper>;
19391943
@@ -2482,21 +2486,21 @@ def ProxyReg :
24822486
24832487let mayLoad = true in {
24842488 class LoadParamMemInst<NVPTXRegClass regclass, string opstr> :
2485- NVPTXInst<(outs regclass:$dst), (ins i32imm :$b),
2486- !strconcat("ld.param", opstr, " \t$dst, [retval0+ $b];"),
2489+ NVPTXInst<(outs regclass:$dst), (ins Offseti32imm :$b),
2490+ !strconcat("ld.param", opstr, " \t$dst, [retval0$b];"),
24872491 []>;
24882492
24892493 class LoadParamV2MemInst<NVPTXRegClass regclass, string opstr> :
2490- NVPTXInst<(outs regclass:$dst, regclass:$dst2), (ins i32imm :$b),
2494+ NVPTXInst<(outs regclass:$dst, regclass:$dst2), (ins Offseti32imm :$b),
24912495 !strconcat("ld.param.v2", opstr,
2492- " \t{{$dst, $dst2}}, [retval0+ $b];"), []>;
2496+ " \t{{$dst, $dst2}}, [retval0$b];"), []>;
24932497
24942498 class LoadParamV4MemInst<NVPTXRegClass regclass, string opstr> :
24952499 NVPTXInst<(outs regclass:$dst, regclass:$dst2, regclass:$dst3,
24962500 regclass:$dst4),
2497- (ins i32imm :$b),
2501+ (ins Offseti32imm :$b),
24982502 !strconcat("ld.param.v4", opstr,
2499- " \t{{$dst, $dst2, $dst3, $dst4}}, [retval0+ $b];"),
2503+ " \t{{$dst, $dst2, $dst3, $dst4}}, [retval0$b];"),
25002504 []>;
25012505}
25022506
@@ -2512,8 +2516,8 @@ let mayStore = true in {
25122516 if !or(support_imm, !isa<NVPTXRegClass>(op)) then
25132517 def _ # !if(!isa<NVPTXRegClass>(op), "r", "i")
25142518 : NVPTXInst<(outs),
2515- (ins op:$val, i32imm:$a, i32imm :$b),
2516- "st.param" # opstr # " \t[param$a+ $b], $val;",
2519+ (ins op:$val, i32imm:$a, Offseti32imm :$b),
2520+ "st.param" # opstr # " \t[param$a$b], $val;",
25172521 []>;
25182522 }
25192523
@@ -2524,8 +2528,8 @@ let mayStore = true in {
25242528 # !if(!isa<NVPTXRegClass>(op2), "r", "i")
25252529 : NVPTXInst<(outs),
25262530 (ins op1:$val1, op2:$val2,
2527- i32imm:$a, i32imm :$b),
2528- "st.param.v2" # opstr # " \t[param$a+ $b], {{$val1, $val2}};",
2531+ i32imm:$a, Offseti32imm :$b),
2532+ "st.param.v2" # opstr # " \t[param$a$b], {{$val1, $val2}};",
25292533 []>;
25302534 }
25312535
@@ -2541,29 +2545,29 @@ let mayStore = true in {
25412545
25422546 : NVPTXInst<(outs),
25432547 (ins op1:$val1, op2:$val2, op3:$val3, op4:$val4,
2544- i32imm:$a, i32imm :$b),
2548+ i32imm:$a, Offseti32imm :$b),
25452549 "st.param.v4" # opstr #
2546- " \t[param$a+ $b], {{$val1, $val2, $val3, $val4}};",
2550+ " \t[param$a$b], {{$val1, $val2, $val3, $val4}};",
25472551 []>;
25482552 }
25492553
25502554 class StoreRetvalInst<NVPTXRegClass regclass, string opstr> :
2551- NVPTXInst<(outs), (ins regclass:$val, i32imm :$a),
2552- !strconcat("st.param", opstr, " \t[func_retval0+ $a], $val;"),
2555+ NVPTXInst<(outs), (ins regclass:$val, Offseti32imm :$a),
2556+ !strconcat("st.param", opstr, " \t[func_retval0$a], $val;"),
25532557 []>;
25542558
25552559 class StoreRetvalV2Inst<NVPTXRegClass regclass, string opstr> :
2556- NVPTXInst<(outs), (ins regclass:$val, regclass:$val2, i32imm :$a),
2560+ NVPTXInst<(outs), (ins regclass:$val, regclass:$val2, Offseti32imm :$a),
25572561 !strconcat("st.param.v2", opstr,
2558- " \t[func_retval0+ $a], {{$val, $val2}};"),
2562+ " \t[func_retval0$a], {{$val, $val2}};"),
25592563 []>;
25602564
25612565 class StoreRetvalV4Inst<NVPTXRegClass regclass, string opstr> :
25622566 NVPTXInst<(outs),
25632567 (ins regclass:$val, regclass:$val2, regclass:$val3,
2564- regclass:$val4, i32imm :$a),
2568+ regclass:$val4, Offseti32imm :$a),
25652569 !strconcat("st.param.v4", opstr,
2566- " \t[func_retval0+ $a], {{$val, $val2, $val3, $val4}};"),
2570+ " \t[func_retval0$a], {{$val, $val2, $val3, $val4}};"),
25672571 []>;
25682572}
25692573
@@ -2827,21 +2831,21 @@ multiclass LD<NVPTXRegClass regclass> {
28272831 def _ari : NVPTXInst<
28282832 (outs regclass:$dst),
28292833 (ins LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp, LdStCode:$Vec, LdStCode:$Sign,
2830- i32imm:$fromWidth, Int32Regs:$addr, i32imm :$offset),
2834+ i32imm:$fromWidth, Int32Regs:$addr, Offseti32imm :$offset),
28312835 "ld${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
2832- "\t$dst, [$addr+ $offset];", []>;
2836+ "\t$dst, [$addr$offset];", []>;
28332837 def _ari_64 : NVPTXInst<
28342838 (outs regclass:$dst),
28352839 (ins LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp, LdStCode:$Vec,
2836- LdStCode:$Sign, i32imm:$fromWidth, Int64Regs:$addr, i32imm :$offset),
2840+ LdStCode:$Sign, i32imm:$fromWidth, Int64Regs:$addr, Offseti32imm :$offset),
28372841 "ld${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
2838- "\t$dst, [$addr+ $offset];", []>;
2842+ "\t$dst, [$addr$offset];", []>;
28392843 def _asi : NVPTXInst<
28402844 (outs regclass:$dst),
28412845 (ins LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp, LdStCode:$Vec,
2842- LdStCode:$Sign, i32imm:$fromWidth, imem:$addr, i32imm :$offset),
2846+ LdStCode:$Sign, i32imm:$fromWidth, imem:$addr, Offseti32imm :$offset),
28432847 "ld${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
2844- "\t$dst, [$addr+ $offset];", []>;
2848+ "\t$dst, [$addr$offset];", []>;
28452849}
28462850
28472851let mayLoad=1, hasSideEffects=0 in {
@@ -2876,23 +2880,23 @@ multiclass ST<NVPTXRegClass regclass> {
28762880 (outs),
28772881 (ins regclass:$src, LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp,
28782882 LdStCode:$Vec, LdStCode:$Sign, i32imm:$toWidth, Int32Regs:$addr,
2879- i32imm :$offset),
2883+ Offseti32imm :$offset),
28802884 "st${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$toWidth"
2881- " \t[$addr+ $offset], $src;", []>;
2885+ " \t[$addr$offset], $src;", []>;
28822886 def _ari_64 : NVPTXInst<
28832887 (outs),
28842888 (ins regclass:$src, LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp,
28852889 LdStCode:$Vec, LdStCode:$Sign, i32imm:$toWidth, Int64Regs:$addr,
2886- i32imm :$offset),
2890+ Offseti32imm :$offset),
28872891 "st${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$toWidth"
2888- " \t[$addr+ $offset], $src;", []>;
2892+ " \t[$addr$offset], $src;", []>;
28892893 def _asi : NVPTXInst<
28902894 (outs),
28912895 (ins regclass:$src, LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp,
28922896 LdStCode:$Vec, LdStCode:$Sign, i32imm:$toWidth, imem:$addr,
2893- i32imm :$offset),
2897+ Offseti32imm :$offset),
28942898 "st${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$toWidth"
2895- " \t[$addr+ $offset], $src;", []>;
2899+ " \t[$addr$offset], $src;", []>;
28962900}
28972901
28982902let mayStore=1, hasSideEffects=0 in {
@@ -2929,21 +2933,21 @@ multiclass LD_VEC<NVPTXRegClass regclass> {
29292933 def _v2_ari : NVPTXInst<
29302934 (outs regclass:$dst1, regclass:$dst2),
29312935 (ins LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp, LdStCode:$Vec,
2932- LdStCode:$Sign, i32imm:$fromWidth, Int32Regs:$addr, i32imm :$offset),
2936+ LdStCode:$Sign, i32imm:$fromWidth, Int32Regs:$addr, Offseti32imm :$offset),
29332937 "ld${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
2934- "\t{{$dst1, $dst2}}, [$addr+ $offset];", []>;
2938+ "\t{{$dst1, $dst2}}, [$addr$offset];", []>;
29352939 def _v2_ari_64 : NVPTXInst<
29362940 (outs regclass:$dst1, regclass:$dst2),
29372941 (ins LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp, LdStCode:$Vec,
2938- LdStCode:$Sign, i32imm:$fromWidth, Int64Regs:$addr, i32imm :$offset),
2942+ LdStCode:$Sign, i32imm:$fromWidth, Int64Regs:$addr, Offseti32imm :$offset),
29392943 "ld${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
2940- "\t{{$dst1, $dst2}}, [$addr+ $offset];", []>;
2944+ "\t{{$dst1, $dst2}}, [$addr$offset];", []>;
29412945 def _v2_asi : NVPTXInst<
29422946 (outs regclass:$dst1, regclass:$dst2),
29432947 (ins LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp, LdStCode:$Vec,
2944- LdStCode:$Sign, i32imm:$fromWidth, imem:$addr, i32imm :$offset),
2948+ LdStCode:$Sign, i32imm:$fromWidth, imem:$addr, Offseti32imm :$offset),
29452949 "ld${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
2946- "\t{{$dst1, $dst2}}, [$addr+ $offset];", []>;
2950+ "\t{{$dst1, $dst2}}, [$addr$offset];", []>;
29472951 def _v4_avar : NVPTXInst<
29482952 (outs regclass:$dst1, regclass:$dst2, regclass:$dst3, regclass:$dst4),
29492953 (ins LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp, LdStCode:$Vec,
@@ -2965,21 +2969,21 @@ multiclass LD_VEC<NVPTXRegClass regclass> {
29652969 def _v4_ari : NVPTXInst<
29662970 (outs regclass:$dst1, regclass:$dst2, regclass:$dst3, regclass:$dst4),
29672971 (ins LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp, LdStCode:$Vec,
2968- LdStCode:$Sign, i32imm:$fromWidth, Int32Regs:$addr, i32imm :$offset),
2972+ LdStCode:$Sign, i32imm:$fromWidth, Int32Regs:$addr, Offseti32imm :$offset),
29692973 "ld${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
2970- "\t{{$dst1, $dst2, $dst3, $dst4}}, [$addr+ $offset];", []>;
2974+ "\t{{$dst1, $dst2, $dst3, $dst4}}, [$addr$offset];", []>;
29712975 def _v4_ari_64 : NVPTXInst<
29722976 (outs regclass:$dst1, regclass:$dst2, regclass:$dst3, regclass:$dst4),
29732977 (ins LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp, LdStCode:$Vec,
2974- LdStCode:$Sign, i32imm:$fromWidth, Int64Regs:$addr, i32imm :$offset),
2978+ LdStCode:$Sign, i32imm:$fromWidth, Int64Regs:$addr, Offseti32imm :$offset),
29752979 "ld${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
2976- "\t{{$dst1, $dst2, $dst3, $dst4}}, [$addr+ $offset];", []>;
2980+ "\t{{$dst1, $dst2, $dst3, $dst4}}, [$addr$offset];", []>;
29772981 def _v4_asi : NVPTXInst<
29782982 (outs regclass:$dst1, regclass:$dst2, regclass:$dst3, regclass:$dst4),
29792983 (ins LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp, LdStCode:$Vec,
2980- LdStCode:$Sign, i32imm:$fromWidth, imem:$addr, i32imm :$offset),
2984+ LdStCode:$Sign, i32imm:$fromWidth, imem:$addr, Offseti32imm :$offset),
29812985 "ld${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
2982- "\t{{$dst1, $dst2, $dst3, $dst4}}, [$addr+ $offset];", []>;
2986+ "\t{{$dst1, $dst2, $dst3, $dst4}}, [$addr$offset];", []>;
29832987}
29842988let mayLoad=1, hasSideEffects=0 in {
29852989 defm LDV_i8 : LD_VEC<Int16Regs>;
@@ -3016,23 +3020,23 @@ multiclass ST_VEC<NVPTXRegClass regclass> {
30163020 (outs),
30173021 (ins regclass:$src1, regclass:$src2, LdStCode:$sem, LdStCode:$scope,
30183022 LdStCode:$addsp, LdStCode:$Vec, LdStCode:$Sign, i32imm:$fromWidth,
3019- Int32Regs:$addr, i32imm :$offset),
3023+ Int32Regs:$addr, Offseti32imm :$offset),
30203024 "st${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
3021- "\t[$addr+ $offset], {{$src1, $src2}};", []>;
3025+ "\t[$addr$offset], {{$src1, $src2}};", []>;
30223026 def _v2_ari_64 : NVPTXInst<
30233027 (outs),
30243028 (ins regclass:$src1, regclass:$src2, LdStCode:$sem, LdStCode:$scope,
30253029 LdStCode:$addsp, LdStCode:$Vec, LdStCode:$Sign, i32imm:$fromWidth,
3026- Int64Regs:$addr, i32imm :$offset),
3030+ Int64Regs:$addr, Offseti32imm :$offset),
30273031 "st${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
3028- "\t[$addr+ $offset], {{$src1, $src2}};", []>;
3032+ "\t[$addr$offset], {{$src1, $src2}};", []>;
30293033 def _v2_asi : NVPTXInst<
30303034 (outs),
30313035 (ins regclass:$src1, regclass:$src2, LdStCode:$sem, LdStCode:$scope,
30323036 LdStCode:$addsp, LdStCode:$Vec, LdStCode:$Sign, i32imm:$fromWidth,
3033- imem:$addr, i32imm :$offset),
3037+ imem:$addr, Offseti32imm :$offset),
30343038 "st${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
3035- "\t[$addr+ $offset], {{$src1, $src2}};", []>;
3039+ "\t[$addr$offset], {{$src1, $src2}};", []>;
30363040 def _v4_avar : NVPTXInst<
30373041 (outs),
30383042 (ins regclass:$src1, regclass:$src2, regclass:$src3, regclass:$src4,
@@ -3058,23 +3062,23 @@ multiclass ST_VEC<NVPTXRegClass regclass> {
30583062 (outs),
30593063 (ins regclass:$src1, regclass:$src2, regclass:$src3, regclass:$src4,
30603064 LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp, LdStCode:$Vec,
3061- LdStCode:$Sign, i32imm:$fromWidth, Int32Regs:$addr, i32imm :$offset),
3065+ LdStCode:$Sign, i32imm:$fromWidth, Int32Regs:$addr, Offseti32imm :$offset),
30623066 "st${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
3063- "\t[$addr+ $offset], {{$src1, $src2, $src3, $src4}};", []>;
3067+ "\t[$addr$offset], {{$src1, $src2, $src3, $src4}};", []>;
30643068 def _v4_ari_64 : NVPTXInst<
30653069 (outs),
30663070 (ins regclass:$src1, regclass:$src2, regclass:$src3, regclass:$src4,
30673071 LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp, LdStCode:$Vec,
3068- LdStCode:$Sign, i32imm:$fromWidth, Int64Regs:$addr, i32imm :$offset),
3072+ LdStCode:$Sign, i32imm:$fromWidth, Int64Regs:$addr, Offseti32imm :$offset),
30693073 "st${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
3070- "\t[$addr+ $offset], {{$src1, $src2, $src3, $src4}};", []>;
3074+ "\t[$addr$offset], {{$src1, $src2, $src3, $src4}};", []>;
30713075 def _v4_asi : NVPTXInst<
30723076 (outs),
30733077 (ins regclass:$src1, regclass:$src2, regclass:$src3, regclass:$src4,
30743078 LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp, LdStCode:$Vec,
3075- LdStCode:$Sign, i32imm:$fromWidth, imem:$addr, i32imm :$offset),
3079+ LdStCode:$Sign, i32imm:$fromWidth, imem:$addr, Offseti32imm :$offset),
30763080 "st${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}"
3077- "$fromWidth \t[$addr+ $offset], {{$src1, $src2, $src3, $src4}};", []>;
3081+ "$fromWidth \t[$addr$offset], {{$src1, $src2, $src3, $src4}};", []>;
30783082}
30793083
30803084let mayStore=1, hasSideEffects=0 in {
@@ -3903,4 +3907,4 @@ def atomic_thread_fence_seq_cst_cta :
39033907 Requires<[hasPTX<60>, hasSM<70>]>;
39043908def atomic_thread_fence_acq_rel_cta :
39053909 NVPTXInst<(outs), (ins), "fence.acq_rel.cta;", []>,
3906- Requires<[hasPTX<60>, hasSM<70>]>;
3910+ Requires<[hasPTX<60>, hasSM<70>]>;
0 commit comments