@@ -1934,6 +1934,10 @@ def MmaCode : Operand<i32> {
1934
1934
let PrintMethod = "printMmaCode";
1935
1935
}
1936
1936
1937
+ def Offseti32imm : Operand<i32> {
1938
+ let PrintMethod = "printOffseti32imm";
1939
+ }
1940
+
1937
1941
def SDTWrapper : SDTypeProfile<1, 1, [SDTCisSameAs<0, 1>, SDTCisPtrTy<0>]>;
1938
1942
def Wrapper : SDNode<"NVPTXISD::Wrapper", SDTWrapper>;
1939
1943
@@ -2482,21 +2486,21 @@ def ProxyReg :
2482
2486
2483
2487
let mayLoad = true in {
2484
2488
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];"),
2487
2491
[]>;
2488
2492
2489
2493
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),
2491
2495
!strconcat("ld.param.v2", opstr,
2492
- " \t{{$dst, $dst2}}, [retval0+ $b];"), []>;
2496
+ " \t{{$dst, $dst2}}, [retval0$b];"), []>;
2493
2497
2494
2498
class LoadParamV4MemInst<NVPTXRegClass regclass, string opstr> :
2495
2499
NVPTXInst<(outs regclass:$dst, regclass:$dst2, regclass:$dst3,
2496
2500
regclass:$dst4),
2497
- (ins i32imm :$b),
2501
+ (ins Offseti32imm :$b),
2498
2502
!strconcat("ld.param.v4", opstr,
2499
- " \t{{$dst, $dst2, $dst3, $dst4}}, [retval0+ $b];"),
2503
+ " \t{{$dst, $dst2, $dst3, $dst4}}, [retval0$b];"),
2500
2504
[]>;
2501
2505
}
2502
2506
@@ -2512,8 +2516,8 @@ let mayStore = true in {
2512
2516
if !or(support_imm, !isa<NVPTXRegClass>(op)) then
2513
2517
def _ # !if(!isa<NVPTXRegClass>(op), "r", "i")
2514
2518
: 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;",
2517
2521
[]>;
2518
2522
}
2519
2523
@@ -2524,8 +2528,8 @@ let mayStore = true in {
2524
2528
# !if(!isa<NVPTXRegClass>(op2), "r", "i")
2525
2529
: NVPTXInst<(outs),
2526
2530
(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}};",
2529
2533
[]>;
2530
2534
}
2531
2535
@@ -2541,29 +2545,29 @@ let mayStore = true in {
2541
2545
2542
2546
: NVPTXInst<(outs),
2543
2547
(ins op1:$val1, op2:$val2, op3:$val3, op4:$val4,
2544
- i32imm:$a, i32imm :$b),
2548
+ i32imm:$a, Offseti32imm :$b),
2545
2549
"st.param.v4" # opstr #
2546
- " \t[param$a+ $b], {{$val1, $val2, $val3, $val4}};",
2550
+ " \t[param$a$b], {{$val1, $val2, $val3, $val4}};",
2547
2551
[]>;
2548
2552
}
2549
2553
2550
2554
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;"),
2553
2557
[]>;
2554
2558
2555
2559
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),
2557
2561
!strconcat("st.param.v2", opstr,
2558
- " \t[func_retval0+ $a], {{$val, $val2}};"),
2562
+ " \t[func_retval0$a], {{$val, $val2}};"),
2559
2563
[]>;
2560
2564
2561
2565
class StoreRetvalV4Inst<NVPTXRegClass regclass, string opstr> :
2562
2566
NVPTXInst<(outs),
2563
2567
(ins regclass:$val, regclass:$val2, regclass:$val3,
2564
- regclass:$val4, i32imm :$a),
2568
+ regclass:$val4, Offseti32imm :$a),
2565
2569
!strconcat("st.param.v4", opstr,
2566
- " \t[func_retval0+ $a], {{$val, $val2, $val3, $val4}};"),
2570
+ " \t[func_retval0$a], {{$val, $val2, $val3, $val4}};"),
2567
2571
[]>;
2568
2572
}
2569
2573
@@ -2827,21 +2831,21 @@ multiclass LD<NVPTXRegClass regclass> {
2827
2831
def _ari : NVPTXInst<
2828
2832
(outs regclass:$dst),
2829
2833
(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),
2831
2835
"ld${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
2832
- "\t$dst, [$addr+ $offset];", []>;
2836
+ "\t$dst, [$addr$offset];", []>;
2833
2837
def _ari_64 : NVPTXInst<
2834
2838
(outs regclass:$dst),
2835
2839
(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),
2837
2841
"ld${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
2838
- "\t$dst, [$addr+ $offset];", []>;
2842
+ "\t$dst, [$addr$offset];", []>;
2839
2843
def _asi : NVPTXInst<
2840
2844
(outs regclass:$dst),
2841
2845
(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),
2843
2847
"ld${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
2844
- "\t$dst, [$addr+ $offset];", []>;
2848
+ "\t$dst, [$addr$offset];", []>;
2845
2849
}
2846
2850
2847
2851
let mayLoad=1, hasSideEffects=0 in {
@@ -2876,23 +2880,23 @@ multiclass ST<NVPTXRegClass regclass> {
2876
2880
(outs),
2877
2881
(ins regclass:$src, LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp,
2878
2882
LdStCode:$Vec, LdStCode:$Sign, i32imm:$toWidth, Int32Regs:$addr,
2879
- i32imm :$offset),
2883
+ Offseti32imm :$offset),
2880
2884
"st${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$toWidth"
2881
- " \t[$addr+ $offset], $src;", []>;
2885
+ " \t[$addr$offset], $src;", []>;
2882
2886
def _ari_64 : NVPTXInst<
2883
2887
(outs),
2884
2888
(ins regclass:$src, LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp,
2885
2889
LdStCode:$Vec, LdStCode:$Sign, i32imm:$toWidth, Int64Regs:$addr,
2886
- i32imm :$offset),
2890
+ Offseti32imm :$offset),
2887
2891
"st${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$toWidth"
2888
- " \t[$addr+ $offset], $src;", []>;
2892
+ " \t[$addr$offset], $src;", []>;
2889
2893
def _asi : NVPTXInst<
2890
2894
(outs),
2891
2895
(ins regclass:$src, LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp,
2892
2896
LdStCode:$Vec, LdStCode:$Sign, i32imm:$toWidth, imem:$addr,
2893
- i32imm :$offset),
2897
+ Offseti32imm :$offset),
2894
2898
"st${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$toWidth"
2895
- " \t[$addr+ $offset], $src;", []>;
2899
+ " \t[$addr$offset], $src;", []>;
2896
2900
}
2897
2901
2898
2902
let mayStore=1, hasSideEffects=0 in {
@@ -2929,21 +2933,21 @@ multiclass LD_VEC<NVPTXRegClass regclass> {
2929
2933
def _v2_ari : NVPTXInst<
2930
2934
(outs regclass:$dst1, regclass:$dst2),
2931
2935
(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),
2933
2937
"ld${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
2934
- "\t{{$dst1, $dst2}}, [$addr+ $offset];", []>;
2938
+ "\t{{$dst1, $dst2}}, [$addr$offset];", []>;
2935
2939
def _v2_ari_64 : NVPTXInst<
2936
2940
(outs regclass:$dst1, regclass:$dst2),
2937
2941
(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),
2939
2943
"ld${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
2940
- "\t{{$dst1, $dst2}}, [$addr+ $offset];", []>;
2944
+ "\t{{$dst1, $dst2}}, [$addr$offset];", []>;
2941
2945
def _v2_asi : NVPTXInst<
2942
2946
(outs regclass:$dst1, regclass:$dst2),
2943
2947
(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),
2945
2949
"ld${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
2946
- "\t{{$dst1, $dst2}}, [$addr+ $offset];", []>;
2950
+ "\t{{$dst1, $dst2}}, [$addr$offset];", []>;
2947
2951
def _v4_avar : NVPTXInst<
2948
2952
(outs regclass:$dst1, regclass:$dst2, regclass:$dst3, regclass:$dst4),
2949
2953
(ins LdStCode:$sem, LdStCode:$scope, LdStCode:$addsp, LdStCode:$Vec,
@@ -2965,21 +2969,21 @@ multiclass LD_VEC<NVPTXRegClass regclass> {
2965
2969
def _v4_ari : NVPTXInst<
2966
2970
(outs regclass:$dst1, regclass:$dst2, regclass:$dst3, regclass:$dst4),
2967
2971
(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),
2969
2973
"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];", []>;
2971
2975
def _v4_ari_64 : NVPTXInst<
2972
2976
(outs regclass:$dst1, regclass:$dst2, regclass:$dst3, regclass:$dst4),
2973
2977
(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),
2975
2979
"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];", []>;
2977
2981
def _v4_asi : NVPTXInst<
2978
2982
(outs regclass:$dst1, regclass:$dst2, regclass:$dst3, regclass:$dst4),
2979
2983
(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),
2981
2985
"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];", []>;
2983
2987
}
2984
2988
let mayLoad=1, hasSideEffects=0 in {
2985
2989
defm LDV_i8 : LD_VEC<Int16Regs>;
@@ -3016,23 +3020,23 @@ multiclass ST_VEC<NVPTXRegClass regclass> {
3016
3020
(outs),
3017
3021
(ins regclass:$src1, regclass:$src2, LdStCode:$sem, LdStCode:$scope,
3018
3022
LdStCode:$addsp, LdStCode:$Vec, LdStCode:$Sign, i32imm:$fromWidth,
3019
- Int32Regs:$addr, i32imm :$offset),
3023
+ Int32Regs:$addr, Offseti32imm :$offset),
3020
3024
"st${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
3021
- "\t[$addr+ $offset], {{$src1, $src2}};", []>;
3025
+ "\t[$addr$offset], {{$src1, $src2}};", []>;
3022
3026
def _v2_ari_64 : NVPTXInst<
3023
3027
(outs),
3024
3028
(ins regclass:$src1, regclass:$src2, LdStCode:$sem, LdStCode:$scope,
3025
3029
LdStCode:$addsp, LdStCode:$Vec, LdStCode:$Sign, i32imm:$fromWidth,
3026
- Int64Regs:$addr, i32imm :$offset),
3030
+ Int64Regs:$addr, Offseti32imm :$offset),
3027
3031
"st${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
3028
- "\t[$addr+ $offset], {{$src1, $src2}};", []>;
3032
+ "\t[$addr$offset], {{$src1, $src2}};", []>;
3029
3033
def _v2_asi : NVPTXInst<
3030
3034
(outs),
3031
3035
(ins regclass:$src1, regclass:$src2, LdStCode:$sem, LdStCode:$scope,
3032
3036
LdStCode:$addsp, LdStCode:$Vec, LdStCode:$Sign, i32imm:$fromWidth,
3033
- imem:$addr, i32imm :$offset),
3037
+ imem:$addr, Offseti32imm :$offset),
3034
3038
"st${sem:sem}${scope:scope}${addsp:addsp}${Vec:vec}.${Sign:sign}$fromWidth "
3035
- "\t[$addr+ $offset], {{$src1, $src2}};", []>;
3039
+ "\t[$addr$offset], {{$src1, $src2}};", []>;
3036
3040
def _v4_avar : NVPTXInst<
3037
3041
(outs),
3038
3042
(ins regclass:$src1, regclass:$src2, regclass:$src3, regclass:$src4,
@@ -3058,23 +3062,23 @@ multiclass ST_VEC<NVPTXRegClass regclass> {
3058
3062
(outs),
3059
3063
(ins regclass:$src1, regclass:$src2, regclass:$src3, regclass:$src4,
3060
3064
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),
3062
3066
"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}};", []>;
3064
3068
def _v4_ari_64 : NVPTXInst<
3065
3069
(outs),
3066
3070
(ins regclass:$src1, regclass:$src2, regclass:$src3, regclass:$src4,
3067
3071
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),
3069
3073
"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}};", []>;
3071
3075
def _v4_asi : NVPTXInst<
3072
3076
(outs),
3073
3077
(ins regclass:$src1, regclass:$src2, regclass:$src3, regclass:$src4,
3074
3078
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),
3076
3080
"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}};", []>;
3078
3082
}
3079
3083
3080
3084
let mayStore=1, hasSideEffects=0 in {
@@ -3903,4 +3907,4 @@ def atomic_thread_fence_seq_cst_cta :
3903
3907
Requires<[hasPTX<60>, hasSM<70>]>;
3904
3908
def atomic_thread_fence_acq_rel_cta :
3905
3909
NVPTXInst<(outs), (ins), "fence.acq_rel.cta;", []>,
3906
- Requires<[hasPTX<60>, hasSM<70>]>;
3910
+ Requires<[hasPTX<60>, hasSM<70>]>;
0 commit comments