117 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=x86_64-linux-gnu -mcpu=skx -global-isel -verify-machineinstrs < %s -o - | FileCheck %s --check-prefix=SKX3; RUN: llc -mtriple=x86_64-linux-gnu -mcpu=skx -regbankselect-greedy -global-isel -verify-machineinstrs < %s -o - | FileCheck %s --check-prefix=SKX4 5define <4 x i32> @test_load_v4i32_noalign(ptr %p1) {6; SKX-LABEL: test_load_v4i32_noalign:7; SKX: # %bb.0:8; SKX-NEXT: vmovups (%rdi), %xmm09; SKX-NEXT: retq10 %r = load <4 x i32>, ptr %p1, align 111 ret <4 x i32> %r12}13 14define <4 x i32> @test_load_v4i32_align(ptr %p1) {15; SKX-LABEL: test_load_v4i32_align:16; SKX: # %bb.0:17; SKX-NEXT: vmovaps (%rdi), %xmm018; SKX-NEXT: retq19 %r = load <4 x i32>, ptr %p1, align 1620 ret <4 x i32> %r21}22 23define <8 x i32> @test_load_v8i32_noalign(ptr %p1) {24; SKX-LABEL: test_load_v8i32_noalign:25; SKX: # %bb.0:26; SKX-NEXT: vmovups (%rdi), %ymm027; SKX-NEXT: retq28 %r = load <8 x i32>, ptr %p1, align 129 ret <8 x i32> %r30}31 32define <8 x i32> @test_load_v8i32_align(ptr %p1) {33; SKX-LABEL: test_load_v8i32_align:34; SKX: # %bb.0:35; SKX-NEXT: vmovaps (%rdi), %ymm036; SKX-NEXT: retq37 %r = load <8 x i32>, ptr %p1, align 3238 ret <8 x i32> %r39}40 41define <16 x i32> @test_load_v16i32_noalign(ptr %p1) {42; SKX-LABEL: test_load_v16i32_noalign:43; SKX: # %bb.0:44; SKX-NEXT: vmovups (%rdi), %zmm045; SKX-NEXT: retq46 %r = load <16 x i32>, ptr %p1, align 147 ret <16 x i32> %r48}49 50define <16 x i32> @test_load_v16i32_align(ptr %p1) {51; SKX-LABEL: test_load_v16i32_align:52; SKX: # %bb.0:53; SKX-NEXT: vmovups (%rdi), %zmm054; SKX-NEXT: retq55 %r = load <16 x i32>, ptr %p1, align 3256 ret <16 x i32> %r57}58 59define void @test_store_v4i32_noalign(<4 x i32> %val, ptr %p1) {60; SKX-LABEL: test_store_v4i32_noalign:61; SKX: # %bb.0:62; SKX-NEXT: vmovups %xmm0, (%rdi)63; SKX-NEXT: retq64 store <4 x i32> %val, ptr %p1, align 165 ret void66}67 68define void @test_store_v4i32_align(<4 x i32> %val, ptr %p1) {69; SKX-LABEL: test_store_v4i32_align:70; SKX: # %bb.0:71; SKX-NEXT: vmovaps %xmm0, (%rdi)72; SKX-NEXT: retq73 store <4 x i32> %val, ptr %p1, align 1674 ret void75}76 77define void @test_store_v8i32_noalign(<8 x i32> %val, ptr %p1) {78; SKX-LABEL: test_store_v8i32_noalign:79; SKX: # %bb.0:80; SKX-NEXT: vmovups %ymm0, (%rdi)81; SKX-NEXT: vzeroupper82; SKX-NEXT: retq83 store <8 x i32> %val, ptr %p1, align 184 ret void85}86 87define void @test_store_v8i32_align(<8 x i32> %val, ptr %p1) {88; SKX-LABEL: test_store_v8i32_align:89; SKX: # %bb.0:90; SKX-NEXT: vmovaps %ymm0, (%rdi)91; SKX-NEXT: vzeroupper92; SKX-NEXT: retq93 store <8 x i32> %val, ptr %p1, align 3294 ret void95}96 97define void @test_store_v16i32_noalign(<16 x i32> %val, ptr %p1) {98; SKX-LABEL: test_store_v16i32_noalign:99; SKX: # %bb.0:100; SKX-NEXT: vmovups %zmm0, (%rdi)101; SKX-NEXT: vzeroupper102; SKX-NEXT: retq103 store <16 x i32> %val, ptr %p1, align 1104 ret void105}106 107define void @test_store_v16i32_align(<16 x i32> %val, ptr %p1) {108; SKX-LABEL: test_store_v16i32_align:109; SKX: # %bb.0:110; SKX-NEXT: vmovaps %zmm0, (%rdi)111; SKX-NEXT: vzeroupper112; SKX-NEXT: retq113 store <16 x i32> %val, ptr %p1, align 64114 ret void115}116 117