Skip to content

Commit db27a0a

Browse files
authored
[AMDGPU][InstCombine][InstSimplify] Pre-commit tests for PR130742 (#135305)
#130742 (comment)
1 parent c04d9d5 commit db27a0a

File tree

7 files changed

+137
-101
lines changed

7 files changed

+137
-101
lines changed

llvm/test/Analysis/MemoryDependenceAnalysis/InvariantLoad.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ alive:
135135

136136
; This is reduced test case catching regression in the first version of the
137137
; fix for invariant loads (https://reviews.llvm.org/D64405).
138-
define void @test4() {
138+
define void @test4() null_pointer_is_valid {
139139
; CHECK-LABEL: @test4(
140140
; CHECK-NEXT: entry:
141141
; CHECK-NEXT: [[TMP0:%.*]] = load float, ptr inttoptr (i64 8 to ptr), align 4

llvm/test/Analysis/ValueTracking/gep-negative-issue.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ target triple = "x86_64-unknown-linux-gnu"
55
%ArrayImpl = type { i64, ptr addrspace(100), [1 x i64], [1 x i64], [1 x i64], i64, i64, ptr addrspace(100), ptr addrspace(100), i8, i64 }
66
%_array = type { i64, ptr addrspace(100), i8 }
77

8-
define void @test(i64 %n_chpl) {
8+
define void @test(i64 %n_chpl) null_pointer_is_valid {
99
entry:
1010
; First section is some code
1111
%0 = getelementptr inbounds %_array, ptr null, i32 0, i32 1

llvm/test/CodeGen/AMDGPU/chain-hi-to-lo.ll

+60-32
Original file line numberDiff line numberDiff line change
@@ -402,39 +402,68 @@ bb:
402402
ret <2 x half> %result
403403
}
404404

405-
define <2 x half> @chain_hi_to_lo_flat() {
406-
; GCN-LABEL: chain_hi_to_lo_flat:
407-
; GCN: ; %bb.0: ; %bb
408-
; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
409-
; GCN-NEXT: v_mov_b32_e32 v0, 2
410-
; GCN-NEXT: v_mov_b32_e32 v1, 0
411-
; GCN-NEXT: flat_load_ushort v0, v[0:1]
412-
; GCN-NEXT: v_mov_b32_e32 v1, 0
413-
; GCN-NEXT: v_mov_b32_e32 v2, 0
414-
; GCN-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
415-
; GCN-NEXT: flat_load_short_d16_hi v0, v[1:2]
416-
; GCN-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
417-
; GCN-NEXT: s_setpc_b64 s[30:31]
405+
define <2 x half> @chain_hi_to_lo_flat(ptr inreg %ptr) {
406+
; GFX900-LABEL: chain_hi_to_lo_flat:
407+
; GFX900: ; %bb.0: ; %bb
408+
; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
409+
; GFX900-NEXT: v_mov_b32_e32 v0, s16
410+
; GFX900-NEXT: v_mov_b32_e32 v1, s17
411+
; GFX900-NEXT: flat_load_ushort v0, v[0:1] offset:2
412+
; GFX900-NEXT: v_mov_b32_e32 v1, 0
413+
; GFX900-NEXT: v_mov_b32_e32 v2, 0
414+
; GFX900-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
415+
; GFX900-NEXT: flat_load_short_d16_hi v0, v[1:2]
416+
; GFX900-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
417+
; GFX900-NEXT: s_setpc_b64 s[30:31]
418418
;
419-
; GFX10-LABEL: chain_hi_to_lo_flat:
420-
; GFX10: ; %bb.0: ; %bb
421-
; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
422-
; GFX10-NEXT: v_mov_b32_e32 v0, 2
423-
; GFX10-NEXT: v_mov_b32_e32 v1, 0
424-
; GFX10-NEXT: flat_load_ushort v0, v[0:1]
425-
; GFX10-NEXT: v_mov_b32_e32 v1, 0
426-
; GFX10-NEXT: v_mov_b32_e32 v2, 0
427-
; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
428-
; GFX10-NEXT: flat_load_short_d16_hi v0, v[1:2]
429-
; GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
430-
; GFX10-NEXT: s_setpc_b64 s[30:31]
419+
; FLATSCR-LABEL: chain_hi_to_lo_flat:
420+
; FLATSCR: ; %bb.0: ; %bb
421+
; FLATSCR-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
422+
; FLATSCR-NEXT: v_mov_b32_e32 v0, s0
423+
; FLATSCR-NEXT: v_mov_b32_e32 v1, s1
424+
; FLATSCR-NEXT: flat_load_ushort v0, v[0:1] offset:2
425+
; FLATSCR-NEXT: v_mov_b32_e32 v1, 0
426+
; FLATSCR-NEXT: v_mov_b32_e32 v2, 0
427+
; FLATSCR-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
428+
; FLATSCR-NEXT: flat_load_short_d16_hi v0, v[1:2]
429+
; FLATSCR-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
430+
; FLATSCR-NEXT: s_setpc_b64 s[30:31]
431+
;
432+
; GFX10_DEFAULT-LABEL: chain_hi_to_lo_flat:
433+
; GFX10_DEFAULT: ; %bb.0: ; %bb
434+
; GFX10_DEFAULT-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
435+
; GFX10_DEFAULT-NEXT: s_add_u32 s4, s16, 2
436+
; GFX10_DEFAULT-NEXT: s_addc_u32 s5, s17, 0
437+
; GFX10_DEFAULT-NEXT: v_mov_b32_e32 v0, s4
438+
; GFX10_DEFAULT-NEXT: v_mov_b32_e32 v1, s5
439+
; GFX10_DEFAULT-NEXT: flat_load_ushort v0, v[0:1]
440+
; GFX10_DEFAULT-NEXT: v_mov_b32_e32 v1, 0
441+
; GFX10_DEFAULT-NEXT: v_mov_b32_e32 v2, 0
442+
; GFX10_DEFAULT-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
443+
; GFX10_DEFAULT-NEXT: flat_load_short_d16_hi v0, v[1:2]
444+
; GFX10_DEFAULT-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
445+
; GFX10_DEFAULT-NEXT: s_setpc_b64 s[30:31]
446+
;
447+
; FLATSCR_GFX10-LABEL: chain_hi_to_lo_flat:
448+
; FLATSCR_GFX10: ; %bb.0: ; %bb
449+
; FLATSCR_GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
450+
; FLATSCR_GFX10-NEXT: s_add_u32 s0, s0, 2
451+
; FLATSCR_GFX10-NEXT: s_addc_u32 s1, s1, 0
452+
; FLATSCR_GFX10-NEXT: v_mov_b32_e32 v0, s0
453+
; FLATSCR_GFX10-NEXT: v_mov_b32_e32 v1, s1
454+
; FLATSCR_GFX10-NEXT: flat_load_ushort v0, v[0:1]
455+
; FLATSCR_GFX10-NEXT: v_mov_b32_e32 v1, 0
456+
; FLATSCR_GFX10-NEXT: v_mov_b32_e32 v2, 0
457+
; FLATSCR_GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
458+
; FLATSCR_GFX10-NEXT: flat_load_short_d16_hi v0, v[1:2]
459+
; FLATSCR_GFX10-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
460+
; FLATSCR_GFX10-NEXT: s_setpc_b64 s[30:31]
431461
;
432462
; GFX11-TRUE16-LABEL: chain_hi_to_lo_flat:
433463
; GFX11-TRUE16: ; %bb.0: ; %bb
434464
; GFX11-TRUE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
435-
; GFX11-TRUE16-NEXT: v_mov_b32_e32 v0, 2
436-
; GFX11-TRUE16-NEXT: v_mov_b32_e32 v1, 0
437-
; GFX11-TRUE16-NEXT: flat_load_d16_b16 v0, v[0:1]
465+
; GFX11-TRUE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
466+
; GFX11-TRUE16-NEXT: flat_load_d16_b16 v0, v[0:1] offset:2
438467
; GFX11-TRUE16-NEXT: v_mov_b32_e32 v1, 0
439468
; GFX11-TRUE16-NEXT: v_mov_b32_e32 v2, 0
440469
; GFX11-TRUE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
@@ -445,17 +474,16 @@ define <2 x half> @chain_hi_to_lo_flat() {
445474
; GFX11-FAKE16-LABEL: chain_hi_to_lo_flat:
446475
; GFX11-FAKE16: ; %bb.0: ; %bb
447476
; GFX11-FAKE16-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
448-
; GFX11-FAKE16-NEXT: v_mov_b32_e32 v0, 2
449-
; GFX11-FAKE16-NEXT: v_mov_b32_e32 v1, 0
450-
; GFX11-FAKE16-NEXT: flat_load_u16 v0, v[0:1]
477+
; GFX11-FAKE16-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
478+
; GFX11-FAKE16-NEXT: flat_load_u16 v0, v[0:1] offset:2
451479
; GFX11-FAKE16-NEXT: v_mov_b32_e32 v1, 0
452480
; GFX11-FAKE16-NEXT: v_mov_b32_e32 v2, 0
453481
; GFX11-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
454482
; GFX11-FAKE16-NEXT: flat_load_d16_hi_b16 v0, v[1:2]
455483
; GFX11-FAKE16-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
456484
; GFX11-FAKE16-NEXT: s_setpc_b64 s[30:31]
457485
bb:
458-
%gep_lo = getelementptr inbounds half, ptr null, i64 1
486+
%gep_lo = getelementptr inbounds half, ptr %ptr, i64 1
459487
%load_lo = load half, ptr %gep_lo
460488
%load_hi = load half, ptr null
461489

llvm/test/CodeGen/AMDGPU/memcpy-crash-issue63986.ll

+71-63
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,28 @@
33

44
%"struct.__llvm_libc::rpc::Buffer" = type { [8 x i64] }
55

6-
define void @issue63986(i64 %0, i64 %idxprom) {
6+
define void @issue63986(i64 %0, i64 %idxprom, ptr inreg %ptr) {
77
; CHECK-LABEL: issue63986:
88
; CHECK: ; %bb.0: ; %entry
99
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1010
; CHECK-NEXT: v_lshlrev_b64 v[4:5], 6, v[2:3]
11+
; CHECK-NEXT: v_mov_b32_e32 v6, s17
12+
; CHECK-NEXT: v_add_co_u32_e32 v8, vcc, s16, v4
13+
; CHECK-NEXT: v_addc_co_u32_e32 v9, vcc, v6, v5, vcc
1114
; CHECK-NEXT: s_mov_b64 s[4:5], 0
1215
; CHECK-NEXT: .LBB0_1: ; %loop-memcpy-expansion
1316
; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1
1417
; CHECK-NEXT: v_mov_b32_e32 v7, s5
1518
; CHECK-NEXT: v_mov_b32_e32 v6, s4
16-
; CHECK-NEXT: flat_load_dwordx4 v[6:9], v[6:7]
17-
; CHECK-NEXT: v_add_co_u32_e32 v10, vcc, s4, v4
19+
; CHECK-NEXT: flat_load_dwordx4 v[10:13], v[6:7]
20+
; CHECK-NEXT: v_add_co_u32_e32 v6, vcc, s4, v8
1821
; CHECK-NEXT: s_add_u32 s4, s4, 16
19-
; CHECK-NEXT: v_mov_b32_e32 v11, s5
2022
; CHECK-NEXT: s_addc_u32 s5, s5, 0
2123
; CHECK-NEXT: v_cmp_ge_u64_e64 s[6:7], s[4:5], 32
22-
; CHECK-NEXT: v_addc_co_u32_e32 v11, vcc, v5, v11, vcc
24+
; CHECK-NEXT: v_addc_co_u32_e32 v7, vcc, v9, v7, vcc
2325
; CHECK-NEXT: s_and_b64 vcc, exec, s[6:7]
2426
; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
25-
; CHECK-NEXT: flat_store_dwordx4 v[10:11], v[6:9]
27+
; CHECK-NEXT: flat_store_dwordx4 v[6:7], v[10:13]
2628
; CHECK-NEXT: s_cbranch_vccz .LBB0_1
2729
; CHECK-NEXT: ; %bb.2: ; %loop-memcpy-residual-header
2830
; CHECK-NEXT: s_branch .LBB0_4
@@ -31,110 +33,116 @@ define void @issue63986(i64 %0, i64 %idxprom) {
3133
; CHECK-NEXT: s_branch .LBB0_5
3234
; CHECK-NEXT: .LBB0_4: ; %loop-memcpy-residual-header.post-loop-memcpy-expansion_crit_edge
3335
; CHECK-NEXT: v_lshlrev_b64 v[6:7], 6, v[2:3]
34-
; CHECK-NEXT: s_cbranch_execnz .LBB0_7
36+
; CHECK-NEXT: s_cbranch_execnz .LBB0_8
3537
; CHECK-NEXT: .LBB0_5: ; %loop-memcpy-residual.preheader
36-
; CHECK-NEXT: v_or_b32_e32 v2, 32, v4
37-
; CHECK-NEXT: v_mov_b32_e32 v3, v5
38+
; CHECK-NEXT: s_add_u32 s4, s16, 32
39+
; CHECK-NEXT: s_addc_u32 s5, s17, 0
40+
; CHECK-NEXT: v_mov_b32_e32 v3, s5
41+
; CHECK-NEXT: v_add_co_u32_e32 v2, vcc, s4, v4
42+
; CHECK-NEXT: v_addc_co_u32_e32 v3, vcc, v3, v5, vcc
3843
; CHECK-NEXT: s_mov_b64 s[4:5], 0
3944
; CHECK-NEXT: ; %bb.6: ; %loop-memcpy-residual
4045
; CHECK-NEXT: s_add_u32 s6, 32, s4
4146
; CHECK-NEXT: s_addc_u32 s7, 0, s5
4247
; CHECK-NEXT: v_mov_b32_e32 v6, s6
4348
; CHECK-NEXT: v_mov_b32_e32 v7, s7
4449
; CHECK-NEXT: flat_load_ubyte v10, v[6:7]
45-
; CHECK-NEXT: v_mov_b32_e32 v9, s5
46-
; CHECK-NEXT: v_add_co_u32_e32 v8, vcc, s4, v2
47-
; CHECK-NEXT: v_mov_b32_e32 v7, v5
48-
; CHECK-NEXT: v_addc_co_u32_e32 v9, vcc, v3, v9, vcc
50+
; CHECK-NEXT: v_mov_b32_e32 v7, s5
51+
; CHECK-NEXT: v_add_co_u32_e32 v6, vcc, s4, v2
52+
; CHECK-NEXT: v_addc_co_u32_e32 v7, vcc, v3, v7, vcc
4953
; CHECK-NEXT: s_add_u32 s4, s4, 1
50-
; CHECK-NEXT: v_mov_b32_e32 v6, v4
5154
; CHECK-NEXT: s_addc_u32 s5, s5, 0
5255
; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
53-
; CHECK-NEXT: flat_store_byte v[8:9], v10
54-
; CHECK-NEXT: .LBB0_7: ; %post-loop-memcpy-expansion
56+
; CHECK-NEXT: flat_store_byte v[6:7], v10
57+
; CHECK-NEXT: ; %bb.7:
58+
; CHECK-NEXT: v_mov_b32_e32 v7, v5
59+
; CHECK-NEXT: v_mov_b32_e32 v6, v4
60+
; CHECK-NEXT: .LBB0_8: ; %post-loop-memcpy-expansion
5561
; CHECK-NEXT: v_and_b32_e32 v2, 15, v0
56-
; CHECK-NEXT: v_mov_b32_e32 v3, 0
5762
; CHECK-NEXT: v_and_b32_e32 v0, -16, v0
63+
; CHECK-NEXT: v_add_co_u32_e32 v4, vcc, v6, v0
64+
; CHECK-NEXT: v_mov_b32_e32 v3, 0
65+
; CHECK-NEXT: v_addc_co_u32_e32 v5, vcc, v7, v1, vcc
5866
; CHECK-NEXT: v_cmp_ne_u64_e64 s[4:5], 0, v[0:1]
5967
; CHECK-NEXT: v_cmp_ne_u64_e64 s[6:7], 0, v[2:3]
60-
; CHECK-NEXT: v_add_co_u32_e32 v6, vcc, v6, v0
61-
; CHECK-NEXT: v_addc_co_u32_e32 v7, vcc, v7, v1, vcc
62-
; CHECK-NEXT: s_branch .LBB0_10
63-
; CHECK-NEXT: .LBB0_8: ; %Flow14
64-
; CHECK-NEXT: ; in Loop: Header=BB0_10 Depth=1
68+
; CHECK-NEXT: v_mov_b32_e32 v6, s17
69+
; CHECK-NEXT: v_add_co_u32_e32 v4, vcc, s16, v4
70+
; CHECK-NEXT: v_addc_co_u32_e32 v5, vcc, v6, v5, vcc
71+
; CHECK-NEXT: s_branch .LBB0_11
72+
; CHECK-NEXT: .LBB0_9: ; %Flow14
73+
; CHECK-NEXT: ; in Loop: Header=BB0_11 Depth=1
6574
; CHECK-NEXT: s_or_b64 exec, exec, s[10:11]
6675
; CHECK-NEXT: s_mov_b64 s[8:9], 0
67-
; CHECK-NEXT: .LBB0_9: ; %Flow16
68-
; CHECK-NEXT: ; in Loop: Header=BB0_10 Depth=1
76+
; CHECK-NEXT: .LBB0_10: ; %Flow16
77+
; CHECK-NEXT: ; in Loop: Header=BB0_11 Depth=1
6978
; CHECK-NEXT: s_andn2_b64 vcc, exec, s[8:9]
70-
; CHECK-NEXT: s_cbranch_vccz .LBB0_18
71-
; CHECK-NEXT: .LBB0_10: ; %while.cond
79+
; CHECK-NEXT: s_cbranch_vccz .LBB0_19
80+
; CHECK-NEXT: .LBB0_11: ; %while.cond
7281
; CHECK-NEXT: ; =>This Loop Header: Depth=1
73-
; CHECK-NEXT: ; Child Loop BB0_12 Depth 2
74-
; CHECK-NEXT: ; Child Loop BB0_16 Depth 2
82+
; CHECK-NEXT: ; Child Loop BB0_13 Depth 2
83+
; CHECK-NEXT: ; Child Loop BB0_17 Depth 2
7584
; CHECK-NEXT: s_and_saveexec_b64 s[8:9], s[4:5]
76-
; CHECK-NEXT: s_cbranch_execz .LBB0_13
77-
; CHECK-NEXT: ; %bb.11: ; %loop-memcpy-expansion2.preheader
78-
; CHECK-NEXT: ; in Loop: Header=BB0_10 Depth=1
85+
; CHECK-NEXT: s_cbranch_execz .LBB0_14
86+
; CHECK-NEXT: ; %bb.12: ; %loop-memcpy-expansion2.preheader
87+
; CHECK-NEXT: ; in Loop: Header=BB0_11 Depth=1
7988
; CHECK-NEXT: s_mov_b64 s[10:11], 0
8089
; CHECK-NEXT: s_mov_b64 s[12:13], 0
81-
; CHECK-NEXT: .LBB0_12: ; %loop-memcpy-expansion2
82-
; CHECK-NEXT: ; Parent Loop BB0_10 Depth=1
90+
; CHECK-NEXT: .LBB0_13: ; %loop-memcpy-expansion2
91+
; CHECK-NEXT: ; Parent Loop BB0_11 Depth=1
8392
; CHECK-NEXT: ; => This Inner Loop Header: Depth=2
84-
; CHECK-NEXT: v_mov_b32_e32 v8, s12
85-
; CHECK-NEXT: v_mov_b32_e32 v9, s13
86-
; CHECK-NEXT: flat_load_dwordx4 v[8:11], v[8:9]
87-
; CHECK-NEXT: v_mov_b32_e32 v13, s13
88-
; CHECK-NEXT: v_add_co_u32_e32 v12, vcc, s12, v4
93+
; CHECK-NEXT: v_mov_b32_e32 v6, s12
94+
; CHECK-NEXT: v_mov_b32_e32 v7, s13
95+
; CHECK-NEXT: flat_load_dwordx4 v[10:13], v[6:7]
96+
; CHECK-NEXT: v_add_co_u32_e32 v6, vcc, s12, v8
8997
; CHECK-NEXT: s_add_u32 s12, s12, 16
90-
; CHECK-NEXT: v_addc_co_u32_e32 v13, vcc, v5, v13, vcc
98+
; CHECK-NEXT: v_addc_co_u32_e32 v7, vcc, v9, v7, vcc
9199
; CHECK-NEXT: s_addc_u32 s13, s13, 0
92100
; CHECK-NEXT: v_cmp_ge_u64_e32 vcc, s[12:13], v[0:1]
93101
; CHECK-NEXT: s_or_b64 s[10:11], vcc, s[10:11]
94102
; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
95-
; CHECK-NEXT: flat_store_dwordx4 v[12:13], v[8:11]
103+
; CHECK-NEXT: flat_store_dwordx4 v[6:7], v[10:13]
96104
; CHECK-NEXT: s_andn2_b64 exec, exec, s[10:11]
97-
; CHECK-NEXT: s_cbranch_execnz .LBB0_12
98-
; CHECK-NEXT: .LBB0_13: ; %Flow15
99-
; CHECK-NEXT: ; in Loop: Header=BB0_10 Depth=1
105+
; CHECK-NEXT: s_cbranch_execnz .LBB0_13
106+
; CHECK-NEXT: .LBB0_14: ; %Flow15
107+
; CHECK-NEXT: ; in Loop: Header=BB0_11 Depth=1
100108
; CHECK-NEXT: s_or_b64 exec, exec, s[8:9]
101109
; CHECK-NEXT: s_mov_b64 s[8:9], -1
102-
; CHECK-NEXT: s_cbranch_execz .LBB0_9
103-
; CHECK-NEXT: ; %bb.14: ; %loop-memcpy-residual-header5
104-
; CHECK-NEXT: ; in Loop: Header=BB0_10 Depth=1
110+
; CHECK-NEXT: s_cbranch_execz .LBB0_10
111+
; CHECK-NEXT: ; %bb.15: ; %loop-memcpy-residual-header5
112+
; CHECK-NEXT: ; in Loop: Header=BB0_11 Depth=1
105113
; CHECK-NEXT: s_and_saveexec_b64 s[8:9], s[6:7]
106114
; CHECK-NEXT: s_xor_b64 s[10:11], exec, s[8:9]
107-
; CHECK-NEXT: s_cbranch_execz .LBB0_8
108-
; CHECK-NEXT: ; %bb.15: ; %loop-memcpy-residual4.preheader
109-
; CHECK-NEXT: ; in Loop: Header=BB0_10 Depth=1
115+
; CHECK-NEXT: s_cbranch_execz .LBB0_9
116+
; CHECK-NEXT: ; %bb.16: ; %loop-memcpy-residual4.preheader
117+
; CHECK-NEXT: ; in Loop: Header=BB0_11 Depth=1
110118
; CHECK-NEXT: s_mov_b64 s[12:13], 0
111119
; CHECK-NEXT: s_mov_b64 s[14:15], 0
112-
; CHECK-NEXT: .LBB0_16: ; %loop-memcpy-residual4
113-
; CHECK-NEXT: ; Parent Loop BB0_10 Depth=1
120+
; CHECK-NEXT: .LBB0_17: ; %loop-memcpy-residual4
121+
; CHECK-NEXT: ; Parent Loop BB0_11 Depth=1
114122
; CHECK-NEXT: ; => This Inner Loop Header: Depth=2
115123
; CHECK-NEXT: v_mov_b32_e32 v10, s15
116-
; CHECK-NEXT: v_add_co_u32_e32 v8, vcc, s14, v0
117-
; CHECK-NEXT: v_addc_co_u32_e32 v9, vcc, v1, v10, vcc
118-
; CHECK-NEXT: flat_load_ubyte v11, v[8:9]
119-
; CHECK-NEXT: v_add_co_u32_e32 v8, vcc, s14, v6
124+
; CHECK-NEXT: v_add_co_u32_e32 v6, vcc, s14, v0
125+
; CHECK-NEXT: v_addc_co_u32_e32 v7, vcc, v1, v10, vcc
126+
; CHECK-NEXT: flat_load_ubyte v11, v[6:7]
127+
; CHECK-NEXT: v_add_co_u32_e32 v6, vcc, s14, v4
120128
; CHECK-NEXT: s_add_u32 s14, s14, 1
121129
; CHECK-NEXT: s_addc_u32 s15, s15, 0
122130
; CHECK-NEXT: v_cmp_ge_u64_e64 s[8:9], s[14:15], v[2:3]
123-
; CHECK-NEXT: v_addc_co_u32_e32 v9, vcc, v7, v10, vcc
131+
; CHECK-NEXT: v_addc_co_u32_e32 v7, vcc, v5, v10, vcc
124132
; CHECK-NEXT: s_or_b64 s[12:13], s[8:9], s[12:13]
125133
; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
126-
; CHECK-NEXT: flat_store_byte v[8:9], v11
134+
; CHECK-NEXT: flat_store_byte v[6:7], v11
127135
; CHECK-NEXT: s_andn2_b64 exec, exec, s[12:13]
128-
; CHECK-NEXT: s_cbranch_execnz .LBB0_16
129-
; CHECK-NEXT: ; %bb.17: ; %Flow
130-
; CHECK-NEXT: ; in Loop: Header=BB0_10 Depth=1
136+
; CHECK-NEXT: s_cbranch_execnz .LBB0_17
137+
; CHECK-NEXT: ; %bb.18: ; %Flow
138+
; CHECK-NEXT: ; in Loop: Header=BB0_11 Depth=1
131139
; CHECK-NEXT: s_or_b64 exec, exec, s[12:13]
132-
; CHECK-NEXT: s_branch .LBB0_8
133-
; CHECK-NEXT: .LBB0_18: ; %DummyReturnBlock
140+
; CHECK-NEXT: s_branch .LBB0_9
141+
; CHECK-NEXT: .LBB0_19: ; %DummyReturnBlock
134142
; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
135143
; CHECK-NEXT: s_setpc_b64 s[30:31]
136144
entry:
137-
%arrayidx = getelementptr [32 x %"struct.__llvm_libc::rpc::Buffer"], ptr null, i64 0, i64 %idxprom
145+
%arrayidx = getelementptr [32 x %"struct.__llvm_libc::rpc::Buffer"], ptr %ptr, i64 0, i64 %idxprom
138146
%spec.select = tail call i64 @llvm.umin.i64(i64 sub (i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) inttoptr (i64 32 to ptr addrspace(4)) to ptr) to i64), i64 ptrtoint (ptr addrspacecast (ptr addrspace(4) null to ptr) to i64)), i64 56)
139147
tail call void @llvm.memcpy.p0.p0.i64(ptr %arrayidx, ptr null, i64 %spec.select, i1 false)
140148
br label %while.cond

llvm/test/Transforms/GVN/constexpr-vector-constainsundef-crash-inseltpoison.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
; https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=24278
66

77
; Make sure we do not crash when dealing with a vector constant expression.
8-
define <4 x ptr> @test(ptr %ptr) {
8+
define <4 x ptr> @test(ptr %ptr) null_pointer_is_valid {
99
; CHECK-LABEL: @test(
1010
; CHECK-NEXT: entry:
1111
; CHECK-NEXT: [[L3:%.*]] = load i64, ptr [[PTR:%.*]], align 4

llvm/test/Transforms/GVN/constexpr-vector-constainsundef-crash.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
; https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=24278
66

77
; Make sure we do not crash when dealing with a vector constant expression.
8-
define <4 x ptr> @test(ptr %ptr) {
8+
define <4 x ptr> @test(ptr %ptr) null_pointer_is_valid {
99
; CHECK-LABEL: @test(
1010
; CHECK-NEXT: entry:
1111
; CHECK-NEXT: [[L3:%.*]] = load i64, ptr [[PTR:%.*]], align 4

llvm/test/Transforms/InstSimplify/ConstProp/cast-vector.ll

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
; "offsetof-like expression" case).
66
; This used to hit an assert due to not supporting vectors in
77
; llvm::ConstantFoldCastInstruction when handling ptrtoint.
8-
define <2 x i16> @test1() {
8+
define <2 x i16> @test1() null_pointer_is_valid {
99
; CHECK-LABEL: @test1(
1010
; CHECK-NEXT: entry:
1111
; CHECK-NEXT: ret <2 x i16> <i16 ptrtoint (ptr getelementptr inbounds ([10 x i32], ptr null, i64 0, i64 5) to i16), i16 ptrtoint (ptr getelementptr inbounds ([10 x i32], ptr null, i64 0, i64 7) to i16)>
@@ -20,7 +20,7 @@ entry:
2020
; "sizeof-like expression" case).
2121
; This used to hit an assert due to not supporting vectors in
2222
; llvm::ConstantFoldCastInstruction when handling ptrtoint.
23-
define <2 x i16> @test2() {
23+
define <2 x i16> @test2() null_pointer_is_valid {
2424
; CHECK-LABEL: @test2(
2525
; CHECK-NEXT: entry:
2626
; CHECK-NEXT: ret <2 x i16> <i16 ptrtoint (ptr getelementptr (i32, ptr null, i64 5) to i16), i16 ptrtoint (ptr getelementptr (i32, ptr null, i64 7) to i16)>

0 commit comments

Comments
 (0)