@@ -331,6 +331,100 @@ define amdgpu_kernel void @asm_constraint_n_n() {
331331 ret void
332332}
333333
334+ define void @test_indirectify_i32_value (i32 %x , i32 %y ) {
335+ ; CHECK-LABEL: name: test_indirectify_i32_value
336+ ; CHECK: bb.1.entry:
337+ ; CHECK-NEXT: liveins: $vgpr0, $vgpr1
338+ ; CHECK-NEXT: {{ $}}
339+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
340+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
341+ ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.0
342+ ; CHECK-NEXT: G_STORE [[COPY]](s32), [[FRAME_INDEX]](p5) :: (store (s32) into %stack.0, addrspace 5)
343+ ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.1
344+ ; CHECK-NEXT: G_STORE [[COPY1]](s32), [[FRAME_INDEX1]](p5) :: (store (s32) into %stack.1, addrspace 5)
345+ ; CHECK-NEXT: INLINEASM &"", 25 /* sideeffect mayload maystore attdialect */, 262158 /* mem:m */, [[FRAME_INDEX]](p5), 262158 /* mem:m */, [[FRAME_INDEX1]](p5)
346+ ; CHECK-NEXT: SI_RETURN
347+ entry:
348+ tail call void asm sideeffect "" , "imr,imr,~{memory}" (i32 %x , i32 %y )
349+ ret void
350+ }
351+
352+ define void @test_indirectify_i32_constant () {
353+ ; CHECK-LABEL: name: test_indirectify_i32_constant
354+ ; CHECK: bb.1.entry:
355+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 42
356+ ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
357+ ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.0
358+ ; CHECK-NEXT: G_STORE [[C]](s32), [[FRAME_INDEX]](p5) :: (store (s32) into %stack.0, addrspace 5)
359+ ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.1
360+ ; CHECK-NEXT: G_STORE [[C1]](s32), [[FRAME_INDEX1]](p5) :: (store (s32) into %stack.1, addrspace 5)
361+ ; CHECK-NEXT: INLINEASM &"", 25 /* sideeffect mayload maystore attdialect */, 262158 /* mem:m */, [[FRAME_INDEX]](p5), 262158 /* mem:m */, [[FRAME_INDEX1]](p5)
362+ ; CHECK-NEXT: SI_RETURN
363+ entry:
364+ tail call void asm sideeffect "" , "imr,imr,~{memory}" (i32 42 , i32 0 )
365+ ret void
366+ }
367+
368+
369+ define void @test_indirectify_i16_value (i16 %val ) {
370+ ; CHECK-LABEL: name: test_indirectify_i16_value
371+ ; CHECK: bb.1.entry:
372+ ; CHECK-NEXT: liveins: $vgpr0
373+ ; CHECK-NEXT: {{ $}}
374+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
375+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
376+ ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.0
377+ ; CHECK-NEXT: G_STORE [[TRUNC]](s16), [[FRAME_INDEX]](p5) :: (store (s16) into %stack.0, addrspace 5)
378+ ; CHECK-NEXT: INLINEASM &"", 25 /* sideeffect mayload maystore attdialect */, 262158 /* mem:m */, [[FRAME_INDEX]](p5)
379+ ; CHECK-NEXT: SI_RETURN
380+ entry:
381+ tail call void asm sideeffect "" , "imr,~{memory}" (i16 %val )
382+ ret void
383+ }
384+
385+ define void @test_indirectify_i16_constant () {
386+ ; CHECK-LABEL: name: test_indirectify_i16_constant
387+ ; CHECK: bb.1.entry:
388+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 42
389+ ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.0
390+ ; CHECK-NEXT: G_STORE [[C]](s16), [[FRAME_INDEX]](p5) :: (store (s16) into %stack.0, addrspace 5)
391+ ; CHECK-NEXT: INLINEASM &"", 25 /* sideeffect mayload maystore attdialect */, 262158 /* mem:m */, [[FRAME_INDEX]](p5)
392+ ; CHECK-NEXT: SI_RETURN
393+ entry:
394+ tail call void asm sideeffect "" , "imr,~{memory}" (i16 42 )
395+ ret void
396+ }
397+
398+ define void @test_indirectify_i64_value (i64 %val ) {
399+ ; CHECK-LABEL: name: test_indirectify_i64_value
400+ ; CHECK: bb.1.entry:
401+ ; CHECK-NEXT: liveins: $vgpr0, $vgpr1
402+ ; CHECK-NEXT: {{ $}}
403+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
404+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
405+ ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)
406+ ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.0
407+ ; CHECK-NEXT: G_STORE [[MV]](s64), [[FRAME_INDEX]](p5) :: (store (s64) into %stack.0, addrspace 5)
408+ ; CHECK-NEXT: INLINEASM &"", 25 /* sideeffect mayload maystore attdialect */, 262158 /* mem:m */, [[FRAME_INDEX]](p5)
409+ ; CHECK-NEXT: SI_RETURN
410+ entry:
411+ tail call void asm sideeffect "" , "imr,~{memory}" (i64 %val )
412+ ret void
413+ }
414+
415+ define void @test_indirectify_i64_constant () {
416+ ; CHECK-LABEL: name: test_indirectify_i64_constant
417+ ; CHECK: bb.1.entry:
418+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 42
419+ ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.0
420+ ; CHECK-NEXT: G_STORE [[C]](s64), [[FRAME_INDEX]](p5) :: (store (s64) into %stack.0, addrspace 5)
421+ ; CHECK-NEXT: INLINEASM &"", 25 /* sideeffect mayload maystore attdialect */, 262158 /* mem:m */, [[FRAME_INDEX]](p5)
422+ ; CHECK-NEXT: SI_RETURN
423+ entry:
424+ tail call void asm sideeffect "" , "imr,~{memory}" (i64 42 )
425+ ret void
426+ }
427+
334428!llvm.module.flags = !{!1 }
335429!0 = !{i32 70 }
336430!1 = !{i32 1 , !"amdhsa_code_object_version" , i32 500 }
0 commit comments