Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
test/CodeGen/X86/avx512vl-vbroadcast.ll
; NOTE: Assertions have been autogenerated by update_llc_test_checks.py | ; NOTE: Assertions have been autogenerated by update_llc_test_checks.py | ||||
; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+avx512f -mattr=+avx512vl| FileCheck %s | ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+avx512f -mattr=+avx512vl| FileCheck %s | ||||
declare void @func_f32(float) | declare void @func_f32(float) | ||||
define <8 x float> @_256_broadcast_ss_spill(float %x) { | define <8 x float> @_256_broadcast_ss_spill(float %x) { | ||||
; CHECK-LABEL: _256_broadcast_ss_spill: | ; CHECK-LABEL: _256_broadcast_ss_spill: | ||||
; CHECK: # BB#0: | ; CHECK: # BB#0: | ||||
; CHECK-NEXT: subq $24, %rsp | ; CHECK-NEXT: subq $24, %rsp | ||||
; CHECK-NEXT: .Lcfi0: | ; CHECK-NEXT: .Lcfi0: | ||||
; CHECK-NEXT: .cfi_def_cfa_offset 32 | ; CHECK-NEXT: .cfi_def_cfa_offset 32 | ||||
; CHECK-NEXT: vaddss %xmm0, %xmm0, %xmm0 | ; CHECK-NEXT: vaddss %xmm0, %xmm0, %xmm0 | ||||
; CHECK-NEXT: vmovaps %xmm0, (%rsp) # 16-byte Spill | ; CHECK-NEXT: vmovaps %xmm0, (%rsp) # 16-byte Spill | ||||
; CHECK-NEXT: callq func_f32 | ; CHECK-NEXT: callq func_f32 | ||||
; CHECK-NEXT: vbroadcastss (%rsp), %ymm0 # 16-byte Folded Reload | ; CHECK-NEXT: vbroadcastss (%rsp), %ymm0 # 16-byte Folded Reload | ||||
; CHECK-NEXT: addq $24, %rsp | ; CHECK-NEXT: addq $24, %rsp | ||||
; CHECK-NEXT: .Lcfi1: | |||||
; CHECK-NEXT: .cfi_def_cfa_offset 8 | |||||
; CHECK-NEXT: retq | ; CHECK-NEXT: retq | ||||
%a = fadd float %x, %x | %a = fadd float %x, %x | ||||
call void @func_f32(float %a) | call void @func_f32(float %a) | ||||
%b = insertelement <8 x float> undef, float %a, i32 0 | %b = insertelement <8 x float> undef, float %a, i32 0 | ||||
%c = shufflevector <8 x float> %b, <8 x float> undef, <8 x i32> zeroinitializer | %c = shufflevector <8 x float> %b, <8 x float> undef, <8 x i32> zeroinitializer | ||||
ret <8 x float> %c | ret <8 x float> %c | ||||
} | } | ||||
define <4 x float> @_128_broadcast_ss_spill(float %x) { | define <4 x float> @_128_broadcast_ss_spill(float %x) { | ||||
; CHECK-LABEL: _128_broadcast_ss_spill: | ; CHECK-LABEL: _128_broadcast_ss_spill: | ||||
; CHECK: # BB#0: | ; CHECK: # BB#0: | ||||
; CHECK-NEXT: subq $24, %rsp | ; CHECK-NEXT: subq $24, %rsp | ||||
; CHECK-NEXT: .Lcfi1: | ; CHECK-NEXT: .Lcfi2: | ||||
; CHECK-NEXT: .cfi_def_cfa_offset 32 | ; CHECK-NEXT: .cfi_def_cfa_offset 32 | ||||
; CHECK-NEXT: vaddss %xmm0, %xmm0, %xmm0 | ; CHECK-NEXT: vaddss %xmm0, %xmm0, %xmm0 | ||||
; CHECK-NEXT: vmovaps %xmm0, (%rsp) # 16-byte Spill | ; CHECK-NEXT: vmovaps %xmm0, (%rsp) # 16-byte Spill | ||||
; CHECK-NEXT: callq func_f32 | ; CHECK-NEXT: callq func_f32 | ||||
; CHECK-NEXT: vbroadcastss (%rsp), %xmm0 # 16-byte Folded Reload | ; CHECK-NEXT: vbroadcastss (%rsp), %xmm0 # 16-byte Folded Reload | ||||
; CHECK-NEXT: addq $24, %rsp | ; CHECK-NEXT: addq $24, %rsp | ||||
; CHECK-NEXT: .Lcfi3: | |||||
; CHECK-NEXT: .cfi_def_cfa_offset 8 | |||||
; CHECK-NEXT: retq | ; CHECK-NEXT: retq | ||||
%a = fadd float %x, %x | %a = fadd float %x, %x | ||||
call void @func_f32(float %a) | call void @func_f32(float %a) | ||||
%b = insertelement <4 x float> undef, float %a, i32 0 | %b = insertelement <4 x float> undef, float %a, i32 0 | ||||
%c = shufflevector <4 x float> %b, <4 x float> undef, <4 x i32> zeroinitializer | %c = shufflevector <4 x float> %b, <4 x float> undef, <4 x i32> zeroinitializer | ||||
ret <4 x float> %c | ret <4 x float> %c | ||||
} | } | ||||
declare void @func_f64(double) | declare void @func_f64(double) | ||||
define <4 x double> @_256_broadcast_sd_spill(double %x) { | define <4 x double> @_256_broadcast_sd_spill(double %x) { | ||||
; CHECK-LABEL: _256_broadcast_sd_spill: | ; CHECK-LABEL: _256_broadcast_sd_spill: | ||||
; CHECK: # BB#0: | ; CHECK: # BB#0: | ||||
; CHECK-NEXT: subq $24, %rsp | ; CHECK-NEXT: subq $24, %rsp | ||||
; CHECK-NEXT: .Lcfi2: | ; CHECK-NEXT: .Lcfi4: | ||||
; CHECK-NEXT: .cfi_def_cfa_offset 32 | ; CHECK-NEXT: .cfi_def_cfa_offset 32 | ||||
; CHECK-NEXT: vaddsd %xmm0, %xmm0, %xmm0 | ; CHECK-NEXT: vaddsd %xmm0, %xmm0, %xmm0 | ||||
; CHECK-NEXT: vmovapd %xmm0, (%rsp) # 16-byte Spill | ; CHECK-NEXT: vmovapd %xmm0, (%rsp) # 16-byte Spill | ||||
; CHECK-NEXT: callq func_f64 | ; CHECK-NEXT: callq func_f64 | ||||
; CHECK-NEXT: vbroadcastsd (%rsp), %ymm0 # 16-byte Folded Reload | ; CHECK-NEXT: vbroadcastsd (%rsp), %ymm0 # 16-byte Folded Reload | ||||
; CHECK-NEXT: addq $24, %rsp | ; CHECK-NEXT: addq $24, %rsp | ||||
; CHECK-NEXT: .Lcfi5: | |||||
; CHECK-NEXT: .cfi_def_cfa_offset 8 | |||||
; CHECK-NEXT: retq | ; CHECK-NEXT: retq | ||||
%a = fadd double %x, %x | %a = fadd double %x, %x | ||||
call void @func_f64(double %a) | call void @func_f64(double %a) | ||||
%b = insertelement <4 x double> undef, double %a, i32 0 | %b = insertelement <4 x double> undef, double %a, i32 0 | ||||
%c = shufflevector <4 x double> %b, <4 x double> undef, <4 x i32> zeroinitializer | %c = shufflevector <4 x double> %b, <4 x double> undef, <4 x i32> zeroinitializer | ||||
ret <4 x double> %c | ret <4 x double> %c | ||||
} | } | ||||
▲ Show 20 Lines • Show All 113 Lines • Show Last 20 Lines |