1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt < %s -passes=instcombine -S | FileCheck %s 3 4target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" 5target triple = "x86_64-unknown-linux-gnu" 6 7@G1 = global i8 zeroinitializer 8 9define <2 x i1> @test(<2 x ptr> %a, <2 x ptr> %b) { 10; CHECK-LABEL: @test( 11; CHECK-NEXT: [[C:%.*]] = icmp eq <2 x ptr> [[A:%.*]], [[B:%.*]] 12; CHECK-NEXT: ret <2 x i1> [[C]] 13; 14 %c = icmp eq <2 x ptr> %a, %b 15 ret <2 x i1> %c 16} 17 18define <2 x i1> @test2(<2 x ptr> %a) { 19; CHECK-LABEL: @test2( 20; CHECK-NEXT: ret <2 x i1> zeroinitializer 21; 22 %c = inttoptr <2 x i32> <i32 1, i32 2> to <2 x ptr> 23 %d = icmp ult <2 x ptr> %c, zeroinitializer 24 ret <2 x i1> %d 25} 26 27define <2 x i1> @test3(<2 x ptr> %a) { 28; CHECK-LABEL: @test3( 29; CHECK-NEXT: ret <2 x i1> zeroinitializer 30; 31 %g = getelementptr i8, <2 x ptr> %a, <2 x i32> <i32 1, i32 0> 32 %B = icmp ult <2 x ptr> %g, zeroinitializer 33 ret <2 x i1> %B 34} 35 36define <1 x i1> @test4(<1 x ptr> %a) { 37; CHECK-LABEL: @test4( 38; CHECK-NEXT: ret <1 x i1> zeroinitializer 39; 40 %g = getelementptr i8, <1 x ptr> %a, <1 x i32> <i32 1> 41 %B = icmp ult <1 x ptr> %g, zeroinitializer 42 ret <1 x i1> %B 43} 44 45define <2 x i1> @test5(<2 x ptr> %a) { 46; CHECK-LABEL: @test5( 47; CHECK-NEXT: ret <2 x i1> zeroinitializer 48; 49 %w = getelementptr i8, <2 x ptr> %a, <2 x i32> zeroinitializer 50 %e = getelementptr i8, <2 x ptr> %w, <2 x i32> <i32 5, i32 9> 51 %g = getelementptr i8, <2 x ptr> %e, <2 x i32> <i32 1, i32 0> 52 %B = icmp ult <2 x ptr> %g, zeroinitializer 53 ret <2 x i1> %B 54} 55 56define <2 x ptr> @test7(<2 x ptr> %a) { 57; CHECK-LABEL: @test7( 58; CHECK-NEXT: [[W:%.*]] = getelementptr { i32, i32 }, <2 x ptr> [[A:%.*]], <2 x i64> <i64 5, i64 9>, <2 x i32> zeroinitializer 59; CHECK-NEXT: ret <2 x ptr> [[W]] 60; 61 %w = getelementptr {i32, i32}, <2 x ptr> %a, <2 x i32> <i32 5, i32 9>, <2 x i32> zeroinitializer 62 ret <2 x ptr> %w 63} 64 65define <vscale x 2 x i1> @test8() { 66; CHECK-LABEL: @test8( 67; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 68; 69 %ins = insertelement <vscale x 2 x i32> undef, i32 1, i32 0 70 %b = shufflevector <vscale x 2 x i32> %ins, <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer 71 %c = inttoptr <vscale x 2 x i32> %b to <vscale x 2 x ptr> 72 %d = icmp ult <vscale x 2 x ptr> %c, zeroinitializer 73 ret <vscale x 2 x i1> %d 74} 75