@@ -144,8 +144,8 @@ define amdgpu_ps float @global_atomic_fadd_uni_address_div_value_scope_agent_sco
144
144
ret float %result
145
145
}
146
146
147
- define amdgpu_ps float @global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_structfp (ptr addrspace (1 ) inreg %ptr , float inreg %val ) #1 {
148
- ; IR-ITERATIVE-LABEL: @global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_structfp (
147
+ define amdgpu_ps float @global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_strictfp (ptr addrspace (1 ) inreg %ptr , float inreg %val ) #1 {
148
+ ; IR-ITERATIVE-LABEL: @global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_strictfp (
149
149
; IR-ITERATIVE-NEXT: [[TMP1:%.*]] = call i1 @llvm.amdgcn.ps.live() #[[ATTR7:[0-9]+]]
150
150
; IR-ITERATIVE-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP24:%.*]]
151
151
; IR-ITERATIVE: 2:
@@ -177,7 +177,7 @@ define amdgpu_ps float @global_atomic_fadd_uni_address_uni_value_one_as_scope_un
177
177
; IR-ITERATIVE-NEXT: [[TMP25:%.*]] = phi float [ poison, [[TMP0:%.*]] ], [ [[TMP23]], [[TMP16]] ]
178
178
; IR-ITERATIVE-NEXT: ret float [[TMP25]]
179
179
;
180
- ; IR-DPP-LABEL: @global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_structfp (
180
+ ; IR-DPP-LABEL: @global_atomic_fadd_uni_address_uni_value_one_as_scope_unsafe_strictfp (
181
181
; IR-DPP-NEXT: [[TMP1:%.*]] = call i1 @llvm.amdgcn.ps.live() #[[ATTR8:[0-9]+]]
182
182
; IR-DPP-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP24:%.*]]
183
183
; IR-DPP: 2:
@@ -213,8 +213,8 @@ define amdgpu_ps float @global_atomic_fadd_uni_address_uni_value_one_as_scope_un
213
213
ret float %result
214
214
}
215
215
216
- define amdgpu_ps float @global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_structfp (ptr addrspace (1 ) inreg %ptr , float %val ) #1 {
217
- ; IR-ITERATIVE-LABEL: @global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_structfp (
216
+ define amdgpu_ps float @global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_strictfp (ptr addrspace (1 ) inreg %ptr , float %val ) #1 {
217
+ ; IR-ITERATIVE-LABEL: @global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_strictfp (
218
218
; IR-ITERATIVE-NEXT: [[TMP1:%.*]] = call i1 @llvm.amdgcn.ps.live() #[[ATTR7]]
219
219
; IR-ITERATIVE-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP18:%.*]]
220
220
; IR-ITERATIVE: 2:
@@ -262,7 +262,7 @@ define amdgpu_ps float @global_atomic_fadd_uni_address_div_value_one_as_scope_un
262
262
; IR-ITERATIVE-NEXT: [[TMP34:%.*]] = icmp eq i32 [[TMP8]], 0
263
263
; IR-ITERATIVE-NEXT: br i1 [[TMP34]], label [[TMP10]], label [[TMP12]]
264
264
;
265
- ; IR-DPP-LABEL: @global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_structfp (
265
+ ; IR-DPP-LABEL: @global_atomic_fadd_uni_address_div_value_one_as_scope_unsafe_strictfp (
266
266
; IR-DPP-NEXT: [[TMP1:%.*]] = call i1 @llvm.amdgcn.ps.live() #[[ATTR8]]
267
267
; IR-DPP-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP40:%.*]]
268
268
; IR-DPP: 2:
@@ -618,8 +618,8 @@ define amdgpu_ps float @global_atomic_fmin_uni_address_div_value_agent_scope_uns
618
618
ret float %result
619
619
}
620
620
621
- define amdgpu_ps float @global_atomic_fmax_uni_address_uni_value_agent_scope_unsafe_structfp (ptr addrspace (1 ) inreg %ptr , float inreg %val ) #1 {
622
- ; IR-ITERATIVE-LABEL: @global_atomic_fmax_uni_address_uni_value_agent_scope_unsafe_structfp (
621
+ define amdgpu_ps float @global_atomic_fmax_uni_address_uni_value_agent_scope_unsafe_strictfp (ptr addrspace (1 ) inreg %ptr , float inreg %val ) #1 {
622
+ ; IR-ITERATIVE-LABEL: @global_atomic_fmax_uni_address_uni_value_agent_scope_unsafe_strictfp (
623
623
; IR-ITERATIVE-NEXT: [[TMP1:%.*]] = call i1 @llvm.amdgcn.ps.live() #[[ATTR7]]
624
624
; IR-ITERATIVE-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP20:%.*]]
625
625
; IR-ITERATIVE: 2:
@@ -647,7 +647,7 @@ define amdgpu_ps float @global_atomic_fmax_uni_address_uni_value_agent_scope_uns
647
647
; IR-ITERATIVE-NEXT: [[TMP21:%.*]] = phi float [ poison, [[TMP0:%.*]] ], [ [[TMP19]], [[TMP12]] ]
648
648
; IR-ITERATIVE-NEXT: ret float [[TMP21]]
649
649
;
650
- ; IR-DPP-LABEL: @global_atomic_fmax_uni_address_uni_value_agent_scope_unsafe_structfp (
650
+ ; IR-DPP-LABEL: @global_atomic_fmax_uni_address_uni_value_agent_scope_unsafe_strictfp (
651
651
; IR-DPP-NEXT: [[TMP1:%.*]] = call i1 @llvm.amdgcn.ps.live() #[[ATTR8]]
652
652
; IR-DPP-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP20:%.*]]
653
653
; IR-DPP: 2:
@@ -679,8 +679,8 @@ define amdgpu_ps float @global_atomic_fmax_uni_address_uni_value_agent_scope_uns
679
679
ret float %result
680
680
}
681
681
682
- define amdgpu_ps float @global_atomic_fmax_uni_address_div_value_agent_scope_unsafe_structfp (ptr addrspace (1 ) inreg %ptr , float %val ) #1 {
683
- ; IR-ITERATIVE-LABEL: @global_atomic_fmax_uni_address_div_value_agent_scope_unsafe_structfp (
682
+ define amdgpu_ps float @global_atomic_fmax_uni_address_div_value_agent_scope_unsafe_strictfp (ptr addrspace (1 ) inreg %ptr , float %val ) #1 {
683
+ ; IR-ITERATIVE-LABEL: @global_atomic_fmax_uni_address_div_value_agent_scope_unsafe_strictfp (
684
684
; IR-ITERATIVE-NEXT: [[TMP1:%.*]] = call i1 @llvm.amdgcn.ps.live() #[[ATTR7]]
685
685
; IR-ITERATIVE-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP18:%.*]]
686
686
; IR-ITERATIVE: 2:
@@ -728,7 +728,7 @@ define amdgpu_ps float @global_atomic_fmax_uni_address_div_value_agent_scope_uns
728
728
; IR-ITERATIVE-NEXT: [[TMP34:%.*]] = icmp eq i32 [[TMP8]], 0
729
729
; IR-ITERATIVE-NEXT: br i1 [[TMP34]], label [[TMP10]], label [[TMP12]]
730
730
;
731
- ; IR-DPP-LABEL: @global_atomic_fmax_uni_address_div_value_agent_scope_unsafe_structfp (
731
+ ; IR-DPP-LABEL: @global_atomic_fmax_uni_address_div_value_agent_scope_unsafe_strictfp (
732
732
; IR-DPP-NEXT: [[TMP1:%.*]] = call i1 @llvm.amdgcn.ps.live() #[[ATTR8]]
733
733
; IR-DPP-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP40:%.*]]
734
734
; IR-DPP: 2:
@@ -968,17 +968,17 @@ define amdgpu_ps float @global_atomic_fadd_div_address_div_value_agent_scope_uns
968
968
ret float %result
969
969
}
970
970
971
- define amdgpu_ps float @global_atomic_fadd_div_address_uni_value_one_as_scope_unsafe_structfp (ptr addrspace (1 ) %ptr , float inreg %val ) #1 {
972
- ; IR-LABEL: @global_atomic_fadd_div_address_uni_value_one_as_scope_unsafe_structfp (
971
+ define amdgpu_ps float @global_atomic_fadd_div_address_uni_value_one_as_scope_unsafe_strictfp (ptr addrspace (1 ) %ptr , float inreg %val ) #1 {
972
+ ; IR-LABEL: @global_atomic_fadd_div_address_uni_value_one_as_scope_unsafe_strictfp (
973
973
; IR-NEXT: [[RESULT:%.*]] = atomicrmw fadd ptr addrspace(1) [[PTR:%.*]], float [[VAL:%.*]] syncscope("one-as") monotonic, align 4
974
974
; IR-NEXT: ret float [[RESULT]]
975
975
;
976
976
%result = atomicrmw fadd ptr addrspace (1 ) %ptr , float %val syncscope("one-as" ) monotonic
977
977
ret float %result
978
978
}
979
979
980
- define amdgpu_ps float @global_atomic_fadd_div_address_div_value_one_as_scope_unsafe_structfp (ptr addrspace (1 ) %ptr , float %val ) #1 {
981
- ; IR-LABEL: @global_atomic_fadd_div_address_div_value_one_as_scope_unsafe_structfp (
980
+ define amdgpu_ps float @global_atomic_fadd_div_address_div_value_one_as_scope_unsafe_strictfp (ptr addrspace (1 ) %ptr , float %val ) #1 {
981
+ ; IR-LABEL: @global_atomic_fadd_div_address_div_value_one_as_scope_unsafe_strictfp (
982
982
; IR-NEXT: [[RESULT:%.*]] = atomicrmw fadd ptr addrspace(1) [[PTR:%.*]], float [[VAL:%.*]] syncscope("one-as") monotonic, align 4
983
983
; IR-NEXT: ret float [[RESULT]]
984
984
;
@@ -1022,17 +1022,17 @@ define amdgpu_ps float @global_atomic_fmin_div_address_div_value_agent_scope(ptr
1022
1022
ret float %result
1023
1023
}
1024
1024
1025
- define amdgpu_ps float @global_atomic_fmax_div_address_uni_value_agent_scope_unsafe_structfp (ptr addrspace (1 ) %ptr , float inreg %val ) #1 {
1026
- ; IR-LABEL: @global_atomic_fmax_div_address_uni_value_agent_scope_unsafe_structfp (
1025
+ define amdgpu_ps float @global_atomic_fmax_div_address_uni_value_agent_scope_unsafe_strictfp (ptr addrspace (1 ) %ptr , float inreg %val ) #1 {
1026
+ ; IR-LABEL: @global_atomic_fmax_div_address_uni_value_agent_scope_unsafe_strictfp (
1027
1027
; IR-NEXT: [[RESULT:%.*]] = atomicrmw fmax ptr addrspace(1) [[PTR:%.*]], float [[VAL:%.*]] syncscope("agent") monotonic, align 4
1028
1028
; IR-NEXT: ret float [[RESULT]]
1029
1029
;
1030
1030
%result = atomicrmw fmax ptr addrspace (1 ) %ptr , float %val syncscope("agent" ) monotonic
1031
1031
ret float %result
1032
1032
}
1033
1033
1034
- define amdgpu_ps float @global_atomic_fmax_div_address_div_value_agent_scope_unsafe_structfp (ptr addrspace (1 ) %ptr , float %val ) #1 {
1035
- ; IR-LABEL: @global_atomic_fmax_div_address_div_value_agent_scope_unsafe_structfp (
1034
+ define amdgpu_ps float @global_atomic_fmax_div_address_div_value_agent_scope_unsafe_strictfp (ptr addrspace (1 ) %ptr , float %val ) #1 {
1035
+ ; IR-LABEL: @global_atomic_fmax_div_address_div_value_agent_scope_unsafe_strictfp (
1036
1036
; IR-NEXT: [[RESULT:%.*]] = atomicrmw fmax ptr addrspace(1) [[PTR:%.*]], float [[VAL:%.*]] syncscope("agent") monotonic, align 4
1037
1037
; IR-NEXT: ret float [[RESULT]]
1038
1038
;
@@ -1110,8 +1110,8 @@ define amdgpu_ps double @global_atomic_fadd_double_uni_address_div_value_scope_a
1110
1110
ret double %result
1111
1111
}
1112
1112
1113
- define amdgpu_ps double @global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_structfp (ptr addrspace (1 ) inreg %ptr , double inreg %val ) #1 {
1114
- ; IR-ITERATIVE-LABEL: @global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_structfp (
1113
+ define amdgpu_ps double @global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_strictfp (ptr addrspace (1 ) inreg %ptr , double inreg %val ) #1 {
1114
+ ; IR-ITERATIVE-LABEL: @global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_strictfp (
1115
1115
; IR-ITERATIVE-NEXT: [[TMP1:%.*]] = call i1 @llvm.amdgcn.ps.live() #[[ATTR7]]
1116
1116
; IR-ITERATIVE-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP30:%.*]]
1117
1117
; IR-ITERATIVE: 2:
@@ -1149,7 +1149,7 @@ define amdgpu_ps double @global_atomic_fadd_double_uni_address_uni_value_one_as_
1149
1149
; IR-ITERATIVE-NEXT: [[TMP31:%.*]] = phi double [ poison, [[TMP0:%.*]] ], [ [[TMP29]], [[TMP16]] ]
1150
1150
; IR-ITERATIVE-NEXT: ret double [[TMP31]]
1151
1151
;
1152
- ; IR-DPP-LABEL: @global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_structfp (
1152
+ ; IR-DPP-LABEL: @global_atomic_fadd_double_uni_address_uni_value_one_as_scope_unsafe_strictfp (
1153
1153
; IR-DPP-NEXT: [[TMP1:%.*]] = call i1 @llvm.amdgcn.ps.live() #[[ATTR8]]
1154
1154
; IR-DPP-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP30:%.*]]
1155
1155
; IR-DPP: 2:
@@ -1191,8 +1191,8 @@ define amdgpu_ps double @global_atomic_fadd_double_uni_address_uni_value_one_as_
1191
1191
ret double %result
1192
1192
}
1193
1193
1194
- define amdgpu_ps double @global_atomic_fadd_double_uni_address_div_value_one_as_scope_unsafe_structfp (ptr addrspace (1 ) inreg %ptr , double %val ) #1 {
1195
- ; IR-LABEL: @global_atomic_fadd_double_uni_address_div_value_one_as_scope_unsafe_structfp (
1194
+ define amdgpu_ps double @global_atomic_fadd_double_uni_address_div_value_one_as_scope_unsafe_strictfp (ptr addrspace (1 ) inreg %ptr , double %val ) #1 {
1195
+ ; IR-LABEL: @global_atomic_fadd_double_uni_address_div_value_one_as_scope_unsafe_strictfp (
1196
1196
; IR-NEXT: [[RESULT:%.*]] = atomicrmw fadd ptr addrspace(1) [[PTR:%.*]], double [[VAL:%.*]] syncscope("one-as") monotonic, align 8
1197
1197
; IR-NEXT: ret double [[RESULT]]
1198
1198
;
@@ -1338,8 +1338,8 @@ define amdgpu_ps double @global_atomic_fmin_double_uni_address_div_value_agent_s
1338
1338
ret double %result
1339
1339
}
1340
1340
1341
- define amdgpu_ps double @global_atomic__fmax_double_uni_address_uni_value_agent_scope_unsafe_structfp (ptr addrspace (1 ) inreg %ptr , double inreg %val ) #1 {
1342
- ; IR-ITERATIVE-LABEL: @global_atomic__fmax_double_uni_address_uni_value_agent_scope_unsafe_structfp (
1341
+ define amdgpu_ps double @global_atomic__fmax_double_uni_address_uni_value_agent_scope_unsafe_strictfp (ptr addrspace (1 ) inreg %ptr , double inreg %val ) #1 {
1342
+ ; IR-ITERATIVE-LABEL: @global_atomic__fmax_double_uni_address_uni_value_agent_scope_unsafe_strictfp (
1343
1343
; IR-ITERATIVE-NEXT: [[TMP1:%.*]] = call i1 @llvm.amdgcn.ps.live() #[[ATTR7]]
1344
1344
; IR-ITERATIVE-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP26:%.*]]
1345
1345
; IR-ITERATIVE: 2:
@@ -1373,7 +1373,7 @@ define amdgpu_ps double @global_atomic__fmax_double_uni_address_uni_value_agent_
1373
1373
; IR-ITERATIVE-NEXT: [[TMP27:%.*]] = phi double [ poison, [[TMP0:%.*]] ], [ [[TMP25]], [[TMP12]] ]
1374
1374
; IR-ITERATIVE-NEXT: ret double [[TMP27]]
1375
1375
;
1376
- ; IR-DPP-LABEL: @global_atomic__fmax_double_uni_address_uni_value_agent_scope_unsafe_structfp (
1376
+ ; IR-DPP-LABEL: @global_atomic__fmax_double_uni_address_uni_value_agent_scope_unsafe_strictfp (
1377
1377
; IR-DPP-NEXT: [[TMP1:%.*]] = call i1 @llvm.amdgcn.ps.live() #[[ATTR8]]
1378
1378
; IR-DPP-NEXT: br i1 [[TMP1]], label [[TMP2:%.*]], label [[TMP26:%.*]]
1379
1379
; IR-DPP: 2:
@@ -1411,8 +1411,8 @@ define amdgpu_ps double @global_atomic__fmax_double_uni_address_uni_value_agent_
1411
1411
ret double %result
1412
1412
}
1413
1413
1414
- define amdgpu_ps double @global_atomic__fmax_double_uni_address_div_value_agent_scope_unsafe_structfp (ptr addrspace (1 ) inreg %ptr , double %val ) #1 {
1415
- ; IR-LABEL: @global_atomic__fmax_double_uni_address_div_value_agent_scope_unsafe_structfp (
1414
+ define amdgpu_ps double @global_atomic__fmax_double_uni_address_div_value_agent_scope_unsafe_strictfp (ptr addrspace (1 ) inreg %ptr , double %val ) #1 {
1415
+ ; IR-LABEL: @global_atomic__fmax_double_uni_address_div_value_agent_scope_unsafe_strictfp (
1416
1416
; IR-NEXT: [[RESULT:%.*]] = atomicrmw fmax ptr addrspace(1) [[PTR:%.*]], double [[VAL:%.*]] syncscope("agent") monotonic, align 8
1417
1417
; IR-NEXT: ret double [[RESULT]]
1418
1418
;
@@ -1528,17 +1528,17 @@ define amdgpu_ps double @global_atomic_fadd_double_div_address_div_value_agent_s
1528
1528
ret double %result
1529
1529
}
1530
1530
1531
- define amdgpu_ps double @global_atomic_fadd_double_div_address_uni_value_one_as_scope_unsafe_structfp (ptr addrspace (1 ) %ptr , double inreg %val ) #1 {
1532
- ; IR-LABEL: @global_atomic_fadd_double_div_address_uni_value_one_as_scope_unsafe_structfp (
1531
+ define amdgpu_ps double @global_atomic_fadd_double_div_address_uni_value_one_as_scope_unsafe_strictfp (ptr addrspace (1 ) %ptr , double inreg %val ) #1 {
1532
+ ; IR-LABEL: @global_atomic_fadd_double_div_address_uni_value_one_as_scope_unsafe_strictfp (
1533
1533
; IR-NEXT: [[RESULT:%.*]] = atomicrmw fadd ptr addrspace(1) [[PTR:%.*]], double [[VAL:%.*]] syncscope("one-as") monotonic, align 8
1534
1534
; IR-NEXT: ret double [[RESULT]]
1535
1535
;
1536
1536
%result = atomicrmw fadd ptr addrspace (1 ) %ptr , double %val syncscope("one-as" ) monotonic
1537
1537
ret double %result
1538
1538
}
1539
1539
1540
- define amdgpu_ps double @global_atomic_fadd_double_div_address_div_value_one_as_scope_unsafe_structfp (ptr addrspace (1 ) %ptr , double %val ) #1 {
1541
- ; IR-LABEL: @global_atomic_fadd_double_div_address_div_value_one_as_scope_unsafe_structfp (
1540
+ define amdgpu_ps double @global_atomic_fadd_double_div_address_div_value_one_as_scope_unsafe_strictfp (ptr addrspace (1 ) %ptr , double %val ) #1 {
1541
+ ; IR-LABEL: @global_atomic_fadd_double_div_address_div_value_one_as_scope_unsafe_strictfp (
1542
1542
; IR-NEXT: [[RESULT:%.*]] = atomicrmw fadd ptr addrspace(1) [[PTR:%.*]], double [[VAL:%.*]] syncscope("one-as") monotonic, align 8
1543
1543
; IR-NEXT: ret double [[RESULT]]
1544
1544
;
@@ -1582,17 +1582,17 @@ define amdgpu_ps double @global_atomic_fmin_double_div_address_div_value_agent_s
1582
1582
ret double %result
1583
1583
}
1584
1584
1585
- define amdgpu_ps double @global_atomic__fmax_double_div_address_uni_value_agent_scope_unsafe_structfp (ptr addrspace (1 ) %ptr , double inreg %val ) #1 {
1586
- ; IR-LABEL: @global_atomic__fmax_double_div_address_uni_value_agent_scope_unsafe_structfp (
1585
+ define amdgpu_ps double @global_atomic__fmax_double_div_address_uni_value_agent_scope_unsafe_strictfp (ptr addrspace (1 ) %ptr , double inreg %val ) #1 {
1586
+ ; IR-LABEL: @global_atomic__fmax_double_div_address_uni_value_agent_scope_unsafe_strictfp (
1587
1587
; IR-NEXT: [[RESULT:%.*]] = atomicrmw fmax ptr addrspace(1) [[PTR:%.*]], double [[VAL:%.*]] syncscope("agent") monotonic, align 8
1588
1588
; IR-NEXT: ret double [[RESULT]]
1589
1589
;
1590
1590
%result = atomicrmw fmax ptr addrspace (1 ) %ptr , double %val syncscope("agent" ) monotonic
1591
1591
ret double %result
1592
1592
}
1593
1593
1594
- define amdgpu_ps double @global_atomic__fmax_double_div_address_div_value_agent_scope_unsafe_structfp (ptr addrspace (1 ) %ptr , double %val ) #1 {
1595
- ; IR-LABEL: @global_atomic__fmax_double_div_address_div_value_agent_scope_unsafe_structfp (
1594
+ define amdgpu_ps double @global_atomic__fmax_double_div_address_div_value_agent_scope_unsafe_strictfp (ptr addrspace (1 ) %ptr , double %val ) #1 {
1595
+ ; IR-LABEL: @global_atomic__fmax_double_div_address_div_value_agent_scope_unsafe_strictfp (
1596
1596
; IR-NEXT: [[RESULT:%.*]] = atomicrmw fmax ptr addrspace(1) [[PTR:%.*]], double [[VAL:%.*]] syncscope("agent") monotonic, align 8
1597
1597
; IR-NEXT: ret double [[RESULT]]
1598
1598
;
0 commit comments