[PATCH] D97360: [TTI] Consider select form of and/or i1 as having arithmetic cost

Sanjay Patel via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 1 08:03:10 PST 2021


spatel added a comment.

In D97360#2594268 <https://reviews.llvm.org/D97360#2594268>, @aqjune wrote:

> Yes, vectors are expected to have the same cost. I'll update tests for them.

Thanks - IIUC, we're also going to need to some codegen changes to avoid regressions. For example (the icmps are to avoid diffs due to lack of signext/zeroext specifiers on parameters with vector type):

  define <4 x i1> @b(<4 x i32> %x, <4 x i32> %y) {
    %c1 = icmp eq <4 x i32> %x, <i32 42, i32 42, i32 42, i32 42>
    %c2 = icmp sgt <4 x i32> %y, <i32 42, i32 42, i32 42, i32 42>
    %s = select <4 x i1> %c1, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x i1> %c2
    ret <4 x i1> %s
  }
  define <4 x i1> @b2(<4 x i32> %x, <4 x i32> %y) {
    %c1 = icmp eq <4 x i32> %x, <i32 42, i32 42, i32 42, i32 42>
    %c2 = icmp sgt <4 x i32> %y, <i32 42, i32 42, i32 42, i32 42>
    %s = or <4 x i1> %c1, %c2
    ret <4 x i1> %s
  }



  $ llc -o - logical.ll -mattr=avx -mtriple=x86_64--
  _b:                                     ## @b
  	vmovdqa	LCPI2_0(%rip), %xmm2            ## xmm2 = [42,42,42,42]
  	vpcmpeqd	%xmm2, %xmm0, %xmm0
  	vpcmpgtd	%xmm2, %xmm1, %xmm1
  	vblendvps	%xmm0, LCPI2_1(%rip), %xmm1, %xmm0
  	retq
  _b2:                                    ## @b2
  	vmovdqa	LCPI3_0(%rip), %xmm2            ## xmm2 = [42,42,42,42]
  	vpcmpeqd	%xmm2, %xmm0, %xmm0
  	vpcmpgtd	%xmm2, %xmm1, %xmm1
  	vpor	%xmm1, %xmm0, %xmm0
  	retq


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D97360/new/

https://reviews.llvm.org/D97360



More information about the llvm-commits mailing list