82 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -fast-isel < %s | FileCheck -check-prefixes=CHECK,FASTISEL %s3; RUN: llc < %s | FileCheck -check-prefixes=CHECK,SDAG %s4 5target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"6target triple = "x86_64-unknown-windows-msvc"7 8define void @issue56055(ptr addrspace(270) %ptr, ptr %out) {9; CHECK-LABEL: issue56055:10; CHECK: # %bb.0:11; CHECK-NEXT: addl $2, %ecx12; CHECK-NEXT: movl %ecx, (%rdx)13; CHECK-NEXT: retq14 %add.ptr = getelementptr inbounds i8, ptr addrspace(270) %ptr, i32 215 store ptr addrspace(270) %add.ptr, ptr %out16 ret void17}18 19define void @issue56055_vector(<2 x ptr addrspace(270)> %ptr, ptr %out) {20; CHECK-LABEL: issue56055_vector:21; CHECK: # %bb.0:22; CHECK-NEXT: movdqa (%rcx), %xmm023; CHECK-NEXT: paddd __xmm@00000000000000000000000200000002(%rip), %xmm024; CHECK-NEXT: movq %xmm0, (%rdx)25; CHECK-NEXT: retq26 %add.ptr = getelementptr inbounds i8, <2 x ptr addrspace(270)> %ptr, <2 x i32> <i32 2, i32 2>27 store <2 x ptr addrspace(270)> %add.ptr, ptr %out28 ret void29}30 31define void @issue56055_small_idx(ptr addrspace(270) %ptr, ptr %out, i16 %idx) {32; CHECK-LABEL: issue56055_small_idx:33; CHECK: # %bb.0:34; CHECK-NEXT: movswl %r8w, %eax35; CHECK-NEXT: addl %ecx, %eax36; CHECK-NEXT: movl %eax, (%rdx)37; CHECK-NEXT: retq38 %add.ptr = getelementptr inbounds i8, ptr addrspace(270) %ptr, i16 %idx39 store ptr addrspace(270) %add.ptr, ptr %out40 ret void41}42 43define void @issue56055_small_idx_vector(<2 x ptr addrspace(270)> %ptr, ptr %out, <2 x i16> %idx) {44; CHECK-LABEL: issue56055_small_idx_vector:45; CHECK: # %bb.0:46; CHECK-NEXT: pshuflw {{.*#+}} xmm0 = mem[0,0,2,1,4,5,6,7]47; CHECK-NEXT: psrad $16, %xmm048; CHECK-NEXT: paddd (%rcx), %xmm049; CHECK-NEXT: movq %xmm0, (%rdx)50; CHECK-NEXT: retq51 %add.ptr = getelementptr inbounds i8, <2 x ptr addrspace(270)> %ptr, <2 x i16> %idx52 store <2 x ptr addrspace(270)> %add.ptr, ptr %out53 ret void54}55 56define void @issue56055_large_idx(ptr addrspace(270) %ptr, ptr %out, i64 %idx) {57; CHECK-LABEL: issue56055_large_idx:58; CHECK: # %bb.0:59; CHECK-NEXT: addl %ecx, %r8d60; CHECK-NEXT: movl %r8d, (%rdx)61; CHECK-NEXT: retq62 %add.ptr = getelementptr inbounds i8, ptr addrspace(270) %ptr, i64 %idx63 store ptr addrspace(270) %add.ptr, ptr %out64 ret void65}66 67define void @issue56055_large_idx_vector(<2 x ptr addrspace(270)> %ptr, ptr %out, <2 x i64> %idx) {68; CHECK-LABEL: issue56055_large_idx_vector:69; CHECK: # %bb.0:70; CHECK-NEXT: pshufd {{.*#+}} xmm0 = mem[0,2,2,3]71; CHECK-NEXT: paddd (%rcx), %xmm072; CHECK-NEXT: movq %xmm0, (%rdx)73; CHECK-NEXT: retq74 %add.ptr = getelementptr inbounds i8, <2 x ptr addrspace(270)> %ptr, <2 x i64> %idx75 store <2 x ptr addrspace(270)> %add.ptr, ptr %out76 ret void77}78 79;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:80; FASTISEL: {{.*}}81; SDAG: {{.*}}82