https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117547

--- Comment #6 from H.J. Lu <hjl.tools at gmail dot com> ---
We have

[hjl@gnu-tgl-3 pr117547]$ cat x.c
#include <x86intrin.h>

__mmask64
foo (__mmask64 d)
{
  d = __builtin_ia32_kshiftridi (d, 0xff);
  return d;
}
[hjl@gnu-tgl-3 pr117547]$ make
/export/build/gnu/tools-build/gcc-gitlab-test-debug/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/tools-build/gcc-gitlab-test-debug/build-x86_64-linux/gcc/
-O2 -mavx512bw -Wall -S x.c
x.c: In function ‘foo’:
x.c:6:7: error: the last argument must be an 8-bit immediate
    6 |   d = __builtin_ia32_kshiftridi (d, 0xff);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:31: x.s] Error 1
[hjl@gnu-tgl-3 pr117547]$ 

(gdb) bt
#0  trunc_int_for_mode (x=..., mode=E_QImode)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/explow.cc:85
#1  0x00000000007d3521 in gen_int_mode (c=..., mode=E_QImode)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/emit-rtl.cc:546
#2  0x00000000007d381e in immed_wide_int_const_1 (v=..., mode=E_QImode)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/emit-rtl.cc:666
#3  0x00000000007d391f in immed_wide_int_const (c=..., mode=E_QImode)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/emit-rtl.cc:748
#4  0x00000000008484d3 in expand_expr_real_1 (exp=0x7fffe9824030, target=0x0, 
    tmode=E_VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0, 
    inner_reference_p=false)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/expr.cc:11619
#5  0x000000000083ec73 in expand_expr_real (exp=0x7fffe9824030, target=0x0, 
    tmode=E_VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0, 
    inner_reference_p=false)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/expr.cc:9538
#6  0x0000000000664eca in expand_normal (exp=0x7fffe9824030)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/expr.h:329
#7  0x00000000014d4ec9 in ix86_expand_args_builtin (
    d=0x3adf3f0 <bdesc_args+44688>, exp=0x7fffe46e7300, target=0x7fffe4c14510)
    at
/export/gnu/import/git/gitlab/x86-gcc-test/gcc/config/i386/i386-expand.cc:12151
#8  0x00000000014e2f78 in ix86_expand_builtin (exp=0x7fffe46e7300, 
--Type <RET> for more, q to quit, c to continue without paging--
    target=0x7fffe4c14348, subtarget=0x0, mode=E_DImode, ignore=0)
    at
/export/gnu/import/git/gitlab/x86-gcc-test/gcc/config/i386/i386-expand.cc:15936
#9  0x000000000065157c in expand_builtin (exp=0x7fffe46e7300, 
    target=0x7fffe4c14348, subtarget=0x0, mode=E_DImode, ignore=0)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/builtins.cc:7834
#10 0x000000000084cea7 in expand_expr_real_1 (exp=0x7fffe46e7300, 
    target=0x7fffe4c14348, tmode=E_DImode, modifier=EXPAND_NORMAL, 
    alt_rtl=0x7fffffffc6b8, inner_reference_p=false)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/expr.cc:12499
#11 0x000000000083ec73 in expand_expr_real (exp=0x7fffe46e7300, 
    target=0x7fffe4c14348, tmode=E_DImode, modifier=EXPAND_NORMAL, 
    alt_rtl=0x7fffffffc6b8, inner_reference_p=false)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/expr.cc:9538
#12 0x00000000008338aa in store_expr (exp=0x7fffe46e7300, 
    target=0x7fffe4c14348, call_param_p=0, nontemporal=false, reverse=false)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/expr.cc:6771
#13 0x0000000000831dee in expand_assignment (to=0x7fffe46a3480, 
    from=0x7fffe46e7300, nontemporal=false)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/expr.cc:6492
#14 0x0000000000694571 in expand_call_stmt (stmt=0x7fffe4c3d260)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/cfgexpand.cc:3142
#15 0x000000000069804e in expand_gimple_stmt_1 (stmt=0x7fffe4c3d260)
--Type <RET> for more, q to quit, c to continue without paging--
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/cfgexpand.cc:4217
#16 0x000000000069861c in expand_gimple_stmt (stmt=0x7fffe4c3d260)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/cfgexpand.cc:4364
#17 0x0000000000698707 in expand_gimple_tailcall (bb=0x7fffe4631de0, 
    stmt=0x7fffe4c3d260, can_fallthru=0x7fffffffd00f)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/cfgexpand.cc:4410
#18 0x00000000006a0999 in expand_gimple_basic_block (bb=0x7fffe4631de0, 
    disable_tail_calls=false)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/cfgexpand.cc:6401
#19 0x00000000006a2f8f in (anonymous namespace)::pass_expand::execute (
    this=0x4702050, fun=0x7fffe46dbb60)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/cfgexpand.cc:7176
#20 0x0000000000c739f2 in execute_one_pass (pass=0x4702050)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/passes.cc:2659
#21 0x0000000000c73da5 in execute_pass_list_1 (pass=0x4702050)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/passes.cc:2768
#22 0x0000000000c73e2c in execute_pass_list (fn=0x7fffe46dbb60, pass=0x46fd5e0)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/passes.cc:2779
#23 0x00000000007003ca in cgraph_node::expand (this=0x7fffe46e5220)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/cgraphunit.cc:1859
#24 0x0000000000700be0 in expand_all_functions ()
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/cgraphunit.cc:2042
#25 0x00000000007016e4 in symbol_table::compile (this=0x7fffe9806000)
--Type <RET> for more, q to quit, c to continue without paging--
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/cgraphunit.cc:2418
#26 0x0000000000701b61 in symbol_table::finalize_compilation_unit (
    this=0x7fffe9806000)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/cgraphunit.cc:2607
#27 0x0000000000df4a74 in compile_file ()
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/toplev.cc:478
#28 0x0000000000df7db3 in do_compile ()
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/toplev.cc:2207
#29 0x0000000000df8206 in toplev::main (this=0x7fffffffd67a, argc=21, 
    argv=0x7fffffffd7b8)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/toplev.cc:2370
#30 0x0000000002c12160 in main (argc=21, argv=0x7fffffffd7b8)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/main.cc:39
(gdb) f 4
#4  0x00000000008484d3 in expand_expr_real_1 (exp=0x7fffe9824030, target=0x0, 
    tmode=E_VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0, 
    inner_reference_p=false)
    at /export/gnu/import/git/gitlab/x86-gcc-test/gcc/expr.cc:11619
11619             (wi::to_wide (exp, GET_MODE_PRECISION (int_mode)), int_mode);
(gdb) call debug_tree (exp)
 <integer_cst 0x7fffe9824030 type <integer_type 0x7fffe9822348 unsigned char>
constant 255>
(gdb)

Reply via email to