41 lines · plain
1; RUN: llc -mtriple=hexagon < %s | FileCheck %s2 3%struct.RESULTS_S.A = type { i16, i16, i16, [4 x ptr], i32, i32, i32, ptr, %struct.MAT_PARAMS_S.D, i16, i16, i16, i16, i16, %struct.CORE_PORTABLE_S.E }4%struct.list_head_s.B = type { ptr, ptr }5%struct.list_data_s.C = type { i16, i16 }6%struct.MAT_PARAMS_S.D = type { i32, ptr, ptr, ptr }7%struct.CORE_PORTABLE_S.E = type { i8 }8 9; Test that we don't generate a zero extend in this case. Instead we generate10; a single sign extend instead of two zero extends.11 12; CHECK-NOT: zxth13 14; Function Attrs: nounwind15define void @core_bench_list(ptr %res) #0 {16entry:17 %seed3 = getelementptr inbounds %struct.RESULTS_S.A, ptr %res, i32 0, i32 218 %0 = load i16, ptr %seed3, align 219 %cmp364 = icmp sgt i16 %0, 020 br i1 %cmp364, label %for.body, label %while.body19.i16021 22for.body:23 %i.0370 = phi i16 [ %inc50, %if.then ], [ 0, %entry ]24 br i1 undef, label %if.then, label %while.body.i27325 26while.body.i273:27 %tobool.i272 = icmp eq ptr undef, null28 br i1 %tobool.i272, label %if.then, label %while.body.i27329 30if.then:31 %inc50 = add i16 %i.0370, 132 %exitcond = icmp eq i16 %inc50, %033 br i1 %exitcond, label %while.body19.i160, label %for.body34 35while.body19.i160:36 br label %while.body19.i16037}38 39attributes #0 = { nounwind "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }40 41